From d0f5a67edee55850ba0c82cca1c1dc884d70160e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 16 Mar 2015 20:49:13 +0000 Subject: sesamanuel (16mar15) git-svn-id: svn://tug.org/texlive/trunk@36538 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/sesamanuel/Lisez.moi | 49 + Master/texmf-dist/doc/latex/sesamanuel/logotex.eps | 86 + Master/texmf-dist/doc/latex/sesamanuel/read.me | 59 + .../texmf-dist/doc/latex/sesamanuel/sesamanuel.pdf | Bin 0 -> 407663 bytes .../doc/latex/sesamanuel/sesamath-doc-fr.pdf | Bin 0 -> 469770 bytes .../doc/latex/sesamanuel/sesamath-doc-fr.tex | 4533 +++++++ Master/texmf-dist/doc/latex/sesamanuel/tiger.eps | 2746 +++++ .../source/latex/sesamanuel/sesamanuel.dtx | 11947 +++++++++++++++++++ .../source/latex/sesamanuel/sesamanuel.ins | 41 + .../texmf-dist/tex/latex/sesamanuel/sesamanuel.cls | 6204 ++++++++++ .../texmf-dist/tex/latex/sesamanuel/sesamanuel.sty | 1198 ++ .../tex/latex/sesamanuel/sesamanuelTIKZ.sty | 135 + Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc | 1 + Master/tlpkg/tlpsrc/sesamanuel.tlpsrc | 0 15 files changed, 27000 insertions(+), 1 deletion(-) create mode 100644 Master/texmf-dist/doc/latex/sesamanuel/Lisez.moi create mode 100644 Master/texmf-dist/doc/latex/sesamanuel/logotex.eps create mode 100644 Master/texmf-dist/doc/latex/sesamanuel/read.me create mode 100644 Master/texmf-dist/doc/latex/sesamanuel/sesamanuel.pdf create mode 100644 Master/texmf-dist/doc/latex/sesamanuel/sesamath-doc-fr.pdf create mode 100644 Master/texmf-dist/doc/latex/sesamanuel/sesamath-doc-fr.tex create mode 100644 Master/texmf-dist/doc/latex/sesamanuel/tiger.eps create mode 100644 Master/texmf-dist/source/latex/sesamanuel/sesamanuel.dtx create mode 100644 Master/texmf-dist/source/latex/sesamanuel/sesamanuel.ins create mode 100644 Master/texmf-dist/tex/latex/sesamanuel/sesamanuel.cls create mode 100644 Master/texmf-dist/tex/latex/sesamanuel/sesamanuel.sty create mode 100644 Master/texmf-dist/tex/latex/sesamanuel/sesamanuelTIKZ.sty create mode 100644 Master/tlpkg/tlpsrc/sesamanuel.tlpsrc (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/sesamanuel/Lisez.moi b/Master/texmf-dist/doc/latex/sesamanuel/Lisez.moi new file mode 100644 index 00000000000..885fbc74adf --- /dev/null +++ b/Master/texmf-dist/doc/latex/sesamanuel/Lisez.moi @@ -0,0 +1,49 @@ +Classe sesamanuel, extension sesamanuel + +Copyright 2014-2015 Association Sesamath + +écrit par : Jean-Côme Charpentier, + Sébastien Mengin, + Sandrine Baglieri + + +LICENCE +------- +Publication sous la licence LaTeX Project Public License version 1.3 +ou ultérieure + +CONTENU +------- +sesamanuel.dtx (source de la classe et des extensions) +sesamanuel.ins (fichier d'installation) +sesamanuel.cls (classe) +sesamanuel.sty (extension) +sesamanuelTIKZ.sty (extension) +sesmanuel.pdf (documentation du code) +sesamath-doc-fr.tex (source du manuel de l'utilisateur) +sesamath-doc-fr.pdf (manuel de l'utilisateur) +tiger.eps (fichier graphique utilisé dans la documentation) +logotex.eps (fichier graphique utilisé dans la documentation) + +DESCRIPTION +----------- +L'association Sesamath a pour but de mettre à disposition de +tous, gratuitement des ressources pédagogiques libres et des outils +professionnels libres utilisés pour l'enseignement des mathématiques +via Internet. + +La classe sesamanuel permet de composer les manuels de l'association +Sesamath développés avec LaTeX. + +L'extension sesamanuel permet d'utiliser certaines fonctionnalités de +la classe sesamanuel tout en utilisant une autre classe (beamer par +exemple). + +Il n'est pas prévu de version anglophone de la classe, de l'extension +et de leur documentation. + +NÉCESSITÉ +--------- +On ne peut pas compiler avec pdflatex à cause de l'utilisation de +PSTricks. Il faut utiliser une chaîne comme latex->dvips->ps2pdf ou +bien utiliser xelatex. diff --git a/Master/texmf-dist/doc/latex/sesamanuel/logotex.eps b/Master/texmf-dist/doc/latex/sesamanuel/logotex.eps new file mode 100644 index 00000000000..a29a5e15c78 --- /dev/null +++ b/Master/texmf-dist/doc/latex/sesamanuel/logotex.eps @@ -0,0 +1,86 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: GIMP PostScript file plugin V 1,17 by Peter Kirchgessner +%%Title: logotex.eps +%%CreationDate: Mon Nov 24 18:45:22 2014 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 14 14 31 31 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +10 dict begin +%%EndProlog +%%Page: 1 1 +% Translate for offset +14.173228346456694 14.173228346456694 translate +% Translate to begin of first scanline +0 15.987401574803151 translate +15.987401574803151 -15.987401574803151 scale +% Image geometry +16 16 8 +% Transformation matrix +[ 16 0 0 16 0 0 ] +% Strings to hold RGB-samples per scanline +/rstr 16 string def +/gstr 16 string def +/bstr 16 string def +{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} +true 3 +%%BeginData: 1093 ASCII Bytes +colorimage +nW/2~> +nW/2~> +nW/2~> +&!-b+^7/kI=\_@G0-hD7O+7~> +&!-b@e@_9;O,/@6FDPLfO+7~> +&!-beq= +&!-b]naPl.jl>:Tg=XdPO+7~> +&!-bap@[tEmHWotj5J_lO+7~> +!K[9[rO+7~> +!0@$W#laf#rVHBSs,V[~> +!0@$W#lX\tqY9jJs,V[~> +!0@'X$2sbsq"OISir>'i~> +&!-baq""C\q=sOJo'b]?O+7~> +&!-bcqtC!cq=sRNoC1uDO+7~> +&!-bhrVZWlq=sXSoC;5JO+7~> +"cr\2Cn9,Urs%stF4tg;O+7~> +&!-abQaboQrr;MISDfk8O+7~> +&!-bCe_]cpqtfp2eEb3UO+7~> +&!-a<8bL5n\>ST(*.c'.O+7~> +&!-abHM,k!c+r_kA#@BJO+7~> +&!-bD`:W9Qki2-o_Ud$4O+7~> +&!-a=7K;BaSYjd6AfB2!O+7~> +&!-afHN386[_:>mP?clBO+7~> +&!-bI`;K;BfA,EZd(SN?O+7~> +&!-a64oadh;oJ +&!-abG5Uf?L!]D!bCsj6O+7~> +&!-bF_tj#Ca5QIAgs!G2O+7~> +&!-b#T]Y8XPJFc/h9M,^O+7~> +&!-b4[HQjhY0G2(iRt72O+7~> +&!-bKdHg;AdG +&!-bbq"<6SW1UHpmdK`HO+7~> +&!-b`p%.(,]t22WmI'HCO+7~> +&!-b]naPnkg"kBPmHa';O+7~> +!K[9[o`+@^kNVL&rMT^WJ,~> +!K[9[oEFaPkj%X'rMT^WJ,~> +!K[9[oEFgOlKdm)rMT^WJ,~> +!K[9[o`4^apBBo^s8S/[J,~> +!K[9Zp&Fakp@mpPs8S/[J,~> +!K[9Zp&=Xhp["jYs,[21~> +!K[9Wp]gQ_W;hqYs*t~> +!K[9Wp]gQ_W;hqYs*t~> +!K[9Wp]gQ_W;hqYs*t~> +!0?pT!r]'Yrr7K~> +!0?pT!r]'Yrr7K~> +!0?pT!r]'Yrr7K~> +ooK(OJ,~> +ooK(OJ,~> +ooK(OJ,~> +%%EndData +showpage +%%Trailer +end +%%EOF diff --git a/Master/texmf-dist/doc/latex/sesamanuel/read.me b/Master/texmf-dist/doc/latex/sesamanuel/read.me new file mode 100644 index 00000000000..e05b74b42f8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/sesamanuel/read.me @@ -0,0 +1,59 @@ +sesamanuel class, sesamanuel package and sesamanuelTIKZ package + +Copyright 2014-2015 Sesamath Society + +Written by Jean-Côme Charpentier, + Sébastien Mengin, + Sandrine Baglieri + + + +LICENCE +------- + +Publication under LaTeX Project Public License version 1.3 or newers + + + +CONTENTS +------- + +sesamanuel.dtx (source of the class and packages) +sesamanuel.ins (setup file) +sesamanuel.cls (class) +sesamanuel.sty (package) +sesamanuelTIKZ.sty (package) +sesamanuel.pdf (documentation of the code) +sesamath-doc-fr.tex (user's manual sources) +sesamath-doc-fr.pdf (user's manual) +tiger.eps (graphic file used in user's manual) +logotex.eps (graphic file used in user's manual) + + + +DESCRIPTION +----------- +Sesamath Society's goal is to develop and freely diffuse tough the +Internet pedagogical materials and professional tools for teaching +Mathematics. + +sesamanuel class has been written to compose a student's classroom +book with LaTeX. + +The sesamanuel package allows to use some special commands of the +sesamanuel class by using an other class as such as beamer. + +The sesamanualTIKZ package is needed to compile parts of the +sesamath's book that content TIKZ pictures. + + +No transaltion of the class, the packages and the user's manual have +been scheduled. + +NEEDS +--------- +PdfLatex can't be used because some composants of the graphic visuals +are written with PSTRICKS + +Compilation needs to be performed with latex->dvips->ps2pdf or +xelatex. diff --git a/Master/texmf-dist/doc/latex/sesamanuel/sesamanuel.pdf b/Master/texmf-dist/doc/latex/sesamanuel/sesamanuel.pdf new file mode 100644 index 00000000000..0e9ec88cde2 Binary files /dev/null and b/Master/texmf-dist/doc/latex/sesamanuel/sesamanuel.pdf differ diff --git a/Master/texmf-dist/doc/latex/sesamanuel/sesamath-doc-fr.pdf b/Master/texmf-dist/doc/latex/sesamanuel/sesamath-doc-fr.pdf new file mode 100644 index 00000000000..1b7c2f8ccf5 Binary files /dev/null and b/Master/texmf-dist/doc/latex/sesamanuel/sesamath-doc-fr.pdf differ diff --git a/Master/texmf-dist/doc/latex/sesamanuel/sesamath-doc-fr.tex b/Master/texmf-dist/doc/latex/sesamanuel/sesamath-doc-fr.tex new file mode 100644 index 00000000000..e497f5c27d1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/sesamanuel/sesamath-doc-fr.tex @@ -0,0 +1,4533 @@ +%% Copyright 2014-2015 Sesamath Society written by J.-C. Charpentier, S. Mengin, S. Baglieri. +%% +%% Copyright (C) 2014-2015 Sesamath Society written Jean-C\^ome Charpentier, S\'ebastien Mengin, Sandrine Baglieri. +\documentclass[nocrop]{sesamanuel} +\usepackage{sesamath-doc} +\usepackage{sesamanuelTIKZ} +\let\ifluatex\relax +\usepackage{hyperref} + +\begin{document} + +\themaM +\colorlet{ChapterNumColor}{PartieFonction} +\chapter{Sesamanuel\\Documentation} + +\begin{commentaire} +Documentation pour l'utilisation de la classe \LaTeX{} \environ{sesamanuel.cls} et des packages \environ{sesamanuel.sty} et \environ{sesamanuelTIKZ.sty} de \Logosesa{}. + +\textcolor{PrerequisTitleColor}{\PrerequisTitleFont +Partie \ref{chIntro}: Introduction \dotfill\ page \pageref{chIntro}} + +Cette partie contient une présentation de la classe : historique, méthode d'installation, méthode de compilation. + +\textcolor{PrerequisTitleColor}{\PrerequisTitleFont +Partie \ref{chClsPourOuvrage}: Classe pour un ouvrage \dotfill\ page \pageref{chClsPourOuvrage}} + +Si vous souhaitez utiliser la structure complète de la classe pour composer un manuel (un ou plusieurs chapitres accompagnés d'annexes), vous trouverez dans cette partie, les explications de toutes les commandes crées par cette classe, leur fonctionnement et les possibilités de personnalisation. + +\textcolor{PrerequisTitleColor}{\PrerequisTitleFont +Partie \ref{chClsPourQQFeuilles}: Classe pour quelques feuilles \dotfill\ page \pageref{chClsPourQQFeuilles}} + +Si vous souhaitez intégrer quelques extraits choisis du manuel \Logosesa{} 2\up{de} dans des documents sans utiliser la classe complète, vous trouverez votre bonheur dans cette partie. + +\textcolor{PrerequisTitleColor}{\PrerequisTitleFont +Partie \ref{chDetails}: Détails Typographiques \dotfill\ page \pageref{chDetails}} + +Vous trouverez dans cette partie, les commandes spéciales utilisées dans le manuel \Logosesa{} 2\up{de} pour homogénéiser certaines présentations. + +\textcolor{PrerequisTitleColor}{\PrerequisTitleFont +Partie \ref{chTIKZ}: Figures TIKZ \dotfill\ page \pageref{chTIKZ}} + + +Vous trouverez dans cette partie, les commandes spéciales utilisées dans le manuel \Logosesa{} 2\up{de} pour homogénéiser les figures. +\end{commentaire} + +\colorlet{ChapterNumColor}{white} +\setcounter{chapter}{0} +\chapter{Introduction}\label{chIntro} +\begin{prerequis}[Constructions offertes par la classe]Dans ce premier chapitre, nous allons présenter quelques généralités + sur la classe \class{sesamanuel} : +\begin{itemize} +\item sa raison d'être, +\item son installation + et + \item quelques détails techniques. +\end{itemize} + Les problèmes d'installations sont maintenant souvent résolus + grâce à des procédures d'installation automatisées (\TeX Live ou + Mik\TeX)(section~\ref{sec-installation}). + \vfill \columnbreak + En revanche la + section~\ref{sec-mode-de-compilation} est réellement importante + à lire puisque la compilation actuellement la plus fréquemment + utilisée (à savoir celle par \pgm{pdflatex}) ne fonctionnera pas + avec cette classe. +\end{prerequis} + +\begin{autoeval} + \begin{multicols}{2} + \begin{exercice} + Pourquoi ne faut-il pas passer ce chapitre sans en lire le + contenu ? + \end{exercice} + \begin{corrige} + S'il ne doit y avoir qu'une seule section à lire dans le premier + chapitre, c'est celle traitant du mode de compilation + (section\ref{sec-mode-de-compilation}). + \end{corrige} + \begin{exercice} + Comment utiliser cette classe pour composer un seul exercice ? + \end{exercice} + \begin{corrige} + L'utilisation de la classe pour composer un seul élément ou + quelques éléments isolés est décrite dans le + chapitre~\ref{chap-classe-pour-quelques-feuilles}. + \end{corrige} + \begin{exercice} + Je n'aime pas la façon avec laquelle la classe compose un + ouvrage. Comment faire ? + \end{exercice} + \begin{corrige} + La classe a été pensée pour être hautement configurable. S'il y a + des aspects fondamentaux qui ne vous conviennent pas, c'est + peut-être que cette classe ne vous convient pas ! + \end{corrige} + \begin{exercice} + Pour adapter la classe a mes demandes, puis-je modifier le code + source ? + \end{exercice} + \begin{corrige} + La classe et l'extension sont des projets libres. On peut donc + modifier ce qu'on veut. Pour éviter toute erreur de manipulation, + il est cependant plus prudent de modifier aussi le nom de la + classe. N'oubliez pas de modifier la ligne + \texttt{\textbackslash ProvidesClass\{sesamanuel\}} de la classe ou + la ligne \texttt{\textbackslash ProvidesPackage\{sesamanuel\}} de + l'extension. + \end{corrige} + \end{multicols} +\end{autoeval} + +\cours +\section{Présentation} +\label{sec-presentation} +\newcommand{\StringDOCUMENTATION}{Historique} +\DeclareDefLike{documentation}{\StringDOCUMENTATION} +\begin{documentation}La classe \class{sesamanuel} a été une commande de l'association +française \Logosesa{}.\\ Cette classe a servi à éditer le manuel +\Logosesa{} 2\up{de}. \\L'association \Logosesa{} a souhaité que la +classe utilisée pour produire ce document soit mise à la disposition de +tous \emph{via} son site \texttt{http://www.sesamath.net/} et en le +déposant sur CTAN sous licence libre. +\end{documentation} + + +\renewcommand{\StringDOCUMENTATION}{Principe} +\begin{documentation} +Pour que la classe soit utilisable facilement par tout un chacun, même +s'il s'agit d'une classe conçue pour fabriquer un ouvrage par des +professionnels, il a été décidé, dès le départ, que toute la chaîne de +production \TeX{} n'utiliserait que des produits courants. \\En particulier, +la maquette ne fait appel à aucune fonte non présente par défaut dans +toute distribution \TeX{} ni a aucune extension qui ne se trouve pas +sur CTAN et sur les distributions classiques. Le +tableau~\ref{tab-extensions} donne la liste des extensions et fontes +utilisées par la classe. + +En réalité, {\bfseries la classe a un double but}: +\begin{itemize} + \item +composer un ouvrage en +respectant une maquette bien précise d'un éditeur; +\item permettre à +n'importe qui de mettre en page tout ou partie de cet ouvrage. +\end{itemize} L'idée +est que des enseignants de mathématiques puissent reprendre une partie +du code source des ouvrages, de pouvoir les modifier éventuellement et +de produire des feuilles séparées ou bien des documents à projeter en +classe. + +Donc, la classe assure de pouvoir composer un manuel en respectant un +cahier des charges précis et de pouvoir également se soustraire à +certaines exigences de ce cahier des charges en gardant une syntaxe +commune pour les fichiers sources. \\Plus précisément, l'idée est de +construire un ouvrage papier dont le source est éclaté en autant de +fichiers sources qu'il y a d'éléments dans cet ouvrage (cours, +exercice, TP, corrigés, etc.) et de pouvoir reconstruire un document +en gardant les éléments que l'on souhaite (un seul +exercice, un choix d'exercices, une partie cours, des activités, un +thème complet\ldots). + +Ces deux exigences font que la classe peut être comprise comme ayant +deux modes de fonctionnement différents et c'est comme cela que les +fonctionnalités seront présentées. + +\end{documentation} +\begin{table} + \centering + \caption{Liste des extensions utilisées par la classe} + \label{tab-extensions} + \begin{tableau}[l]{0.8\linewidth}{2} + \hline + Extension & Version et date + \\\hline + classe \class{book} & v1.4h 2007/10/19 \\ + \package{etex} & v2.0 1998/03/26 \\ + \package{fontenc} & v1.99g 2005/09/27 \\ + \package{inputenc} & v1.1d 2008/03/30 \\ + \package{fontspec} & \\ + \package{xunicode} & \\ + \package{helvet} & v9.2a 2005/04/12 \\ + \package{mathpazo} & v9.2a 2005/04/12 \\ + \package{mathrsfs} & v1.0 1996/01/01 \\ + \package{pifont} & v9.2a 2005/04/12 \\ + \package{eurosym} & v1.1 1998/08/06 \\ + \package{geometry} & v5.6 2010/09/12 \\ + \package{ifpdf} & v2.3 2011/01/30 \\ + \package{crop} & v1.9 2003/05/20 \\ + \package{ifmtarg} & v1.2a 2009/09/02 \\ + \package{mathtools} & v1.13 2013/02/12 \\ + \package{amssymb} & v3.01 2013/01/14 \\ + \package{longtable} & v4.11 2004/02/01 \\ + \package{tabularx} & v2.07 1999/01/07 \\ + \package{multirow} & V1.6 2004/05/05 \\ + \package{xcolor} & v2.11 2007/01/21 \\ + \package{pst-all} & voir note \\ + \package{pstricks-add} & voir note \\ + \package{fancyhdr} & v3.2 2005/03/22 \\ + \package{fancyvrb} & v2.7a 2008/02/07 \\ + \package{multicol} & v1.7a 2011/06/27 \\ + \package{babel} & v3.9h 2013/12/03 \\ + \package{numprint} & v1.39 2012/08/20 \\ + \hline + \end{tableau} + + % \raggedright + + \DeclareRemLike{note}{Note} + \begin{note} + la bibliothèque d'extensions PSTricks contient une vingtaine + d'extensions dont les plus récentes datent de février~2014. La + classe \class{sesamanuel} n'utilise cependant aucune fonctionnalité de + PSTricks définie après 2009. + \end{note} + +\end{table} + +\clearpage +\section{Installation} +\label{sec-installation} +\renewcommand{\StringDOCUMENTATION}{Si vous avez une version récente} +\begin{documentation}[ +\TeX Live~2013 (à jour), de Mik\TeX{} ou Mac\TeX{}]La classe se trouvant sur CTAN, la +classe est déjà installée et vous n'avez rien à faire. +\end{documentation} +\renewcommand{\StringDOCUMENTATION}{Si vous avez une version ancienne} +\begin{documentation} +[distribution \TeX{} avant 2013] +Il faudra +installer la classe \og à la main \fg{}. C'est très simple, pour que +cela fonctionne, il n'y a besoin que du seul fichier +\file{sesamanuel.cls}. Il faut également que la compilation retrouve ce +fichier sur votre disque dur. +\begin{itemize} + \item + +Il y a une première solution peu élégante qui consiste à placer ce +fichier dans le même répertoire que le document maître. \\C'est peu +élégant car il faudra dupliquer ce fichier dans autant d'endroits +qu'il y aura de répertoires de travail\ldots{} et lorsque la version +de la classe changera (par exemple pour corriger un bug), il faudra +alors répercuter ce changement dans tous ces répertoires. + +\item Une deuxième solution plus élégante consiste à placer le fichier dans +l'arborescence principale de \TeX{}. La racine de celle-ci dépend du +système d'exploitation et de la distribution \TeX{} utilisée. +\begin{itemize} + \item +Sous +MikTeX ou \TeX Live sous Windows, la racine peut être +\file{C:\texmf\}. +\item Sous \TeX Live sous Linux, la racine peut être +\file{/usr/share/texlive/texmf-dist/} pour une distribution installée +par le système ou bien + +\file{/usr/local/texlive//texmf-dist} +pour une distribution installée \emph{via} l'installateur \TeX +Live. +\item Sous Mac\TeX{}, la racine se trouve normalement en + +\file{/usr/local/texlive//texmf-dist}. +\end{itemize} +\end{itemize} + +\end{documentation} + +\section{Mode de compilation} +\label{sec-mode-de-compilation} +Les documents produits avec la classe ne demandent pas d'outils +externes pour être construits. En particulier, le lexique ne demande +pas de passage par \pgm{makeindex} ou bien \pgm{texindy} ou +\pgm{xindy} pour que ses entrées soient classées. + +\begin{remarque} +La classe utilise intensément PSTricks pour tout ce qui est +graphique. Cela implique qu'une compilation avec \pgm{pdflatex} ne +fonctionnera pas. Il y a deux solutions : +\begin{itemize} +\item une compilation avec la chaîne \pgm{latex} $\to$ \pgm{dvips} + $\to$ \pgm{ps2pdf} ou bien des programmes équivalents transformant + le dvi en ps (ou pdf) ; +\item une compilation avec \pgm{xelatex} +\end{itemize} +La classe détecte automatiquement le mode de compilation et adapte ses +appels d'extension au moteur utilisé. +\end{remarque} + +\section{Option de compilation} +\label{sec-option-de-compilation} +Lorsqu'on compose un manuel avec la maquette sesamath, on dispose des +options de classes suivants: +\begingroup +\setlist{AE} +\begin{itemize} +\item Tous les codages d'entrées que connaît le package + \package{inputenc}. L'option par défaut est \key{utf8}. +\item \key{crop} ou \key{nocrop} pour obtenir, ou non, les + repères photographiques de coupe. L'option par défaut est + \key{crop}. +\end{itemize} +\endgroup + +\chapter{Classe\\ pour un ouvrage}\label{chClsPourOuvrage} + +\begin{prerequis}[Les différentes parties d'un ouvrage] + Les différentes parties d'un ouvrage vont être présentées en détail + dans les pages qui suivent. Voici la liste de tous les types de + parties qui vont composer chaque chapitre ainsi que les différents + types d'annexes que l'on rencontre. + \begin{itemize} + \item Organisation générale + \item Première page d'un chapitre + \item Activités d'approche + \item Cours-Méthodes + \item Exercices d'entraînement + \item Exercices d'approfondissement + \item Récréation, énigmes + \item Je teste mes connaissances + \item Travaux pratiques + \item Annexes générales + \item Liste des méthodes + \item Solutions + \item Propriétés + \item Lexique + \end{itemize} + Avant de voir toutes ces parties, on listera toutes les couleurs, + les longueurs, les commandes de changement de fontes et les textes + fixes utilisés par la maquette et définis par la classe. +\end{prerequis} + +\begin{autoeval} + \begin{multicols}{2} + \begin{exercice} + Serez-vous capable de lire ce manuel en entier en moins de + deux heures ? + \end{exercice} + \begin{corrige} + Soit vous disposez d'une capacité hors norme pour la vitesse de + lecture, soit il ne faut pas trop se faire d'illusion et il est + impossible d'assimiler l'ensemble des fonctionnalités en moins + de deux heures. + \end{corrige} + \begin{exercice} + Le source de ce manuel est normalement à votre disposition + (fichier \file{sesamanuel-doc-fr.tex}). + + Repérez cette première page et changez l'encadré \og + Auto-évaluation \fg{} en \og Exercices pour auteurs \fg{}. + \end{exercice} + \begin{corrige} + D'après ce qui a été dit à la page qui suit cet exercice, il + suffit de placer, avant l'appel à l'environnement + \environ{autoeval} le code suivant : +\begin{verbatim} +\renewcommand*\StringAE{% + Exercices pour auteurs +} +\end{verbatim} + \end{corrige} +\vfill \columnbreak + \begin{exercice} + Pourquoi l'exercice précédent est-il un peu idiot (trop facile) si + on le fait vraiment avec le source du manuel ? Essayez de + répondre à cet exercice sans regarder ni la solution, ni le + source du manuel ! + \end{exercice} + \begin{corrige} + Parce que si on a le source sous les yeux, on a également la + solution de l'exercice sous les yeux ! + \end{corrige} + \end{multicols} +\end{autoeval} + +\cours +\section{Organisation générale} +\label{sec-organisation-generale} +\renewcommand{\StringDOCUMENTATION}{Principe} +\begin{documentation} +L'ouvrage suit une maquette. La suite des chapitres est répartie en +trois thèmes suivis d'annexes. Trois thèmes sont proposés: dans l'ordre, Statistiques et probabilités, Fonctions, +Géométrie. Ces thèmes sont introduits par les macros respectives: + \begin{colenumerate}{3} + \item \cmd{themaSP} + \item \cmd{themaF} + \item \cmd{themaG} + \end{colenumerate} + +Le fait d'être dans un thème va faire que certains éléments vont avoir +une couleur particulière. Les titres de chapitres seront accompagnés +d'une lettre correspondant au thème et la liste des méthodes sera +classée par thème. +\end{documentation} + +\begin{methode*1}[Créer de nouveaux thèmes\label{newthema}] +La classe offre la possibilité de créer de nouveaux thèmes et de +changer toutes les couleurs liées au thème grâce à la commande +\cmd{NewThema}. Cette commande demande sept arguments obligatoires +qui vont être, dans l'ordre: +\begingroup +\setlist{AE}% +\begin{itemize} +\item lettre après \cmd{thema} (normalement en capitale); +\item lettre en minuscule; +\item titre du thème en minuscule; +\item titre du thème avec initiale en capitale; +\item titre du thème en capitale; +\item couleur du cadre pour le rectangle vertical de chapitre ainsi + que celle du dernier carré en bas à gauche; +\item couleur de l'avant-dernier carré en bas à gauche du rectangle + vertical de chapitre ainsi que celle du rectangle de pied de page; +\end{itemize} +\endgroup +\exercice +Pour cette documentation, on a créé un thème +\og manuel \fg{} +\correction +La commande est la suivante : +\begin{verbatim} +\NewThema{M}{m}{manuel}{Manuel}{MANUEL}{PartieFonction}{A3} +\end{verbatim} +Les deux syntaxes de couleurs \key{PartieFonction} et \key{A3} vont +être expliquée immédiatement après. +\end{methode*1} + +\subsection{Couleurs} +\label{subsec-couleurs} +La classe offre la possibilité de modifier les couleurs. \\Il faut être +conscient que changer les couleurs (ou les autres éléments) fera qu'on +ne respectera plus la maquette. + +La maquette définit un nuancier avec lequel seront définies toutes les +autres couleurs. La table~\ref{tab-nuancier} page suivante donne la +liste de toutes les couleurs de ce nuancier avec leur nom et leur +définition (CMYK sauf pour les teintes de gris). +Certaines couleurs de ce nuancier ne servent pas dans le résultat +final. La maquette a évolué mais comme cela ne posait aucun problème, le +nuancier initial a été gardé. + +À partir de ce nuancier, la classe va définir plus de 200 couleurs +employées dans l'ensemble d'un ouvrage. Le (grand) +tableau~\ref{tab-couleurs} +pages~\pageref{tab-debut-couleur}-\pageref{tab-couleurs} donne la +liste de ces couleurs avec leur nom, leur définition initiale et leur +signification. Pour mieux s'y retrouver, on a organisé ce tableau en +parties correspondant à celles de l'ouvrage. + +\afterpage{% + \centering + \renewcommand*\tabularxcolumn[1]{>{\centering\arraybackslash}m{##1}} + \psset{fillstyle=solid} + \newcommand\C[2]{% + \begin{pspicture}(0,0)(2,1.5) + \psframe[fillcolor=##1](0,0.5)(2,1.5) + \setbox0=\hbox{##1}% + \ifdim\wd0>1.5cm + \rput[B](1,0.25){\box0} + \rput[B](1,-0.1){##2} + \else + \rput[B](1,0){\box0 : ##2} + \fi + \end{pspicture}% + } + \begin{tabularx}{\linewidth}{XXXX} + \C{A1}{1.00, 0.00, 0.00, 0.50} & + \C{A2}{0.60, 0.00, 0.00, 0.10} & + \C{A3}{0.30, 0.00, 0.00, 0.05} & + \C{A4}{0.10, 0.00, 0.00, 0.00} \\ + % + \C{B1}{0.00, 1.00, 0.60, 0.40} & + \C{B2}{0.00, 0.85, 0.60, 0.15} & + \C{B3}{0.00, 0.20, 0.15, 0.05} & + \C{B4}{0.00, 0.05, 0.05, 0.00} \\ + % + \C{C1}{0.00, 1.00, 0.00, 0.50} & + \C{C2}{0.00, 0.60, 0.00, 0.20} & + \C{C3}{0.00, 0.30, 0.00, 0.05} & + \C{C4}{0.00, 0.10, 0.00, 0.05} \\ + % + \C{D1}{0.00, 0.00, 1.00, 0.50} & + \C{D2}{0.20, 0.20, 0.80, 0.00} & + \C{D3}{0.00, 0.00, 0.20, 0.10} & + \C{D4}{0.00, 0.00, 0.20, 0.05} \\ + % + \C{F1}{0.00, 0.80, 0.50, 0.00} & + \C{F2}{0.00, 0.40, 0.30, 0.00} & + \C{F3}{0.00, 0.15, 0.10, 0.00} & + \C{F4}{0.00, 0.07, 0.05, 0.00} \\ + % + \C{G1}{1.00, 0.00, 0.50, 0.00} & + \C{G2}{0.50, 0.00, 0.20, 0.00} & + \C{G3}{0.20, 0.00, 0.10, 0.00} & + \C{G4}{0.10, 0.00, 0.05, 0.00} \\ + % + \C{H1}{0.40, 0.00, 1.00, 0.10} & + \C{H2}{0.20, 0.00, 0.50, 0.05} & + \C{H3}{0.10, 0.00, 0.20, 0.00} & + \C{H4}{0.07, 0.00, 0.15, 0.00} \\ + % + \C{J1}{0.00, 0.50, 1.00, 0.00} & + \C{J2}{0.00, 0.20, 0.50, 0.00} & + \C{J3}{0.00, 0.10, 0.20, 0.00} & + \C{J4}{0.00, 0.07, 0.15, 0.00} \\ + % + \C{FondOuv}{0.00, 0.05, 0.10, 0.00} & + \C{FondAutoEvaluation}{0.00, 0.03, 0.15, 0.00} & + \C{FondTableaux}{0.00, 0.00, 0.20, 0.00 } & + \C{FondAlgo}{0.07, 0.00, 0.30, 0.00} \\ + % + \C{BleuOuv}{1.00/0.00/0.00/0.00} & + \C{PartieFonction}{1.00/0.00/0.00/0.00} & + \C{PartieGeometrie}{0.80/0.80/0.00/0.00} & + \C{PartieStatistique}{0.95/0.60/0.20/0.00} \\ + % + \C{U1}{0.50/0.10/0.00/0.10} & + \C{U2}{0.20/0.15/0.00/0.00} & + & + \C{Blanc}{gray \upc{100}} \\ + % + \C{Gris1}{gray \upc{80}} & + \C{Gris2}{gray \upc{60}} & + \C{Gris3}{gray \upc{40}} & + \C{Noir}{gray \upc{0}} + \end{tabularx} + \captionof{table}{Nuancier de la classe} + \label{tab-nuancier} + \clearpage +} + + +\begingroup +\renewcommand*\colorlet[2]{% + #1 & #2 & +}% +\newcommand*\titre[1]{\multicolumn{3}{c}{\textbf{#1}}} +\clearpage +\label{tab-debut-couleur} +\centering +\begin{longtable}{@{}llp{8cm}@{}} + \hline + \endfirsthead + \\\hline + \endhead + \\ + \caption{Couleurs utilisées dans l'ouvrage} + \label{tab-couleurs} + \endlastfoot + \titre{Couleurs dans tout le document} \\\hline + \colorlet{AlgoLineColor}{F3} + Couleur des lignes du logo \cmd{algo} : \algo \\ + \colorlet{AlgoBkgColor}{F1} + Couleur de fond du logo \cmd{algo} \\ + \colorlet{AlgoTextColor}{Blanc} + Couleur du texte du logo \cmd{algo} \\ + \colorlet{TiceLineColor}{A3} + Couleur des lignes du logo \cmd{tice} : \tice \\ + \colorlet{TiceBkgColor}{A1} + Couleur du fond du logo \cmd{tice} \\ + \colorlet{TiceTextColor}{Blanc} + Couleur du texte du logo \cmd{tice} \\ + \colorlet{CadreLineColor}{D3} + Couleur par défaut des cadres avec coin biseauté \\ + \colorlet{CadreBkgColor}{Blanc} + Couleur par défaut du fond des cadres avec coin biseauté \\ + \colorlet{AlgorithmeRuleColor}{D2} + Couleur du bord du cadre d'un algorithme \\ + \colorlet{AlgorithmeBkgColor}{FondAlgo} + Couleur du fond du cadre d'un algorithme \\ + \colorlet{CouleurAlgoAffiche}{Noir} + Couleur du texte \textbf{Afficher la valeur} et \textbf{Afficher} de + \cmd{AfficherVar} et de \cmd{Afficher} \\ + \colorlet{CouleurAlgoDemander}{Noir} + Couleur du texte \textbf{Demander} de \cmd{Demander} \\ + \colorlet{CouleurAlgoSaisir}{Noir} + Couleur du texte \textbf{Saisir} de \cmd{Saisir} \\ + \colorlet{CouleurAlgoStocker}{Noir} + Couleur du texte \textbf{Stocker} de \cmd{Stocker} \\ + \colorlet{CouleurAlgoSi}{Noir} + Couleur du texte \textbf{Si}, \textbf{Sinon}, \textbf{Alors} et + \textbf{Fin Si} de \cmd{sialors} et \cmd{sialorssinon}\\ + \colorlet{CouleurAlgoTantque}{Noir} + Couleur du texte \textbf{Tant que} et \textbf{Fin Tant que} de + \cmd{tantque} \\ + \colorlet{CouleurAlgoPour}{Noir} + Couleur du texte \textbf{Pour}, \textbf{variant de}, \textbf{à}, + \textbf{avec un pas de}, \textbf{faire} et \textbf{Fin Pour} de + \cmd{pour} et \cmd{pourAvecPas} \\ + \colorlet{CouleurAlgoCalcule}{Noir} + Couleur du texte \textbf{Calculer} de \cmd{Calculer} \\ + \colorlet{CouleurAlgoInitialiser}{Noir} + Non utilisé \\ + \colorlet{CouleurAlgoIncrementer}{Noir} + Non utilisé \\ + \colorlet{CouleurAlgoCommentaire}{Noir} + Couleur du texte de commentaire de \cmd{DeclareVar} + \\ + \colorlet{CouleurAlgoDonnerValeur}{Noir} + Couleur du texte pour le texte de \cmd{DonnerValeur} \\ + \colorlet{CommentaireItemColor}{Noir} + Couleur des items dans l'environnement \environ{commentaire} \\ + \colorlet{FiletTableauColor}{Gris3} + Couleur des filets des tableaux \\ + \colorlet{FondSudokuColor}{FondTableaux} + Couleur de fond pour les cases colorées des sudokus \\\hline + \titre{Première page d'un chapitre} \\\hline + \colorlet{ChapterTopFrameColor}{*}% + Couleur du rectangle supérieur horizontal (sur la largeur de page) + dans l'en-tête de chapitre \\ + \colorlet{ChapterBottomFrameColor}{J4} + Couleur du rectangle inférieur horizontal (sur la largeur de page) + dans l'en-tête de chapitre \\ + \colorlet{ThemaTopFrameColor}{J1} + Couleur du rectangle supérieur vertical (où il y a le titre du + thème) dans l'en-tête de chapitre \\ + \colorlet{ThemaBottomFrameColor}{J2} + Couleur du rectangle inférieur vertical (où il y a le titre du + thème) dans l'en-tête de chapitre \\ + \colorlet{ThemaTitleColor}{Blanc} + Couleur du titre du thème en haut du rectangle vertical \\ + \colorlet{ChapterNumBkgColor}{H2} + Couleur de fond du rectangle au-dessous du numéro de chapitre \\ + \colorlet{ChapterNumSquare0Color}{Blanc} + Couleur de texte dans les zones qui utilisent les petits carrés en + dégradé \\ + \colorlet{ChapterNumSquare1Color}{H1} + Couleur de dégradé des petits carrés (voir note **) \\ + \colorlet{ChapterNumSquare2Color}{H2} + Couleur de dégradé des petits carrés (voir note **) \\ + \colorlet{ChapterNumSquare3Color}{H4} + Couleur de dégradé des petits carrés (voir note **) \\ + \colorlet{ChapterNumSquare4Color}{*}% + Couleur de dégradé des petits carrés (voir note **) \\ + \colorlet{ChapterNumSquare5Color}{*}% + Couleur de dégradé des petits carrés (voir note **) \\ + \colorlet{FootTitleHeadColor}{*}% + Couleur du titre de chapitre dans les pieds de page de tout le + chapitre \\ + \colorlet{FirstChapterFootColor}{*}% + Couleur du rectangle de pied de page pour la première page du + chapitre \\ + \colorlet{ChapterTitleColor}{B1} + Couleur du titre de chapitre en première page \\ + \colorlet{ChapAppColor}{Blanc} + Non utilisé \\ + \colorlet{ChapterNumColor}{Blanc} + Couleur du numéro de chapitre \\ + \colorlet{ChapterNumFrameColor}{*}% + Couleur de fond du numéro de chapitre \\ + \colorlet{PrerequisTitleColor}{B2} + Couleur du titre des prérequis \\ + \colorlet{PrerequisBkgColor}{A4} + Couleur de fond du cadre des prérequis \\ + \colorlet{PrerequisItemColor}{B2} + Couleur des étiquettes d'item des prérequis \\ + \colorlet{AEItemColor}{B2} + Couleur des étiquettes d'item dans l'auto-évaluation \\ + \colorlet{AETitleFrame0Color}{Blanc} + Couleur du titre de l'auto-évaluation (voir note **)\\ + \colorlet{AETitleFrame1Color}{B2} + Couleur des cercles dégradés (voir note **) \\ + \colorlet{AETitleFrame2Color}{B3} + Couleur des cercles dégradés (voir note **) \\ + \colorlet{AETitleFrame3Color}{A4} + Couleur des cercles dégradés (voir note **) \\ + \colorlet{AETitleFrame4Color}{A3} + Couleur des cercles dégradés (voir note **) \\ + \colorlet{AETitleFrame5Color}{A2} + Couleur des cercles dégradés (voir note **) \\ + \colorlet{AETitleColor}{Blanc} + Couleur du titre de l'auto-évaluation \\ + \colorlet{AEExoNumColor}{Blanc} + Couleur du numéro des exercices dans l'auto-évaluation \\ + \colorlet{AEExoNumFrameColor}{A2} + Couleur du cadre des numéros des exercices dans l'auto-évaluation \\ + \colorlet{AEFrameColor}{FondAutoEvaluation} + Couleur du cadre général des exercices de l'auto-évaluation \\ + \colorlet{AECartoucheCorrBkgColor}{J2} + Couleur de fond du cartouche de référence à la page de correction \\ + \colorlet{AECartoucheCorrArrowColor}{G2} + Couleur des flèches dans le cartouche de référence aux corrections \\ + \colorlet{AECartoucheCorrVCPColor}{B2} + Couleur du texte \cmd{StringVoirCorriges} \\\hline + \titre{Activités d'approche} \\\hline + \colorlet{ActiviteHeadFrame0Color}{Blanc} + Couleur du titre \cmd{StringActivitesApproche} (voir note **) \\ + \colorlet{ActiviteHeadFrame1Color}{C1} + Couleur des carrés dégradés (voir note **) \\ + \colorlet{ActiviteHeadFrame2Color}{C2} + Couleur des carrés dégradés (voir note **) \\ + \colorlet{ActiviteHeadFrame3Color}{C3} + Couleur des carrés dégradés (voir note **) \\ + \colorlet{ActiviteHeadFrame4Color}{D3} + Couleur des carrés dégradés (voir note **) \\ + \colorlet{ActiviteHeadFrame5Color}{G1} + Couleur des carrés dégradés (voir note **) \\ + \colorlet{ActiviteFootColor}{D2} + Couleur du rectangle de pied de page \\ + \colorlet{FootChapterNumColor}{U1} + Non utilisé \\ + \colorlet{ActiviteSubtitleColor}{H1} + Couleur du titre de l'activité en cours \\ + \colorlet{ActiviteNumColor}{Blanc} + Numéro de l'activité \\ + \colorlet{ActiviteDebatTopColor}{G4} + Couleur dans la partie supérieure du losange des débats \\ + \colorlet{ActiviteDebatBottomColor}{D4} + Couleur dans la partie inférieure du losange des débats \\ + \colorlet{ActiviteActiviteTopColor}{D3} + Couleur dans la partie supérieure du losange des activités \\ + \colorlet{ActiviteActiviteBottomColor}{G2} + Couleur dans la partie inférieure du losange des activités \\ + \colorlet{ActiviteTitleColor}{C1} + Titre de l'activité débats (soit Activité soit Débat) \\ + \colorlet{ActiviteItemColor}{C1} + Couleur des étiquettes des item dans les activités et débats \\ + \colorlet{ActivitePartieColor}{A2} + Couleur du texte des parties dans les activités débats + \\\hline + \titre{Cours-Méthodes} \\\hline + \colorlet{CoursHeadFrame0Color}{Blanc} + Couleur du texte de l'en-tête (voir note **) \\ + \colorlet{CoursHeadFrame1Color}{J1} + Couleur des carrés dégradés (voir note **) \\ + \colorlet{CoursHeadFrame2Color}{J2} + Couleur des carrés dégradés (voir note **) \\ + \colorlet{CoursHeadFrame3Color}{J4} + Couleur des carrés dégradés (voir note **) \\ + \colorlet{CoursHeadFrame4Color}{A3} + Couleur des carrés dégradés (voir note **) \\ + \colorlet{CoursHeadFrame5Color}{A2} + Couleur des carrés dégradés (voir note **) \\ + \colorlet{CoursFootColor}{A3} + Couleur du rectangle de pied de page \\ + \colorlet{SectionFrame1Color}{J4} + Couleur de fond du carré supérieur droit du numéro de section \\ + \colorlet{SectionFrame2Color}{J2} + Couleur de fond du rectangle gauche et du rectangle inférieur du + numéro de section \\ + \colorlet{SectionFrame3Color}{J1} + Couleur de fond du carré inférieur gauche du numéro de section \\ + \colorlet{SectionNumColor}{A1} + Couleur du numéro de section \\ + \colorlet{SectionTitleColor}{A1} + Couleur du titre de section \\ + \colorlet{SubsectionNumColor}{B2} + Couleur du numéro de sous-section \\ + \colorlet{SubsectionTitleColor}{J1} + Couleur du titre de sous-section \\ + \colorlet{DefSquareColor}{B2} + Couleur du carré initial des environnements de type définition \\ + \colorlet{DefTitleColor}{A1} + Couleur du titre des environnements de type définition (c'est-à-dire + \og DÉFINITION \fg{}, \og PROPRIÉTÉ \fg{}, etc) \\ + \colorlet{DefSubtitleColor}{B2} + Couleur du sous-titre des environnements de type définition (donné + par l'utilisateur) \\ + \colorlet{DefItemColor}{B2} + Couleur des étiquettes des items dans les environnements de type + définition \\ + \colorlet{DefFrameColor}{J3} + Couleur de fond du cadre du contenu des environnements de type + définition \\ + \colorlet{RemTitleColor}{H1} + Couleur des titres des environnements de type remarque (Remarque(s), + Notation(s), Vocabulaire) \\ + \colorlet{RemItemColor}{H1} + Couleur des étiquettes des items dans les environnements de type + remarque \\ + \colorlet{ExempleRuleColor}{J1} + Couleur des filets dans les environnements de type exemple (exemple + avec correction) \\ + \colorlet{ExempleEdgeFrameColor}{J2} + Couleur des bords gauche et inférieur des cartouches exemple et + correction \\ + \colorlet{ExempleBkgFrameColor}{F4} + Couleur de fond des cartouches exemple et correction \\ + \colorlet{ExempleTitleColor}{A1} + Couleur des titre exemple et correction \\ + \colorlet{ExempleItemColor}{J1} + Couleur des étiquettes des items dans les environnements de type + exemple \\ + \colorlet{MethodeTitleFrameColor}{A2} + Couleur du fond pour le titre de la méthode et son numéro \\ + \colorlet{MethodeTitleColor}{Blanc} + Couleur du titre de la méthode (MÉTHODE) et de son numéro \\ + \colorlet{MethodeSubtitleColor}{B2} + Couleur du sous-titre de la méthode (donnée par l'utilisateur) \\ + \colorlet{MethodeIntroBkgFrameColor}{A4} + Couleur du fond du texte introductif de la méthode \\ + \colorlet{ExAppEdgeFrameColor}{A2} + Couleur du trait bas du cartouche Exercice d'application \\ + \colorlet{ExAppBkgFrameColor}{H1} + Couleur de fond du cartouche Exercice d'application \\ + \colorlet{ExAppTitleColor}{Blanc} + Couleur du titre Exercice d'application \\ + \colorlet{ExAppCorrEdgeFrameColor}{H1} + Couleur du trait bas du cartouche Correction \\ + \colorlet{ExAppCorrBkgFrameColor}{A2} + Couleur de fond du cartouche Correction \\ + \colorlet{ExAppCorrTitleColor}{Blanc} + Couleur du titre Correction \\ + \colorlet{ExAppItemColor}{A2} + Couleur des étiquettes pour les items dans les exercices + d'application (et les correction) \\ + \colorlet{MethodeRuleColor}{A3} + Couleur des filets verticaux (large ou étroit) dans les méthodes \\ + \colorlet{ProofRuleColor}{B1} + Couleur du filet pour les preuves \\ + \colorlet{ProofTitleColor}{A1} + Couleur du titre des preuves \\ + \colorlet{ProofTopFrameColor}{B4} + Couleur de fond du cadre de titre des preuves \\ + \colorlet{ProofBottomFrameColor}{B3} + Couleur du trait inférieur de titre des preuves \\ + \colorlet{ProofTriangleFrameColor}{B1} + Couleur du triangle supérieur gauche du titre des preuves \\ + \colorlet{ProofItemColor}{J2} + Couleur des étiquettes des items dans les preuves \\\hline + \titre{Exercices d'entraînement} \\\hline + \colorlet{ExoBaseHeadFrame0Color}{Blanc} + Couleur du texte de l'en-tête (voir note **)\\ + \colorlet{ExoBaseHeadFrame1Color}{G1} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ExoBaseHeadFrame2Color}{G2} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ExoBaseHeadFrame3Color}{G4} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ExoBaseHeadFrame4Color}{J2} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ExoBaseHeadFrame5Color}{J1} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ExoBaseFootColor}{J2} + Couleur du rectangle de pied de page\\ + \colorlet{ExerciceColumnRuleColor}{J1} + Couleur du trait de séparation dans les exercices et les + corrigés d'exercice en double colonne\\ + \colorlet{ExercicesTitleColor}{C1} + Couleur du titre d'une série d'exercices\\ + \colorlet{ExercicesTitleVRuleColor}{G2} + Couleur pour la barre verticale du titre d'une série d'exercices\\ + \colorlet{ExercicesTitleHRuleColor}{C3} + Couleur pour la barre horizontale du titre d'une série d'exercices\\ + \colorlet{ExercicesTitleSquareColor}{J1} + Couleur pour le carré d'intersection des deux barres\\ + \colorlet{ExerciceNumColor}{Blanc} + Couleur du numéro d'exercice \\ + \colorlet{ExerciceTitleColor}{F1} + Couleur du titre d'un exercice\\ + \colorlet{ExerciceNumFrameColor}{G1} + Couleur du cadre du numéro d'un exercice non corrigé\\ + \colorlet{ExerciceCorrigeNumFrameColor}{J1} + Couleur du cadre du numéro d'un exercice corrigé\\ + \colorlet{ExerciceItemColor}{G1} + Couleur des puces\\ + \colorlet{ExercicePartieColor}{J1} + Couleur des parties dans un exercice\\ + \colorlet{ExerciceRefMethodeColor}{A2} + Couleur du cadre de référence à une méthode dans un exercice\\\hline + \titre{Exercices d'approfondissement} \\\hline + \colorlet{ExoApprHeadFrame0Color}{Blanc} + Couleur du texte de l'en-tête (voir note **)\\ + \colorlet{ExoApprHeadFrame1Color}{G1} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ExoApprHeadFrame2Color}{G2} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ExoApprHeadFrame3Color}{G4} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ExoApprHeadFrame4Color}{J2} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ExoApprHeadFrame5Color}{J1} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ExoApprFootColor}{J2} + Couleur du rectangle de pied de page\\\hline + \titre{Je teste mes connaissances} \\\hline + \colorlet{ConnHeadFrame0Color}{Blanc} + Couleur du texte de l'en-tête (voir note **)\\ + \colorlet{ConnHeadFrame1Color}{A2} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ConnHeadFrame2Color}{A3} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ConnHeadFrame3Color}{J2} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ConnHeadFrame4Color}{J1} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ConnHeadFrame5Color}{F1} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{ConnFootColor}{J2} + Couleur du rectangle de pied de page\\ + \colorlet{AcquisTitleColor}{G1} + Couleur du titre \og À la fin du chapitre, je dois être capable de + \fg\\ + \colorlet{AcquisBkgColor}{A4} + Couleur de fond du titre\\ + \colorlet{AcquisItemColor}{F1} + Couleur des puces dans le cadre des acquis\\ + \colorlet{QCMAEFrameColor}{G1} + Couleur du cadre des QCM dans l'auto-évaluation\\ + \colorlet{QCMAETitleCircle1Color}{J1} + Couleur des cercles concentriques dans le bandeau de l'auto-évaluation\\ + \colorlet{QCMAETitleCircle2Color}{J2} + Couleur des cercles concentriques dans le bandeau de l'auto-évaluation\\ + \colorlet{QCMAETitleCircle3Color}{F1} + Couleur des cercles concentriques dans le bandeau de l'auto-évaluation\\ + \colorlet{QCMAETitleColor}{Blanc} + Couleur du titre du bandeau de l'auto-évaluation\\ + \colorlet{QCMItemNumColor}{G1} + Couleur du numéro encerclé des QCM\\ + \colorlet{QCMFrameColor}{J1} + Couleur du cadre pour la référence à un QCM\\ + \colorlet{QCMTextFrameColor}{Blanc} + Couleur du texte pour la référence à un QCM\\ + \colorlet{QCMExoNumColor}{Blanc} + Couleur pour le numéro de QCM\\ + \colorlet{QCMExoNumFrameColor}{J1} + Couleur pour le cadre du numéro de QCM\\ + \colorlet{QCMLineColor}{A4} + Couleur pour les lignes encadrant les QCM\\\hline + \titre{Travaux pratiques, récréation, énigmes} \\\hline + \colorlet{TPHeadFrame0Color}{Blanc} + Couleur du texte de l'en-tête (voir note **)\\ + \colorlet{TPHeadFrame1Color}{H1} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{TPHeadFrame2Color}{H2} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{TPHeadFrame3Color}{H3} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{TPHeadFrame4Color}{C3} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{TPHeadFrame5Color}{C2} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{TPFootColor}{C3} + Couleur du rectangle de pied de page\\ + \colorlet{TPTopColor}{J3} + Couleur de la partie supérieure du cadre du numéro de TP\\ + \colorlet{TPBottomColor}{C3} + Couleur de la partie inférieure du cadre du numéro de TP\\ + \colorlet{TPTitleColor}{H1} + Couleur du titre du TP\\ + \colorlet{TPPartieColor}{J1} + Couleur des titres de parties dans les TP\\ + \colorlet{TPPartieBkgColor}{C2} + Couleur du cadre de numéro de partie dans les TP\\ + \colorlet{TPPartieNumColor}{Blanc} + Couleur du numéro de partie dans les TP\\ + \colorlet{RecreationHeadFrame0Color}{Blanc} + Couleur du texte de l'en-tête (voir note **)\\ + \colorlet{RecreationHeadFrame1Color}{J1} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{RecreationHeadFrame2Color}{J2} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{RecreationHeadFrame3Color}{H4} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{RecreationHeadFrame4Color}{H2} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{RecreationHeadFrame5Color}{H1} + Couleur des carrés dégradés (voir note **)\\ + \colorlet{RecreationFootColor}{H2} + Couleur du rectangle de pied de page\\ + \colorlet{RecreationTitleColor}{H1} + Couleur de titre pour récréation, énigmes\\ + \colorlet{RecreationItemColor}{H1} + Couleur des puces dans les récréations\\ + \colorlet{RecreationPartieColor}{J1} + Couleur des parties dans les récréation\\\hline + \titre{Annexes générales} \\\hline + \colorlet{AnnexePartieColor}{A1} + Couleur des parties dans les annexes\\\hline + \titre{Liste des méthodes} \\\hline + \colorlet{ListeMethodeHeadFrameColor}{G3} + Couleur des barres de marge dans la liste des méthodes\\ + \colorlet{ListeMethodeColumnRuleColor}{A1} + Couleur du séparateur de colonnes dans la liste des méthodes\\ + \colorlet{ListeMethodeTitleColor}{B2} + Couleur des titres des méthodes dans la liste des méthodes\\\hline + \titre{Solutions des exercices} \\\hline + \colorlet{CorrigeHeadFrameColor}{J2} + Couleur des barres de marge dans la correction des exercices\\ + \colorlet{CorrigeColumnRuleColor}{J1} + Couleur du séparateur de colonnes dans la correction des exercices\\ + \colorlet{CorrigeAETitleColor}{F1} + Couleur du titre \og Auto-évaluation \fg{} dans la correction des exercices\\ + \colorlet{CorrigeExercicesBaseTitleColor}{C2} + Couleur du titre \og S'entraîner \fg{} dans la correction des exercices\\ + \colorlet{CorrigeExercicesApprTitleColor}{C2} + Couleur du titre \og Approfondir \fg{} dans la correction des exercices\\ + \colorlet{CorrigeConnaissancesTitleColor}{G1} + Couleur du titre \og Je teste mes connaissances \fg{} dans la correction des exercices\\ + \colorlet{CorrigeQCMItemNumColor}{G1} + Couleur des numéros d'items vrais dans les correction de QCM\\\hline + \titre{Liste des propriétés} \\\hline + \colorlet{TablePropertyBkgColor}{J4} + Couleur de fond pour la colonne du milieu dans la liste des propriétés\\ + \colorlet{TablePropertyTitleBkgColor}{PartieStatistique} + Couleur de fond des titres dans la liste des propriétés\\ + \colorlet{TablePropertyTitleTextColor}{Blanc} + Couleur des titres dans la liste des propriétés\\\hline + \titre{Lexique} \\\hline + \colorlet{LexiqueHeadFrameColor}{F2} + Couleur des barres de marges dans le lexique\\ + \colorlet{LexiqueColumnRuleColor}{B2} + Couleur du séparateur de colonnes dans le lexique\\ + \colorlet{FirstLetterTxtColor}{B1} + Couleur de la lettre de début de groupe dans le lexique\\ + \colorlet{FirstLetterBkgColor}{J3} + Couleur de fond de la lettre de début de groupe dans le lexique\\ + \colorlet{LexiqueEntreeColor}{B2} + Couleur des entrées du lexique\\ + \colorlet{LexiqueItemColor}{B2} + Couleur des puces dans le lexique +\end{longtable} +\endgroup + +* Les couleurs définies avec * sont en fait des couleurs qui sont +modifiées à chaque fois qu'on change de thème. + +** Les en-têtes de page de la partie principale sont des cadres tels +que : +\begin{center} + \vspace{18pt} + \makeatletter + \smc@headeven{CoursHeadFrame}{Titre} +\end{center} +Ces cadres utilisent six couleurs :\\ +\begin{tabularx}{\linewidth}{XXXXXX} +Couleur 0 & +Couleur 1 & +Couleur 2 & +Couleur 3 & +Couleur 4 & +Couleur 5 \\ +\psframebox[fillcolor=CoursHeadFrame0Color]{~~~Titre~~~}& +\psframebox*[fillcolor=CoursHeadFrame1Color]{\phantom{Couleur}}& +\psframebox*[fillcolor=CoursHeadFrame2Color]{\phantom{Couleur}}& +\psframebox*[fillcolor=CoursHeadFrame3Color]{\phantom{Couleur}}& +\psframebox*[fillcolor=CoursHeadFrame4Color]{\phantom{Couleur}}& +\psframebox*[fillcolor=CoursHeadFrame5Color]{\phantom{Couleur}} +\end{tabularx} + +\subsection{Longueurs} +\label{subsec-longueurs} +Comme pour les couleurs, la classe offre la possibilité de modifier +les longueurs. Là encore, cela va modifier la maquette initiale. La +table~\ref{tab-longueurs} pages~\pageref{tab-debut-longueurs} +à~\pageref{tab-longueurs} liste la totalité des longueurs utilisées +par la classe. + +Même s'il s'agit bien de longueurs, toutes ces données sont définies +en tant que macro. La seule exception est \cmd{ActiviteTitleTopHeight} +qui est réellement une longueur. Cela signifie que si toutes les +longueurs de la classe peuvent être modifiées à l'aide d'une commande +\cmd{renewcommand}, pour \cmd{ActiviteTitleTopHeight}, il faudra +utiliser la commande \cmd{setlength}. + +\begingroup +\newcommand*\longueur[2]{% + \cmd{#1} & \texttt{#2} +}% +\newcommand*\titre[1]{\multicolumn{2}{c}{\textbf{#1}}} +\label{tab-debut-longueurs} +\centering +\begin{longtable}{@{}ll@{}} + \hline + \endfirsthead + \\\hline + \endhead + \\ + \caption{Longueurs utilisées dans l'ouvrage} + \label{tab-longueurs} + \endlastfoot + \titre{Longueurs dans tout le document} \\\hline +\longueur{SquareWidth}{3mm}\\ +\longueur{ItemRuleWidth}{1.5mm}\\ +\longueur{ItemRuleHeight}{1.5mm}\\ +\longueur{ItemRuleDepth}{0mm}\\ +\longueur{ListLabelWidth}{4mm}\\ +\longueur{EnumerateLabelWidth}{5mm}\\ +\longueur{ListHSep}{2mm}\\ +\longueur{AlgorithmeRuleWidth}{1pt}\\ +\longueur{AlgorithmeSep}{2mm}\\ +\longueur{AlgorithmeNumWidth}{6mm}\\ +\longueur{HeadFrameWidth}{11cm}\\ +\longueur{RoundHeadFrameWidth}{12.8cm}\\ +\longueur{HeadTitleSep}{1cm}\\ +\longueur{HeadTitleMaxWidth}{\cmd{HeadFrameWidth}-\cmd{SquareWidth}*3-\cmd{HeadTitleSep}}\\ +\longueur{RoundHeadTitleMaxWidth}{\cmd{RoundHeadFrameWidth}-\cmd{SquareWidth}*3-\cmd{HeadTitleSep}}\\ +\longueur{HeadFrameHeight}{\cmd{smc@margintop}-\cmd{smc@headsep}}\\ +\longueur{HeadFrameDepth}{3mm}\\ +\longueur{FootFrameWidth}{6mm}\\ +\longueur{FootFrameSep}{1mm}\\ +\longueur{AlgoIndent}{1em}\\\hline +\titre{Longueurs pour les différents cadres}\\\hline +\longueur{CadreSep}{2mm}\\ +\longueur{CadreLineWidth}{0.5mm}\\ +\longueur{FrameSep}{3mm}\\ +\longueur{FrameLineWidth}{1pt}\\ +\longueur{FrameArc}{\cmd{SquareWidth}/2}\\ +\longueur{RuleWidth}{1pt}\\ +\longueur{BeforeCadreVSpace}{1.5mm}\\ +\longueur{AfterCadreVSpace}{1.5mm}\\ +\longueur{BeforeTableVSpace}{1.5mm}\\ +\longueur{AfterTableVSpace}{1.5mm}\\ +\longueur{HabillageGap}{2mm}\\ +\longueur{LogoLineWidth}{1pt}\\ +\longueur{BeforeAlgorithmeVSpace}{1.5mm}\\ +\longueur{AfterAlgorithmeVSpace}{1.5mm}\\\hline +\titre{Longueurs pour la page de titre}\\\hline +\longueur{ChapterTopFrameHeight}{2.1cm+\cmd{smc@bleed}}\\ +\longueur{ChapterBottomFrameHeight}{6cm}\\ +\longueur{ChapterTotalFrameHeight}{\cmd{ChapterTopFrameHeight}+\cmd{ChapterBottomFrameHeight}}\\ +\longueur{ChapterBottomPicture}{5.5cm}\\ +\longueur{ChapterNumLeftFrame}{13.4cm}\\ +\longueur{ChapterTitleThemaWidth}{\cmd{linewidth}-\cmd{ChapterNumLeftFrame}-6mm}\\ +\longueur{ChapterNumBase}{3.6cm}\\ +\longueur{ChapterNumBottomFrame}{2.1cm}\\ +\longueur{ChapterNumTopFrame}{8.1cm+\cmd{smc@bleed}}\\ +\longueur{ChapterTitleBase}{2.1cm}\\ +\longueur{ChapterTitleSep}{1cm}\\ +\longueur{ThemaBottomFrame}{5.7cm}\\ +\longueur{ThemaTopFrame}{6.6cm}\\ +\longueur{PrerequisTitleVSpace}{1mm}\\ +\longueur{AETitleWidth}{8cm}\\ +\longueur{AETitleHeight}{\cmd{SquareWidth}*3}\\ +\longueur{AEFrameVSep}{4mm}\\ +\longueur{AEFrameHSep}{\cmd{SquareWidth}}\\ +\longueur{AEFrameRuleWidth}{\cmd{SquareWidth}/2}\\ +\longueur{AEExoFrameWidth}{\cmd{SquareWidth}*2}\\ +\longueur{AEExoFrameTopSep}{1mm}\\ +\longueur{AfterAEExoFrameHSpace}{2mm}\\ +\longueur{AECartoucheCorrSep}{4mm}\\ +\longueur{AECartoucheCorrHeight}{6mm}\\ +\longueur{AECartoucheCorrWidth}{50mm}\\ +\longueur{AEManuelWidth}{55mm}\\ +\longueur{AEManuelRightSpace}{1mm}\\ +\longueur{AELogoManuelWidth}{9mm}\\ +\longueur{AfterAEManuelVSpace}{3mm}\\\hline +\titre{Longueurs pour la partie Activités d'approche}\\\hline +\longueur{BeforeActiviteVSpace}{5mm}\\ +\longueur{ActiviteTitleTopHeight}{6mm}\\ +\longueur{ActiviteTitleBottomHeight}{1.5mm}\\ +\longueur{ActiviteTitleLeftSpace}{2mm}\\ +\longueur{ActiviteTitleRightSpace}{1mm}\\ +\longueur{AfterActiviteTitleHSpace}{2mm}\\ +\longueur{AfterActiviteTitleVSpace}{3mm}\\ +\longueur{BeforeActivitePartieVSpace}{1.5mm}\\ +\longueur{AfterActivitePartieVSpace}{1mm}\\\hline +\titre{Longueurs pour la partie Cours - Méthodes}\\\hline +\longueur{BeforeSectionVSpace}{10mm}\\ +\longueur{AfterSectionVSpace}{2mm}\\ +\longueur{SectionNumTitleHSpace}{3mm}\\ +\longueur{SectionCorrectionChassePoint}{-0.25pt}\\ +\longueur{BeforeSubsectionVSpace}{4mm}\\ +\longueur{AfterSubsectionVSpace}{1mm}\\ +\longueur{BeforeDefVSpace}{3mm}\\ +\longueur{AfterDefVSpace}{1.5mm}\\ +\longueur{longueurFrameHSep}{3mm}\\ +\longueur{longueurFrameVSep}{1mm}\\ +\longueur{longueurTitleFrameVSep}{1mm}\\ +\longueur{BeforeRemVSpace}{3mm}\\ +\longueur{AfterRemVSpace}{1.5mm}\\ +\longueur{BeforeExempleVSpace}{4mm}\\ +\longueur{ExempleVRuleWidthFrame}{1.25mm}\\ +\longueur{ExempleHRuleWidthFrame}{0.75mm}\\ +\longueur{ExempleWidthFrame}{15mm}\\ +\longueur{ExempleHeightFrame}{3mm}\\ +\longueur{BeforeMethodeVSpace}{3mm}\\ +\longueur{MethodeTitleLeftSpace}{\cmd{SquareWidth}}\\ +\longueur{MethodeTitleRightSpace}{\cmd{SquareWidth}}\\ +\longueur{MethodeSubtitleLeftSpace}{2mm}\\ +\longueur{AfterMethodeTitleVspace}{1.5mm}\\ +\longueur{MethodeFrameHSep}{3mm}\\ +\longueur{MethodeFrameTopSep}{2mm}\\ +\longueur{MethodeFrameBottomSep}{1mm}\\ +\longueur{ExAppWidthFrame}{30mm}\\ +\longueur{ExAppHeightFrame}{3mm}\\ +\longueur{ExAppDepthFrame}{0.75mm}\\ +\longueur{ExAppCorrWidthFrame}{15mm}\\ +\longueur{ExAppCorrHeightFrame}{3mm}\\ +\longueur{ExAppCorrDepthFrame}{0.75mm}\\ +\longueur{AfterCartoucheHSpace}{1.5mm}\\ +\longueur{AfterExAppMethodeVSpace}{3mm}\\ +\longueur{BeforeProofVSpace}{3mm}\\ +\longueur{AfterProofVSpace}{1.5mm}\\ +\longueur{ProofHeightFrame}{3mm}\\ +\longueur{ProofDepthFrame}{0.75mm}\\ +\longueur{ProofLeftSpace}{1mm}\\ +\longueur{ProofRightSpace}{1.5mm}\\ +\longueur{AfterProofTitleHSpace}{1.5mm}\\\hline +\titre{Longueurs pour les parties Exercices de base et Exercices +d'approfondissement}\\\hline +\longueur{BeforeExercicesTitleVSpace}{3mm}\\ +\longueur{AfterExercicesTitleVSpace}{1.5mm}\\ +\longueur{ExercicesTitleHSep}{3mm}\\ +\longueur{ExercicesTitleVSep}{2mm}\\ +\longueur{BeforeExerciceVSpace}{1.5mm}\\ +\longueur{ExerciceNumFrameWidth}{6mm}\\ +\longueur{ExerciceNumFrameHeight}{3.25mm}\\ +\longueur{ExerciceNumFrameDepth}{0.75mm}\\ +\longueur{ExerciceTextHSep}{2mm}\\ +\longueur{BeforeExercicePartieVSpace}{1.5mm}\\ +\longueur{AfterExercicePartieVSpace}{1mm}\\\hline +\titre{Longueurs pour la partie Je teste mes connaissances}\\\hline +\longueur{AcquisTitleVSpace}{1mm}\\ +\longueur{BeforeQCMAEVSpace}{6mm plus2mm minus2mm}\\ +\longueur{QCMAETitleHeight}{9mm}\\ +\longueur{QCMAETitleWidth}{110mm}\\ +\longueur{QCMAETitleLeftSpace}{17mm}\\ +\longueur{QCMAEManuelWidth}{40mm}\\ +\longueur{QCMAEManuelRightSpace}{1mm}\\ +\longueur{QCMAELogoManuelWidth}{9mm}\\ +\longueur{AfterQCMAEManuelVSpace}{0mm}\\ +\longueur{AfterQCMAETitleVSpace}{5mm plus2mm minus1mm}\\ +\longueur{AfterQCMAETextVSpace}{3mm plus1mm minus1mm}\\ +\longueur{QCMRefHSep}{1pt}\\ +\longueur{QCMExoFrameWidth}{\cmd{SquareWidth}*2}\\ +\longueur{QCMExoFrameTopSep}{1mm}\\ +\longueur{AfterQCMExoFrameHSpace}{2mm}\\ +\longueur{QCMLabelWidth}{6mm}\\ +\longueur{BeforeQCMVSpace}{2mm plus1mm minus1mm}\\ +\longueur{AfterQCMVSpace}{0mm plus1mm}\\ +\longueur{QCMLineWidth}{2mm}\\ +\longueur{QCMFrameSep}{1mm}\\ +\longueur{QCMLineArc}{\cmd{SquareWidth}}\\\hline +\titre{Longueurs pour la partie TP}\\\hline +\longueur{BeforeTPPartieVSpace}{3mm plus1mm minus1mm}\\ +\longueur{AfterTPPartieVSpace}{0mm plus1mm}\\ +\longueur{TPPartieHSep}{2mm}\\ +\longueur{BeforeRecreationVSpace}{6mm}\\ +\longueur{AfterRecreationVSpace}{3mm}\\ +\longueur{BeforeRecreationPartieVSpace}{1.5mm minus 1mm}\\ +\longueur{AfterRecreationPartieVSpace}{1mm minus 0.5mm}\\\hline +\titre{Longueurs pour la liste des méthodes}\\\hline +\longueur{ListeMethodeRuleWidth}{0.2pt}\\ +\longueur{AfterMethodeVSpace}{3pt}\\ +\longueur{TriangleMethodeSize}{1ex}\\\hline +\titre{Longueurs pour la partie corrigés (annexe)}\\\hline +\longueur{CorrigeRuleWidth}{0.2pt}\\ +\longueur{CorrigeHeadFrameWidth}{9mm}\\ +\longueur{CorrigeChapterFrameHeight}{5mm}\\ +\longueur{BeforeCorrigePartieTitleVSpace}{1mm minus 0.5mm}\\ +\longueur{BeforeCorrigeChapterVspace}{3mm plus1mm minus1mm}\\ +\longueur{QCMHSep}{1mm}\\\hline +\titre{Longueurs pour les annexes générales}\\\hline +\longueur{BeforeAnnexeTitleVSpace}{-20mm}\\ +\longueur{AfterAnnexeTitleVSpace}{0mm plus0.5mm}\\ +\longueur{AnnexeSectionRuleWidth}{\cmd{SquareWidth}}\\ +\longueur{AnnexeSectionRuleHSpace}{1mm}\\ +\longueur{BeforeAnnexeSectionVSpace}{5mm}\\ +\longueur{AfterAnnexeSectionVSpace}{2mm}\\ +\longueur{BeforeAnnexePartieVSpace}{1.5mm}\\ +\longueur{AfterAnnexePartieVSpace}{1mm}\\\hline +\titre{Longueurs pour le lexique}\\\hline +\longueur{LexiqueRuleWidth}{0.2pt}\\ +\longueur{AfterFirstLetterVSpace}{2mm}\\ +\longueur{BeforeFirstLetterVSpace}{2mm}\\ +\longueur{FirstLetterFrameHSep}{1mm}\\ +\longueur{AfterEntreeVSpace}{5mm} +\end{longtable} +\endgroup + +\subsection{Commandes de fontes} +\label{subsec-commandes-de-fontes} + +La table~\ref{tab-fontes} pages \pageref{tab-debut-fontes} +à~\pageref{tab-fontes} montre l'ensemble des commandes de fontes +effectuées par la classe. Là encore, on peut modifier ce comportement +mais on ne respecte plus la maquette initiale. + +Les couleurs ne sont pas intégrées dans les commandes de fontes. + +\begingroup +\newcommand*\fonte[2]{% + \cmd{#1} & \texttt{#2} +}% +\newcommand*\taille[2]{% + \cmd{fontsize\{#1\}\{#2\}}% +} +\newcommand*\titre[1]{\multicolumn{2}{c}{\textbf{#1}}} +\label{tab-debut-fontes} +\centering +\begin{longtable}{@{}ll@{}} + \hline + \endfirsthead + \\\hline + \endhead + \\ + \caption{Fontes utilisées dans l'ouvrage} + \label{tab-fontes} + \endlastfoot + \titre{Fontes dans tout le document}\\\hline + \fonte{AlgoFont}{\taille{9.5}{9.5}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{TiceFont}{\taille{9.5}{9.5}\cmd{sffamily}\cmd{bfseries}}\\\hline + \titre{Fontes de la page de titre}\\\hline + \fonte{ThemaTitleFont}{\taille{20}{24}\cmd{sffamily}}\\ + \fonte{ChapterTitleFont}{\taille{40}{40}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{ChapAppFont}{\taille{15}{18}\cmd{sffamily}}\\ + \fonte{ChapterNumFont}{\taille{88}{106}\cmd{sffamily}}\\ + \fonte{PrerequisTitleFont}{\taille{14.4}{17.28}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{PrerequisTextFont}{\taille{9.5}{14.4}\cmd{sffamily}}\\ + \fonte{AETitleFont}{\taille{15}{18}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{AEExoNumFont}{\taille{9.5}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{AECartoucheCorrArrowFont}{\taille{12}{14.4}}\\ + \fonte{AECartoucheCorrVCPFont}{\taille{9.5}{14.4}\cmd{sffamily}}\\ + \fonte{AEManuelFont}{\taille{9.5}{10.5}\cmd{sffamily}}\\ + \fonte{LogoManuelFont}{\taille{9.5}{10.5}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{LogoURLManuelFont}{\taille{9.5}{10.5}\cmd{sffamily}\cmd{bfseries}}\\\hline + \titre{Fontes pour les en-têtes et pied de page}\\\hline + \fonte{HeadTitleFont}{\taille{24}{28.8}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{RoundHeadTitleFont}{\taille{24}{28.8}\cmd{sffamily}\cmd{bfseries}\itshape}\\ + \fonte{FootChapterNumFont}{\taille{12}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{FootTitleHeadFont}{\taille{9.5}{12}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{FootTitleChapterFont}{\taille{9.5}{12}\cmd{sffamily}}\\ + \fonte{FootPageFont}{\taille{9.5}{12}\cmd{sffamily}\cmd{bfseries}}\\\hline + \titre{Fontes pour la partie Activités d'approche}\\\hline + \fonte{ActiviteTitleFont}{\taille{15}{18}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{ActiviteNumFont}{\taille{15}{18}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{ActiviteSubtitleFont}{\taille{15}{18}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{ActivitePartieFont}{\taille{12}{14.4}\cmd{sffamily}\cmd{bfseries}}\\\hline + \titre{Fontes pour la partie Cours - Méthodes}\\\hline + \fonte{SectionNumFont}{\taille{21}{25}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{SectionTitleFont}{\taille{17.28}{21}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{SubsectionNumFont}{\taille{17.28}{21}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{SubsectionTitleFont}{\taille{14.4}{17.28}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{DefTitleFont}{\taille{12}{14.4}\cmd{sffamily}}\\ + \fonte{DefSubtitleFont}{\taille{12}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{RemTitleFont}{\taille{9.5}{14.4}\cmd{scshape}\cmd{bfseries}}\\ + \fonte{ExempleTitleFont}{\taille{9.5}{14.4}\cmd{sffamily}}\\ + \fonte{MethodeTitleFont}{\taille{12}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{MethodeSubtitleFont}{\taille{12}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{MethodeRefExerciceFont}{\taille{9.5}{14.4}\cmd{sffamily}}\\ + \fonte{ExAppTitleFont}{\cmd{normalsize}\cmd{sffamily}}\\ + \fonte{ExAppCorrTitleFont}{\cmd{normalsize}\cmd{sffamily}}\\ + \fonte{ProofTitleFont}{\taille{9.5}{14.4}\cmd{sffamily}}\\\hline + \titre{Fontes pour les parties Exercices de base et Exercices d'approfondissement}\\\hline + \fonte{ExercicesTitleFont}{\taille{14.4}{17.28}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{ExerciceNumFont}{\taille{10.5}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{ExerciceTitleFont}{\taille{10.5}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{ExercicePartieFont}{\taille{10.5}{14.4}\cmd{bfseries}}\\ + \fonte{ExerciceRefMethodeFont}{\taille{9.5}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{ExercicePageRefMethodeFont}{\taille{9.5}{14.4}\cmd{sffamily}}\\\hline + \titre{Fontes pour la partie Je teste mes connaissances}\\\hline + \fonte{AcquisTitleFont}{\taille{17.28}{17.28}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{AcquisTextFont}{\taille{9.5}{14.4}\cmd{sffamily}}\\ + \fonte{QCMAETitleFont}{\taille{20}{20}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{QCMAEManuelFont}{\taille{9.5}{10.5}\cmd{sffamily}}\\ + \fonte{QCMAETextAfterTitleFont}{\cmd{bfseries}}\\ + \fonte{QCMExoNumFont}{\taille{9.5}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{QCMItemNumFont}{\taille{9.5}{14.4}\cmd{sffamily}\cmd{bfseries}}\\\hline + \titre{Fontes pour la partie TP}\\\hline + \fonte{TPPartieFont}{\taille{12}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{RecreationFont}{\taille{20}{20}\scriptfamily\cmd{bfseries}}\\ + \fonte{RecreationTitleFont}{\taille{12}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{RecreationPartieFont}{\taille{10}{14.4}\scshape\cmd{bfseries}}\\ + \fonte{RecreationPartieTitleFont}{\taille{10}{14.4}\cmd{bfseries}}\\\hline + \titre{Fontes pour la liste des méthodes}\\\hline + \fonte{ListeMethodeChapterFont}{\taille{40}{40}\cmd{sffamily}}\\ + \fonte{ListeMethodeTitleFont}{\taille{12}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{ListeMethodePageFont}{\taille{12}{14.4}\cmd{sffamily}\cmd{bfseries}}\\\hline + \titre{Fontes pour la partie Corrigés (annexe)}\\\hline + \fonte{CorrigeTitleFont}{\taille{40}{40}\cmd{sffamily}}\\ + \fonte{CorrigeChapterFont}{\taille{12}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{CorrigePartieFont}{\taille{11}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{CorrigeNumExerciceFont}{\taille{9.5}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{CorrigeQCMItemNumFont}{\taille{9.5}{14.4}\cmd{sffamily}}\\\hline + \titre{Fontes pour les annexes générales}\\\hline + \fonte{FootAnnexeTxtFont}{\taille{11}{14.4}\cmd{sffamily}}\\ + \fonte{FootAnnexePageFont}{\taille{11}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{AnnexeTitleFont}{\taille{35}{35}\cmd{sffamily}}\\ + \fonte{AnnexeSectionTitleFont}{\taille{14.4}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{ProprieteFont}{\taille{10}{14.4}\cmd{sffamily}}\\ + \fonte{NumProprieteFont}{\taille{10}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{AnnexePartieFont}{\taille{10.5}{14.4}\cmd{bfseries}}\\\hline + \titre{Fontes pour le lexique}\\\hline + \fonte{LexiqueTitleFont}{\taille{50}{50}\cmd{sffamily}}\\ + \fonte{FirstLetterFont}{\taille{16}{16}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{LexiqueEntreeFont}{\taille{12}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{LexiqueFont}{\cmd{sffamily}\upshape\cmd{bfseries}} +\end{longtable} +\endgroup + +\subsection{Textes fixes} +\label{subsec-textes-fixes} +La classe définit tous les textes fixes dans des macros. Cela rend +très facile la modification de ces textes mais, encore une fois, on +ne respecte alors plus la maquette initiale. La +table~\ref{tab-textes-fixes} indique la liste de tous ces textes +fixes. + +\begingroup +\newcommand*\texte[2]{% + \cmd{#1} & \texttt{#2} +}% +\renewcommand*\textcolor[2]{% + \cmd{textcolor\{#1\}\{#2\}}% +} +\newcommand*\titre[1]{\multicolumn{2}{c}{\textbf{#1}}} +\label{tab-debut-textes-fixes} +\centering +\begin{longtable}{@{}lp{10cm}@{}} + \hline + \endfirsthead + \\\hline + \endhead + \\ + \caption{Textes fixes utilisées dans l'ouvrage} + \label{tab-textes-fixes} + \endlastfoot + \texte{StringColitemize}{colitemize}\\ + \texte{StringColenumerate}{colenumerate}\\ + \texte{StringPrerequis}{Connaissances du coll\`ege + n\'ecessaires \`a ce chapitre}\\ + \texte{StringActivitesApproche}{Activit\'es d'approche}\\ + \texte{StringCoursMethodes}{Cours~-~M\'ethodes}\\ + \texte{StringExercicesBase}{S'entra\^iner}\\ + \texte{StringExercicesAppr}{Approfondir}\\ + \texte{StringTestConnaissances}{Je teste mes connaissances}\\ + \texte{StringConnaissances}{Auto-\'evaluation QCM}\\ + \texte{StringTravauxPratiques}{Travaux pratiques}\\ + \texte{StringAE}{Auto-\'evaluation}\\ + \texte{StringVoirCorriges}{Voir solutions p.}\\ + \texte{StringManuel}{Des ressources num\'eriques pour pr\'eparer + le chapitre sur + \textcolor{U4}{\cmd{LogoURLManuelFont} manuel.sesamath.net}}\\ + \texte{StringALGO}{ALGO}\\ + \texte{StringTICE}{INFO}\\ + \texte{StringRecreation}{R\'ecr\'eation, \'enigmes}\\ + \texte{StringAcquisTitle}{\`A la fin de ce chapitre, je dois + \^etre capable de\,:}\\ + \texte{StringQCMAE}{QCM d'auto-\'evaluation}\\ + \texte{StringQCM}{QCM}\\ + \texte{StringChapitre}{Chapitre}\\ + \texte{StringEnigme}{\'Enigme}\\ + \texte{StringPropriete}{Propri\'et\'e}\\ + \texte{StringPROPRIETE}{PROPRI\'ET\'E}\\ + \texte{StringDEFINITION}{D\'EFINITION}\\ + \texte{StringTHEOREME}{TH\'EOR\`EME}\\ + \texte{StringLexique}{Lexique}\\ + \texte{LogoManuel}{\textcolor{U4}{\cmd{LogoManuelFont} @}}\\ + \texte{StringDEBAT}{D\'EBAT}\\ + \texte{StringACTIVITE}{ACTIVIT\'E}\\ + \texte{StringTP}{TP}\\ + \texte{StringExemple}{Exemple}\\ + \texte{StringCorrection}{Correction}\\ + \texte{StringMETHODE}{M\'ETHODE}\\ + \texte{StringPREUVE}{PREUVE}\\ + \texte{StringMethode}{M\'ethode}\\ + \texte{StringExApp}{Exercice d'application}\\ + \texte{StringPartie}{Partie}\\ + \texte{StringListeMethode}{Liste des m\'ethodes}\\ + \texte{StringCorriges}{Solutions}\\ + \texte{StringListeMethodeF}{Fonctions}\\ + \texte{StringListeMethodeG}{G\'eom\'etrie}\\ + \texte{StringListeMethodeSP}{Stat. et probabilit\'es} +\end{longtable} +\endgroup +\begin{attention} + Les macros \cmd{StringColitemize}, \cmd{StringColenumerate} et + \cmd{StringQCM} ne doivent surtout pas être modifiées sous peine + d'entraîner des erreurs de compilation. +\end{attention} + +\section{Première page d'un chapitre} +\label{sec-premiere-page-d-un-chapitre} + +La première page de chaque chapitre est dédiée à un rappel sur les +connaissances de collège (par défaut) nécessaire pour ce chapitre et +d'une série de petits exercices appelée \og Auto-évaluation \fg{}. + +\begin{attention} + La maquette est très stricte à ce niveau: il faut que ces deux + éléments tiennent sur une page et la remplissent au mieux. La classe + pose un ressort vertical infini au-dessus du cadre bleu avec son + titre rouge et entre ce cadre bleu et la partie Auto-évaluation. Il + revient à l'auteur de remplir cet espace au mieux. De façon + générale, cette maquette interdit toute coupure de page au niveau + des cadres et d'un grand nombre de structures. +\end{attention} +Le cadre bleu avec le titre en rouge est composé avec l'environnement +\environ{prerequis}. Il est destiné à indiquer quelles sont les +connaissances des années antérieures que l'élève est supposé +maîtriser. Comme la maquette traite de livres de seconde, le texte par +défaut est \og Connaissances du collège nécessaires à ce chapitre +\fg{}. On peut modifier ce titre de deux façons : +\DeclareProofLike{code}{Le code} +\DeclareProofLike{result}{donne le résultat:} +\begin{syntaxe} + + soit de façon locale avec un argument optionnel + \begin{code} +\begin{verbatim} +\begin{prerequis}[Nouveau titre] + ... +\end{prerequis} +\end{verbatim} +\end{code} + soit de façon globale en modifiant la macro + \cmd{StringPrerequis}. + \begin{code} +\begin{verbatim} +\renewcommand*\StringPrerequis{Nouveau titre} +\end{verbatim} +\end{code} +\end{syntaxe} + +Le titre est écrit en rouge au-dessus d'un cadre bleu et le contenu de +l'environnement sera composé en double colonne à l'intérieur du cadre +bleu. La maquette prévoit que la liste des connaissances soit exposée +avec un environnement \environ{itemize}. +\begin{remarque} + L'environnement \environ{itemize} doit se situer à l'intérieur de + l'environnement \environ{prerequis}. La classe interdit + l'utilisation des listes \environ{itemize} ou \environ{enumerate} en + dehors de certains endroits. + + De plus, les puces et les couleurs utilisées dépendront également + de l'endroit où on utilise ces listes. Pour les couleurs, on se + référera au tableau~\ref{tab-couleurs}. Pour l'aspect, on dresse la + liste de toutes les listes possibles aux pages~\pageref{liste-debut-listes}-\pageref{liste-fin-listes}. +\end{remarque} + +À la suite des prérequis, on trouve des exercices +d'auto-évaluation. Ceux-ci sont composés dans l'environnement +\environ{autoeval}. Chaque exercice est composé dans un environnement +\environ{exercice}. La correction sera indiquée immédiatement après +dans un environnement \environ{corrige}. Par exemple, les exercices de +la premières page de ce chapitre ont été composés de la façon suivante : +\begin{syntaxe} +\begin{verbatim} +\begin{autoeval} + \begin{multicols}{2} + \begin{exercice} + Serez-vous capable de lire ce manuel en entier en moins de + deux heures ? + \end{exercice} + \begin{corrige} + Soit vous disposez d'une capacité hors-norme pour la vitesse de + lecture, soit il ne faut pas trop se faire d'illusion et il est + impossible d'assimiler l'ensemble des fonctionnalités en moins + de deux heures. + \end{corrige} + ... + \end{multicols} +\end{autoeval} +\end{verbatim} + et on peut effectivement voir page~\pageref{toutes-solutions} le texte + de la solution au premier exercice. + + Une présentation plus en détail des solutions des exercices sera + donnée à la section~\ref{sec-solutions} + page~\pageref{sec-solutions}. +\end{syntaxe} + +\section{Activités d'approche} +\label{sec-activites-d-approche} +La partie Activités d'approche est censée être une succession de +débats et d'activités. Les débats sont définis par l'environnement +\environ{debat} et les activités par l'environnement +\environ{activite}. + +La syntaxe est la même pour ces deux environnements, à savoir la +possibilité d'indiquer deux arguments optionnels. Le premier argument +indique le titre du débat ou de l'activité et le deuxième argument +optionnel indique la présence d'un logo à droite du titre. Si les +arguments optionnels ne sont pas spécifiés, l'élément correspondant +n'existera pas (pas de titre ou pas de logo). + +La classe ne prévoit que deux logos\label{logos} : le logo pour les +algorithmes avec la commande \cmd{algo} qui donne le résultat \algo{} +et le logo pour les tice avec la commande \cmd{tice} qui donne le +résultat \tice. On peut trouver l'offre un peu limitée et vouloir +inventer d'autre logo. Si le logo doit uniquement être un texte dans +un cartouche, autant être homogène dans la présentation et se servir +de la trame générale de la classe. Celle-ci définit \cmd{algo} de la +façon suivante : +\begin{verbatim} +\newcommand*\algo{% + \psframebox[framesep=1pt,linewidth=\LogoLineWidth, + linecolor=AlgoLineColor, fillstyle=solid, + fillcolor=AlgoBkgColor, framearc=0.6]{% + \AlgoFont + \textcolor{AlgoTextColor}{\StringALGO}% + } +} +\end{verbatim} +\clearpage +La commande \cmd{AlgoFont} vaut +\cmd{fontsize\{9.5\}\{9.5\}}\cmd{sffamily}\cmd{bfseries} comme +l'indique le tableau~\ref{tab-fontes} pages~\pageref{tab-debut-fontes} +à~\pageref{tab-fontes}. Les définitions des couleurs sont indiquées +dans le tableau\ref{tab-couleurs} pages~\pageref{tab-debut-couleur} +à~\pageref{tab-couleurs}. Les éléments les plus susceptibles d'être +modifiées sont les couleurs et, évidemment, le texte à l'intérieur du +cartouche. + +Voici un exemple de syntaxe avec un titre et un logo. + +\begin{code} +\begin{verbatim} +\begin{activite}[Titre de l'activité][\tice] + Texte de l'activité... +\end{activite} +\begin{debat}[Titre du débat][\algo] + Texte du débat... +\end{debat} +\end{verbatim} +\end{code} +\begin{result} + +\end{result} +\begin{activite}[Titre de l'activité][\tice] + Texte de l'activité... +\end{activite} +\begin{debat}[Titre du débat][\algo] + Texte du débat... +\end{debat} + +En fait, ces environnements sont définies par la classe en utilisant +la commande \cmd{DeclareActivityLike}. Cette commande demande cinq +arguments qui sont : +\setlist{AE}% +\begin{enumerate} +\item le nom de l'environnement +\item Le titre de l'environnement (dans le cartouche) +\item La couleur du fond de cartouche +\item La couleur du trait sous le cartouche +\item La couleur du titre de l'environnement (et du losange du numéro) +\end{enumerate} +Ainsi, on a le code suivant dans la classe : +\begin{verbatim} +\DeclareActivityLike{debat}{\StringDEBAT} + {ActiviteDebatTopColor} + {ActiviteDebatBottomColor} + {ActiviteTitleColor} +\DeclareActivityLike{activite}{\StringACTIVITE} + {ActiviteActiviteTopColor} + {ActiviteActiviteBottomColor} + {ActiviteTitleColor} +\end{verbatim} +\begin{methode*1}[Créer un nouvel environnement dans les pages Activités] + +\exercice \begin{code} +\begin{verbatim} +\DeclareActivityLike{nouveau}{DÉCOUVERTE}{lime}{orange}{red} +\begin{nouveau} + Un nouvel environnement de type activité +\end{nouveau} +\end{verbatim} +\end{code} + +\correction \begin{result} + + \end{result} + +\DeclareActivityLike{nouveau}{DÉCOUVERTE}{lime}{orange}{red} +\begin{nouveau} + Un nouvel environnement de type activité +\end{nouveau} + +\end{methode*1} + +À l'intérieur des activités et des débats, on peut utiliser les listes et +les parties, on ne peut pas définir d'exercice. + +\section{Cours-Méthodes} +\label{sec-cours-methodes} +La partie cours et méthodes est activée avec la commande +\cmd{cours}. +\renewcommand{\StringDOCUMENTATION}{Sectionnement} +\begin{documentation} +Cette partie est composée de sections avec des +sous-sections éventuelles. + +Les sections et les sous-sections utilisent les commandes standards +\cmd{section} et \cmd{subsection} avec leur syntaxe standard. On a +même le droit à la version étoilée de ces commandes bien que les +versions étoilées et non étoilées soient strictement équivalentes pour +la classe \class{sesamanuel}. De même, il y a possibilité d'indiquer un +argument optionnel mais celui-ci n'a aucun rôle\ldots{} du moins dans +la version actuelle de la classe ! + +La classe interdit toutes les autres commandes de sectionnement. Ainsi +les commandes \cmd{part}, \cmd{subsubsection}, \cmd{paragraph} et +\cmd{subparagraph} donneront une erreur de compilation. + +Cette documentation utilise essentiellement la partie Cours-Méthodes et les +sections y sont utilisées. +\end{documentation} + +Pour les sous-sections, le code + +\begin{code} +\begin{verbatim} +\subsection{Titre de sous-section} +\end{verbatim} +\end{code} +\begin{result} + +\end{result} + +\subsection{Titre de sous-section} +\vfill\clearpage +\begin{definition}[Titre optionnel] +Dans le cours, on utilise assez souvent des cadres du type +définition (comme ici par exemple). +\end{definition} + +\begin{code} +\begin{verbatim} +\begin{definition}[Titre optionnel] +Dans le cours, on utilise assez souvent des cadres du type +définition (comme ici par exemple). +\end{definition} +\end{verbatim} +\end{code} + +génère la définition ci-dessus. +\begin{remarque} +On peut voir que le titre de la définition est spécifiée avec un +argument optionnel. Si celui-ci n'existe pas, il n'y a ni titre, ni + deux points après le mot \og DÉFINITION \fg{}. + +En réalité, la classe utilise la commande \cmd{DeclareDefLike} pour +définir plusieurs environnements de ce type. Cette commande demande +deux arguments : le premier est le nom de l'environnement et le +deuxième est le mot qui sera utilisé comme titre principal. La classe +définit ainsi trois environnements avec le code : +\begin{verbatim} +\DeclareDefLike{definition}{\StringDEFINITION} +\DeclareDefLike{propriete}{\StringPROPRIETE} +\DeclareDefLike{theoreme}{\StringTHEOREME} +\end{verbatim} +Il est donc facile de se créer d'autres environnements de ce type en +cas de besoin. +\end{remarque} + +\renewcommand{\StringDOCUMENTATION}{Remarque} +\begin{documentation} +À coté des environnements de type définition, on a des environnements +de type remarque. +\end{documentation} +\begin{code} +\begin{verbatim} +\begin{remarque} + Ceci est une remarque. +\end{remarque} +\end{verbatim} +\end{code} +\begin{result} + +\end{result} + +\begin{remarque} + Ceci est une remarque. +\end{remarque} + +Comme pour les environnements de type définition, les environnements +de type remarque sont définis en utilisant une commande générale, en +l'occurrence la commande \cmd{DeclareRemLike}. Cette commande ne +demande que deux paramètres: le nom de l'environnement et le titre de +l'environnement. La classe utilise cette commande pour définir un +certain nombre d'environnement avec le code : +\begin{verbatim} +\DeclareRemLike{remarque}{Remarque} +\DeclareRemLike{remarques}{Remarques} +\DeclareRemLike{notation}{Notation} +\DeclareRemLike{notations}{Notations} +\DeclareRemLike{vocabulaire}{Vocabulaire} +\end{verbatim} + + +\renewcommand{\StringDOCUMENTATION}{Preuve} +\begin{documentation} +Le dernier type d'environnement de ce type est l'environnement +\environ{preuve} qui sert à introduire les démonstrations. Sa syntaxe +est aussi simple que celle des environnements de type remarque. +\end{documentation} +\begin{code} +\begin{verbatim} +\begin{preuve} + Ceci est une preuve\par Deuxième ligne de la preuve +\end{preuve} +\end{verbatim} +\end{code} +donne le résultat +\begin{preuve} + Ceci est une preuve\par Deuxième ligne de la preuve +\end{preuve} + +Comme pour les autres environnements, cet environnement est créé en +utilisant une commande. Ici, c'est la commande +\cmd{DeclareProofLike}. Elle demande deux arguments qui sont le nom de +l'environnement et son titre. La classe l'utilise uniquement pour +définir l'environnement \environ{preuve} avec le code +\begin{verbatim} +\DeclareProofLike{preuve}{\StringPREUVE} +\end{verbatim} + +Elle a été utilisé pour créer un environnement \environ{code} pour mettre en valeur les exemples de code dans cette documentation. + +\renewcommand{\StringDOCUMENTATION}{Exemple} +\begin{documentation} +On utilise aussi deux environnements permettant d'afficher un exemple +avec sa correction associée. Le premier compose l'exemple et la +correction en vis-à-vis et le second compose l'exemple et la +correction l'une au-dessous de l'autre. La correction est introduite +avec la macro \cmd{correction}. L'environnement qui compose en +vis-à-vis est \environ{exemple} et celui qui compose verticalement est +\environ{exemple*1}. +\end{documentation} +\begin{code} +\begin{multicols}{2} +\begin{verbatim} +\begin{exemple} + Texte de l'exemple + \correction + Texte de la correction +\end{exemple} +\begin{exemple*1} + Texte de l'exemple + \correction + Texte de la correction +\end{exemple*1} +\end{verbatim} +\end{multicols} +\end{code} +donne le résultat +\begin{exemple} + Texte de l'exemple + \correction + Texte de la correction +\end{exemple} +\begin{exemple*1} + Texte de l'exemple + \correction + Texte de la correction +\end{exemple*1} + +Le premier environnement accepte un argument optionnel pour indiquer +le rapport de l'empagement à disposition affecté au texte de +l'exemple. Par défaut, ce rapport vaut \key{0.4}. En jouant avec ce +rapport, on peut équilibrer un peu plus la hauteur des deux colonnes +dans certaines circonstances. + + +\renewcommand{\StringDOCUMENTATION}{Méthode} +\begin{documentation} +La dernière structure complexe rencontrée dans la partie Cours et +Méthode est celle consacrée aux méthodes. La classe \class{sesamanuel} +propose une gestion très fine de cet élément. Les méthodes +présentent : +\begin{itemize} +\item un titre (optionnel mais présent la plupart du temps) ; +\item un texte introductif (optionnel) ; +\item un ou deux exercices d'application ; +\item une ou deux corrections correspondantes; +\end{itemize} +\end{documentation} + +Il y a quatre types possibles de présentation +représentés par quatre environnements différents : +\begin{itemize} +\item L'environnement \environ{methode} qui compose la méthode avec + l'exercice d'application en vis-à-vis de sa correction. +\item L'environnement \environ{methode*1} qui compose l'ensemble de la + méthode sur une seule colonne de la largeur d'empagement. +\item L'environnement \environ{methode*2} qui compose une méthode avec + l'exercice d'application et sa correction sur deux colonnes (mais + pas nécessairement en vis-à-vis). +\item L'environnement \environ{methode*2*2} qui compose une méthode + avec deux colonnes contenant chacune un exercice d'application et sa + correction au-dessous. +\end{itemize} + +\begin{code}\label{exemple-methode-debut} +\begin{verbatim} +\begin{methode}[Titre de la méthode] + Texte introductif + \exercice + Texte de l'exercice + \correction + Texte de la correction sur un minimum de trois lignes pour faire la + différence entre vis-à-vis et double colonne. C'est l'endroit de la + coupure qui va différer. +\end{methode} +\end{verbatim} +\end{code} + \begin{result} + + \end{result} +\begin{methode}[Titre de la méthode] + Texte introductif + \exercice + Texte de l'exercice + \correction + Texte de la correction sur un minimum de trois lignes pour faire la + différence entre vis-à-vis et double colonne. C'est l'endroit de la + coupure qui va différer. +\end{methode} +\clearpage +\begin{code} +\begin{verbatim} +\begin{methode*1}[Titre de la méthode] + [même corps que ci-dessus] +\end{methode*1} +\end{verbatim} +\end{code} +\begin{result} + +\end{result} +\begin{methode*1}[Titre de la méthode] + Texte introductif + \exercice + Texte de l'exercice + \correction + Texte de la correction sur un minimum de trois lignes pour faire la + différence entre vis-à-vis et double colonne. C'est l'endroit de la + coupure qui va différer. +\end{methode*1} + +\begin{code} +\begin{verbatim} +\begin{methode*2}[Titre de la méthode] + [même corps que ci-dessus] +\end{methode*2} +\end{verbatim} +\end{code} +\begin{result} + +\end{result} +\begin{methode*2}[Titre de la méthode] + Texte introductif + \exercice + Texte de l'exercice + \correction + Texte de la correction sur un minimum de trois lignes pour faire la + différence entre vis-à-vis et double colonne. C'est l'endroit de la + coupure qui va différer. +\end{methode*2} +et on voit bien la différence entre les environnements +\environ{methode} et \environ{methode*2} : le premier composant en +vis-à-vis alors que le second fait une composition sur deux colonnes +en équilibrant celles-ci. +\vfill\clearpage +Le dernier environnement de type \og méthode\fg{} permet de composer +deux exercices avec les deux corrections le tout sur deux colonnes. + +\begin{code}\label{code-methode-exemple} +\begin{verbatim} +\begin{methode*2*2}[Dernière méthode\MethodeRefExercice{exo-exemple}] + \exercice + \label{methode-exemple} + Texte du premier exercice + \correction + Correction du premier exercice + \exercice + Texte du deuxième exercice + \correction + Texte de la correction du deuxième exercice sur un minimum de trois + lignes pour faire la différence entre vis-à-vis et double + colonne. C'est l'endroit de la coupure qui va différer. +\end{methode*2*2} +\end{verbatim} +\end{code} +\begin{result} + +\end{result} + +\begin{methode*2*2}[Dernière méthode\MethodeRefExercice{exo-exemple}] + \exercice + \label{methode-exemple} + Texte du premier exercice + \correction + Correction du premier exercice + \exercice + Texte du deuxième exercice + \correction + Texte de la correction du deuxième exercice sur un minimum de trois + lignes pour faire la différence entre vis-à-vis et double + colonne. C'est l'endroit de la coupure qui va différer. +\end{methode*2*2} +\label{exemple-methode-fin} + +\begin{remarque} +Il est possible qu'une méthode soit directement reliée à un exercice +qui apparaîtra plus loin (dans la partie Exercices de base ou +Exercices d'approfondissement). \\Dans ce cas, on peut indiquer une +référence à cet exercice à l'intérieur du titre de la méthode avec +la macro \cmd{MethodeRefExercice} qui va prendre en argument +l'étiquette indiquée (avec un \cmd{label}) au niveau de l'exercice en +question. + +De plus, il est fortement recommandé que l'exercice fasse +référence à la méthode avec la macro \cmd{ExerciceRefMethode} qui +prendra en argument l'étiquette indiquée au niveau de la méthode +(toujours avec la commande \cmd{label}). + +On reverra ce point dans la +section suivante avec un exemple complet. + +La macro +\cmd{MethodeRefExercice} peut être étoilée mais là aussi, on reverra +cela avec les exercices. +\end{remarque} +\clearpage +\section{Exercices d'entraînement} +\label{sec-exercices-d-entrainement} +Les exercices sont répartis en exercices d'entraînement et en +exercices d'approfondissement. + +La partie Exercices d'entraînement est +introduite par la macro \cmd{exercicesbase}. La maquette demande à ce +que les exercices soient composés en double-colonne avec un filet de +séparation d'une certaine épaisseur et d'une certaine couleur. Tout +ceci est réalisé en plaçant les exercices dans l'environnement +\environ{colonne*exercice}. + +On peut regrouper les exercices par sous-thèmes avec la commande +\cmd{serie} qui demande un argument obligatoire: le thème des +exercices. + +Les exercices proprement dits seront spécifiés à l'intérieur d'un +environnement \environ{exercice} qui a exactement la même syntaxe que +pour la première page d'un chapitre, c'est-à-dire un premier argument +optionnel pour un titre d'exercice et un deuxième argument optionnel +pour un logo. + +L'environnement étoilé est normalement destiné aux exercices +corrigés. En réalité, il ne fait que donner au cadre du numéro +d'exercice une autre couleur de fond, c'est la présence de +l'environnement \environ{corrige} qui fera qu'il y aura une +correction. Ces corrections, ainsi que toutes les autres corrections +de toutes les autres parties des chapitres seront affichés dans la +partie Solutions (voir section~\ref{sec-solutions} +page~\pageref{sec-solutions}). + +\begin{code} +\begin{verbatim} +\begin{colonne*exercice} +\serie{titre de série} +\begin{exercice}[Exercice sans correction][\tice] + prouver que $1=1$ +\end{exercice} + +\begin{exercice*}[Exercice avec correction] + Prouver que $2=2$ +\end{exercice*} +\begin{corrige} + On sait que $1=1$ avec l'exercice précédent donc $1+1=1+1$, + c'est-à-dire $2=2$. +\end{corrige} + +\begin{exercice}[Lien avec une méthode \ExerciceRefMethode{methode-exemple}] + \label{exo-exemple} + Test pour avoir un lien avec une méthode. +\end{exercice} +\end{colonne*exercice} +\end{verbatim} +\end{code} +\begin{result} + +\end{result} +\begingroup +\simuleexercicesbase +\begin{colonne*exercice} +\serie{titre de série} +\begin{exercice}[Exercice sans correction][\tice] + prouver que $1=1$ +\end{exercice} + +\begin{exercice*}[Exercice avec correction] + Prouver que $2=2$ +\end{exercice*} +\begin{corrige} + On sait que $1=1$ avec l'exercice précédent donc $1+1=1+1$, + c'est-à-dire $2=2$. +\end{corrige} + +\begin{exercice}[Lien avec une méthode \ExerciceRefMethode{methode-exemple}] + \label{exo-exemple} + Test pour avoir un lien avec une méthode. +\end{exercice} +\end{colonne*exercice} +\endgroup + +\begin{remarque} +\begin{itemize} + \item +L'exemple montre également le jeu de ping-pong avec les +méthodes. L'exercice~\ref{exo-exemple} fait référence à la +méthode~\ref{methode-exemple} page~\pageref{methode-exemple} grâce à +la commande \cmd{ExerciceRefMethode}. En revenant au code de cette +méthode, on peut voir que cette dernière fait référence à cet exercice +grâce à la commande \cmd{MethodeRefExercice} (voir +le code page~\pageref{code-methode-exemple}). + +\item À l'intérieur d'un exercice, il est possible d'utiliser la macro +\cmd{partie}. Cette commande accepte un argument optionnel qui sera le +titre de la partie. +\end{itemize} +\end{remarque} + +\section{Exercices d'approfondissement} +\label{sec-exercices-d-approfondissement} +La partie Exercices d'approfondissement est introduite par la commande +\cmd{exercicesappr}. Cela va commencer une nouvelle page et modifier +le titre des en-têtes mais tout le reste sera strictement identique à +la partie Exercices de base. +\section{Récréation, énigmes} +\label{sec-recreation-enigmes} +À la suite des exercices d'approfondissement (ou des travaux +pratiques), on peut placer un ou plusieurs exercices plus délicats ou +sortant de l'ordinaire qu'on regroupe dans une partie Récréation, +énigmes. Contrairement aux autres parties des chapitres, cette partie +peut être introduite de deux façons différentes. Soit avec la commande +\cmd{recreation}, soit avec la commande \cmd{Recreation}: on notera +la première lettre capitale ou non. + +La version \cmd{recreation} ne provoque pas de coupure de page et pas +d'en-tête particulière. Un bandeau similaire à ce qu'on trouve en +en-tête sera composé en milieu de page. +\begin{code} +\begin{verbatim} +\recreation +\end{verbatim} +\end{code} +\begin{result} + +\end{result} + +\recreation + +La version \cmd{Recreation} (avec sa première lettre capitale) +provoque un changement de page et un changement d'en-tête de page +(ainsi qu'un changement de couleur de pied de page) comme toutes les +autres commandes de début de partie de chapitre. + +Dans la partie Récréation-énigmes, on utilise l'environnement +\environ{enigme} pour spécifier les textes d'exercices. Ceux-ci ne sont +pas numérotés donc cette partie est plutôt destinée à recevoir un seul +exercice. C'est encore plus vrai avec la commande \cmd{recreation} qui +ne provoque pas de changement d'en-tête et qui est donc vraiment +destiné à recevoir du matériel sur le reste de la page, pas sur la +page suivante. + +\clearpage +\section{Je teste mes connaissances} +\label{sec-je-teste-mes-connaissances} +La partie Je teste mes connaissances est introduite par la commande +\cmd{connaissances}. Comme les autres commandes de partie, elle +provoque un saut de page et la modification des en-têtes et pieds de +page. +\renewcommand{\StringDOCUMENTATION}{\`A la fin du chapitre je dois être capable de} +\begin{documentation} +Dans cette partie, on attend une première zone où on indique les +points devant être acquis en fin de leçon puis une seconde zone avec +des QCM d'auto-évaluation. + +La zone indiquant les points devant être acquis est indiquée avec +l'environnement \environ{acquis}. Le corps de cet environnement liste +ces points (normalement dans un environnement \environ{itemize} +éventuellement plusieurs environnements emboîtés). +\end{documentation} + +\renewcommand{\StringDOCUMENTATION}{Le Q.C.M.} +\begin{documentation} +\begin{itemize} +\item La zone des QCM d'auto-évaluation est introduite par la commande +\cmd{QCMautoevaluation} qui demande un argument obligatoire pour un +texte informatif général. C'est normalement un texte du type \og Pour +chaque question, plusieurs réponses sont proposées. Déterminer celles +qui sont correctes. \fg + +\item À l'intérieur de cet environnement, on peut définir des cadres à +l'intérieur desquels on regroupera un texte introductif et plusieurs +QCM apparentés. +\begin{itemize} +\item Le cadre extérieur se réalise en appelant +l'environnement \environ{QCM}, le texte introductif commun est composé +avec l'environnement \environ{EnonceCommunQCM} et les QCM seront tous +placés dans un environnement \environ{GroupeQCM}. Dans ce dernier +environnement, les QCM et leurs corrigés seront saisis comme +précédemment, c'est-à-dire avec les environnements \environ{exercice} +et \environ{corrige}. + +\item Les QCM sont des exercices un peu particuliers et certaines commandes +sont faites pour eux. On trouve l'environnement \environ{ChoixQCM} qui +va se comporter comme une liste numérotée en colonne avec la commande +\cmd{item} pour indiquer les différentes propositions. Elle demande un +argument obligatoire qui est le nombre de colonnes. +\item Pour les +corrections, on trouve la commande \cmd{reponseQCM} qui demande un +argument obligatoire donnant la liste des réponses justes. Si +plusieurs réponses sont justes, on donnera la liste des lettres sans +séparateur. +\end{itemize} +\end{itemize} +\end{documentation} +Pour illustrer toutes ces informations:\vspace{-\baselineskip} +\begin{code} +\begin{verbatim} +\connaissances +\begin{acquis} + \begin{itemize} + \item Premier point à connaître. + \item Autre point à savoir faire. + \item Dernier point devant être su. + \end{itemize} +\end{acquis} +\QCMautoevaluation{texte introductif} +\begin{QCM} + \begin{EnonceCommunQCM} + Pour les questions \RefQCM{premier-qcm} à + \RefQCM{deuxieme-qcm}, $f$ désigne une + fonction affine. + \end{EnonceCommunQCM} + \begin{GroupeQCM} + \begin{exercice}\label{premier-qcm} + La courbe de $f$ est + \begin{ChoixQCM}{3} + \item une droite + \item une parabole + \item autre + \end{ChoixQCM} + \end{exercice} + \begin{corrige} + \reponseQCM{a} + \end{corrige} + \begin{exercice}\label{deuxieme-qcm} + $f(3)$ + \begin{ChoixQCM}{3} + \item vaut la moitié de $f(6)$ + \item vaut le double de $f(6)$ + \item on ne peut pas savoir + \end{ChoixQCM} + \end{exercice} + \begin{corrige} + \reponseQCM{c} + \end{corrige} + \end{GroupeQCM} +\end{QCM} +\end{verbatim} +\end{code} +Le résultat est indiqué page suivante : + +\begingroup +\connaissances +\begin{acquis} + \begin{itemize} + \item Premier point à connaître. + \item Autre point à savoir faire. + \item Dernier point devant être su. + \end{itemize} +\end{acquis} +\QCMautoevaluation{texte introductif} +\begin{QCM} + \begin{EnonceCommunQCM} + Pour les questions \RefQCM{premier-qcm} à + \RefQCM{deuxieme-qcm}, $f$ désigne une + fonction affine. + \end{EnonceCommunQCM} + \begin{GroupeQCM} + \begin{exercice}\label{premier-qcm} + La courbe de $f$ est + \begin{ChoixQCM}{3} + \item une droite + \item une parabole + \item autre + \end{ChoixQCM} + \end{exercice} + \begin{corrige} + \reponseQCM{a} + \end{corrige} + \begin{exercice}\label{deuxieme-qcm} + $f(3)$ + \begin{ChoixQCM}{3} + \item vaut la moitié de $f(6)$ + \item vaut le double de $f(6)$ + \item on ne peut pas savoir + \end{ChoixQCM} + \end{exercice} + \begin{corrige} + \reponseQCM{c} + \end{corrige} + \end{GroupeQCM} +\end{QCM} +\endgroup + +\newpage +\section{Travaux pratiques} +\label{sec-travaux-pratiques} +La partie concernant les travaux pratiques est introduite avec la +macro \cmd{TravauxPratiques}. \\Elle se compose uniquement de travaux +pratiques. Ceux-ci sont indiqués grâce à l'environnement +\environ{TP}. \\Il s'agit d'un environnement qui fonctionne exactement +comme les activités et les débats (voir +section~\ref{sec-activites-d-approche} +page~\pageref{sec-activites-d-approche}). + +Tout ce qui a été dit pour les activités reste valable. En +particulier, la possibilité d'avoir un titre avec le premier argument +optionnel de l'environnement et un logo avec le second argument +optionnel. On peut même se créer de nouveaux environnements avec +\cmd{DeclareActivityLike} si on trouve que le titre \og Activité \fg{} +n'est pas le plus approprié. N'oubliez cependant pas que tout est +paramétrable : le mot \og TP \fg{} qui est en fait le contenu de +la macro \cmd{StringTP} et les couleurs utilisées qui sont +\key{TPTopColor}, \key{TPBottomColor} et \key{TPTitleColor}. + +Dans l'énoncé d'un TP, on peut utiliser la commande \cmd{partie}. + +Il est possible de terminer une série de travaux pratiques par une +Récréation, énigmes (voir section~\ref{sec-recreation-enigmes} +page~\pageref{sec-recreation-enigmes}). + +\section{Annexes générales} +\label{sec-annexes-generales} +Toutes les annexes sont placées en fin d'ouvrage, à la suite des +chapitres. Un certain nombre d'annexes ont des usages très +particuliers et seront vues dans les sections qui suivent. On peut +quand même signaler que toutes les annexes partageront le même type +d'en-tête qui, en fait ne sera pas vraiment une en-tête mais une sorte +de bandeau courant sur le bord de la page. Seule sa couleur changera +selon le type d'annexe. + +On commencera par les annexes sans caractéristique particulière qui +sont introduites avec la macro \cmd{annexe}. Cette commande demande un +argument obligatoire pour le titre de l'annexe. + +À l'intérieur d'une annexe, on peut presque tout faire. Les deux +seuls éléments interdits sont les corrections d'exercices et la +commande \cmd{partie} (lorsqu'elle est utilisée en dehors d'un +exercice). + +Il y a une certaine homogénéité dans le choix des couleurs à +l'intérieur d'une annexe. Il est possible, comme d'habitude, de +modifier les couleurs de façon individuelle mais, pour assurer cette +homogénéité la classe fournit la commande \cmd{ChangeAnnexe} qui +demande quatre arguments qui seront les couleurs utilisées dans +l'annexe. Le premier argument est la couleur du bandeau de marge +(\key{AnnexeHeadFrameColor}). Le deuxième argument est une couleur +partagée par plusieurs éléments : +\begin{itemize} +\item \key{AnnexeSectionRuleColor} +\item \key{AnnexeItemColor} +\item \key{AnnexeExerciceCorrigeNumFrameColor} +\item \key{AnnexeExerciceNumFrameColor} +\end{itemize} +Le troisième argument est également une couleur partagée par plusieurs +éléments : +\begin{itemize} +\item \key{AnnexeSectionTitleColor} +\item \key{AnnexeExerciceTitleColor} +\end{itemize} +Enfin, le quatrième et dernier argument est la couleur des numéros +d'exercices. Par défaut la classe appelle cette macro de cette façon : +\begin{verbatim} +\ChangeAnnexe{G3}{A1}{G1}{Blanc} +\end{verbatim} +\clearpage +\section{Liste des méthodes} +\label{sec-liste-des-methodes} +L'annexe spéciale réservée à la liste des méthodes ne demande rien +d'autre à l'utilisateur qu'à taper la commande +\cmd{AfficheListeMethodes}. +\begin{syntaxe} +\begin{verbatim} +\AfficheListeMethodes[nombre colonnes] +\end{verbatim} +L'argument optionnel indique le nombre de colonnes sur lesquelles +composer la liste des méthodes. Par défaut, c'est la valeur de +la macro \cmd{NombreColonnesListeMethodes} et par défaut, la classe +définit cette dernière comme valant~2. +\end{syntaxe} + +Les méthodes sont listées en commençant par le thème Statistiques et +probabilités, puis par le thème Fonctions et enfin par le thème +Géométrie. Cet ordre peut être modifié en redéfinissant la commande +\cmd{ListeMethodesThemes}. Cette dernière est une liste, séparée par +des virgules, des lettres minuscules et capitales définissant chaque +thème. La définition initiale donnée par la classe est donc : +\begin{verbatim} +\newcommand\ListeMethodesThemes{{sp}{SP},{f}{F},{g}{G}} +\end{verbatim} + +Dans cette documentation, on a composé plusieurs méthodes comme exemples de fonctionnement de la classe (pages~\pageref{exemple-methode-debut} +à~\pageref{exemple-methode-fin}) ou pour expliquer une possibilité de personnalisation de la classe et d'autres. + +Un appel à cette macro va donner le +résultat suivant sur une nouvelle page avec la mise en page générale des annexes. +\begingroup +\def\clearpage{\par\hrulefill\par\vspace{2cm}} +\def\pagestyle#1{} +\def\thispagestyle#1{} +\renewcommand\ListeMethodesThemes{{m}{M}} +\AfficheListeMethodes +\par\hrulefill +\endgroup + + + +À noter que comme les méthodes de cette documentation ont été réalisée +dans un chapitre avec le thème personnalisé \key{manuel} il a fallu +redéfinir le contenu de \cmd{ListeMethodesThemes} avec la commande : +\begin{verbatim} +\renewcommand\ListeMethodesThemes{{m}{M}} +\end{verbatim} +Voir page~\pageref{newthema} où l'on présente la commande \cmd{NewThema} +pour les explications des lettres \og m \fg{} et \og M \fg{}. + +Dans un ouvrage réel, les bandeaux de chaque thème ne seront affichés +que s'il y a au moins une méthode dans le thème et, évidemment, si les +lettres du thèmes sont listées dans la macro +\cmd{ListeMethodesThemes}. + +\section{Solutions} +\label{sec-solutions} +La classe automatise la composition des solutions des exercices d'un +ouvrage. Lorsqu'on veut qu'un exercice ait une correction, il suffit +de le faire suivre immédiatement d'un environnement +\environ{corrige}. Ensuite, la seule chose à faire est d'appeler la +commande \cmd{AfficheCorriges}. +\begin{syntaxe} +\begin{verbatim} +\AfficheCorriges[nombre colonnes] +\end{verbatim} +L'argument optionnel indique le nombre de colonnes sur lesquelles +composer les solutions aux exercices. Par défaut, c'est la valeur de +la macro \cmd{NombreColonnesCorriges} et par défaut, la classe définit +cette dernière comme valant~3. +\end{syntaxe} +\renewcommand{\StringDOCUMENTATION}{Tout se fait automatiquement:} +\begin{documentation} +\begin{itemize} + \item Chaque chapitre a son bandeau avec son titre et la couleur de son +thème. +\item \`A l'intérieur de chaque chapitre, chaque partie à son titre +si elle contient au moins une solution à un exercice. +\item Si une partie ne +contient aucune solution, elle n'aura pas de titre de partie. +\end{itemize} +\end{documentation} + +\begin{remarque} +On a utilisé cette commande à la toute fin de cette documentation. +\begin{itemize} + \item On +voit que le premier chapitre (Introduction) ne contenait aucune +solution. C'est un cas qui ne devrait pas arriver en pratique mais +cela permet de voir qu'il n'y a rien d'afficher : aucune correction et +aucune partie. +\item Le deuxième chapitre (Classe pour un ouvrage) contient +des solutions d'exercices à la fois dans la partie \og Auto-évaluation +\fg{}, \og S'entraîner \fg{} et \og Auto-évaluation \fg{} en QCM donc +la liste de corrections contiendra ces trois titres de parties. +\item Le +chapitre suivant (Classe pour quelques feuilles) contient la solution +de deux exercices dans la partie Auto-évaluation. +\item Enfin, le dernier +chapitre (Détails typographiques) ne contient que trois solutions +d'exercices dans la partie Auto-évaluation. +\end{itemize} +\end{remarque} + +\begin{attention} +Comme de nombreux éléments de la maquette, une solution d'exercice est +insécable. Lorsqu'une solution est particulièrement longue, cela peut +devenir disgracieux, voire carrément fautif si la correction prend +plus que la hauteur d'une colonne. La maquette incite à des solutions +très courtes. + +S'il n'est vraiment pas possible de faire autrement, +la classe offre la commande \cmd{Coupe} qui permet une coupure de +colonne à ce niveau. +\end{attention} +\vfill \clearpage +\renewcommand{\StringDOCUMENTATION}{La commande \cmd{Coupe}} +\begin{documentation} +\begin{itemize} + \item +Cette commande ne provoque pas +nécessairement de coupure de colonne mais provoque obligatoirement un +fin de paragraphe. +La commande \cmd{Coupe} provoque en fait la fermeture de la minipage +en cours puis la réouverture d'une autre minipage avec une commande +\cmd{par} entre les deux. Cela empêche d'avoir d'autres environnements +qui contiendrait cette commande \cmd{Coupe}. En pratique, ce qui +risque d'arriver assez souvent est que la commande coupe se trouve à +l'intérieur d'une liste, dans le cas le plus embêtant, à l'intérieur +d'une liste numérotée. Voici la méthode générale pour gérer ce cas de +figure. +\end{itemize} +\end{documentation} +\begin{code} +\begin{verbatim} +\begin{corrige} + \begin{enumerate} + \item premier point + \item deuxième point + \end{enumerate} + \Coupe + \begin{enumerate} + \setcounter{enumi}{2} + \item troisième point après la coupure +\end{enumerate} +\end{corrige} +\end{verbatim} +\end{code} +\begin{attention} +Cette commande est un peu délicate à utiliser et sert à corriger les +coupures de colonnes d'un ouvrage. Comme tout ce qui concerne les +coupures de page ou de colonne, c'est à utiliser en toute fin de +composition, une fois qu'on est absolument certain que le texte ne +changera plus\ldots{} sinon, vous risquez de travailler pour rien ! +C'est une commande pour le metteur en page, pas pour l'auteur (si les +deux sont différents). +\end{attention} + +\renewcommand{\StringDOCUMENTATION}{Organisation pratique} +\begin{documentation} + Chaque fois que l'environnement \environ{corrige} est utilisé, la classe crée un fichier à part avec la correction. Ces fichiers seront appelés lors de la création de la page Solution à l'appel de la commande \cmd{AfficheCorriges}. + + Si l'environnement est souvent utilisé, cela va créer une multitude de petits fichiers à la racine du répertoire. + + Il est toutefois possible de créer un répertoire \og corrections \fg{} et de demander à la classe d'y ranger les fichiers de correction avec la commande suivante + à mettre avant le \verb+\begin{document}+. + + +\end{documentation} + +\begin{syntaxe} + \verb+\renewcommand\PrefixeCorrection{corrections/}+ +\end{syntaxe} + + +\vfill \clearpage +\section{Propriétés} +\label{sec-proprietes} +Une annexe à l'allure tout à fait particulière est celle dédiée aux +propriétés. En réalité, il s'agit d'une annexe générale classique, +c'est-à-dire introduite avec la commande \cmd{annexe} mais la classe +offre plusieurs commandes et environnements particuliers pour gérer +cette présentation. + +En premier lieu, il y a une syntaxe très particulière de tableau. Les +tableaux seront présentées à la section~\ref{sec-tableaux} +page~\pageref{sec-tableaux} et on pourra s'y référer pour plus de +détails sur la syntaxe générale. Celui qui va servir à composer les +propriétés est l'environnement \environ{tableau} avec l'argument +optionnel \key{pr}. Cet environnement demande un argument obligatoire +indiquant la largeur totale du tableau. Il compose des tableaux sur +trois colonnes avec la colonne du milieu légèrement plus large que les +deux autres et avec un fond coloré. Théoriquement, si on respecte la +maquette, la première colonne est là pour accueillir la figure +illustrant la propriété, la deuxième colonne pour le texte de la +propriété et la troisième pour indiquer le lien entre la figure et la +propriété. \begin{code} +\begin{verbatim} +\begin{tableau}[pr]{\linewidth} + \hline + \begin{pspicture}(0,0.25)(3.5,2.5) + \pnode(0,0.5){A} + \pnode(2.5,0.5){B} + \pnode(3.5,2){C} + \pnode(1,2){D} + \pspolygon(A)(B)(C)(D) + \psline(A)(C) + \psline(B)(D) + \uput[d](A){$A$} + \uput[d](B){$B$} + \uput[u](C){$C$} + \uput[u](D){$D$} + \end{pspicture} + & + \propriete{} Si un quadrilatère est un parallélogramme alors ses + diagonales se coupent en leur milieu. (C'est aussi vrai pour les + losanges, rectangles et carrés qui sont des parallélogrammes + particuliers.) + & + Ici $ABCD$ est un parallélogramme donc ses diagonales $[AC]$ et + $[BD]$ se coupent en leur milieu. + \\\hline +\end{tableau} +\end{verbatim} +\end{code} +\begin{result} + +\end{result} + +\begin{tableau}[pr]{\linewidth} + \hline + \begin{pspicture}(0,0.25)(3.5,2.5) + \pnode(0,0.5){A} + \pnode(2.5,0.5){B} + \pnode(3.5,2){C} + \pnode(1,2){D} + \pspolygon(A)(B)(C)(D) + \psline(A)(C) + \psline(B)(D) + \uput[d](A){$A$} + \uput[d](B){$B$} + \uput[u](C){$C$} + \uput[u](D){$D$} + \end{pspicture} + & + \propriete{} Si un quadrilatère est un parallélogramme alors ses + diagonales se coupent en leur milieu. (C'est aussi vrai pour les + losanges, rectangles et carrés qui sont des parallélogrammes + particuliers.) + & + Ici $ABCD$ est un parallélogramme donc ses diagonales $[AC]$ et + $[BD]$ se coupent en leur milieu. + \\\hline +\end{tableau} + +Cet exemple montre l'utilisation de la commande \cmd{propriete} qui +compose le mot \og PROPRIÉTÉ \fg{} suivi de son numéro dans un cadre +en couleur. À chaque appel de cette macro, le numéro augmentera. + +\begin{remarque} +Il +est possible d'utiliser le mécanisme des \cmd{label} pour faire +référence aux propriétés de ce type de tableau. +\end{remarque} + +La classe définit également la commande \cmd{ListeProprietes} qui +permet de retrouver le même cartouche que celui de la commande +\cmd{propriete} mais avec un arguments donnant la liste des +numéros. + +\begin{code} +\begin{verbatim} +\ListeProprietes{P1 à P6} +\end{verbatim} +\end{code} +\begin{result} + +\end{result} +\ListeProprietes{P1 à P6}. + +Cela permet de donner +des explications générales sur des regroupements de propriétés. On +peut également utiliser la commande \cmd{section} pour séparer les +propriétés en plusieurs thèmes généraux. + +\section{Lexique} +\label{sec-lexique} +La classe \class{sesamanuel} permet de composer un lexique ou glossaire +de façon totalement automatique, c'est-à-dire sans recours à aucun +outil externe, et de façon très souple. + +Pour inclure un objet dans le lexique, on utilise la commande +\cmd{MotDefinition} dont la syntaxe est très riche : +\begin{syntaxe}\verb+\ModDefinition[lexique]{mot}[tri]{définition}+ + +La commande a donc deux arguments obligatoires. Le premier est le mot +ou l'expression à mettre dans le lexique et le second est la +définition de ce mot ou de cette expression. On verra la signification +des arguments optionnels après. +\end{syntaxe} + +Le deuxième argument peut être vide ou non. S'il n'est pas +vide, on écrit le mot suivi de sa définition dans le glossaire. S'il +est vide, on écrit le mot dans le glossaire suivi de la page où la +commande \cmd{MotDefinition} a été utilisée et le mot est composé en +gras dans le texte. Voici un premier exemple. +\begin{code} +\begin{verbatim} +\MotDefinition{glossaire}{Liste de mots utilisés dans le texte avec leurs définitions} +Dans cette section, on parle de \MotDefinition{lexique}{} et de glossaire. +\end{verbatim} +\end{code} +\begin{result} + +\end{result} + +\MotDefinition{glossaire}{Liste de mots utilisés dans le texte avec +leurs définitions} +Dans cette section, on parle de \MotDefinition{lexique}{} et de +glossaire. +\vfill\clearpage +On peut voir que les entrées avec une définition peuvent être saisies +à n'importe quel endroit du document, voire regroupées dans un fichier +externe appelé par un \cmd{input}. + +\begin{remarque} +Dans certains cas, le terme apparaissant dans le lexique ne peut pas +être classé alphabétiquement de façon satisfaisante. Par exemple, +supposons qu'on veuille indexer le symbole +\MotDefinition{$\int$}[integralea]{}, le mot +\MotDefinition{intégrale}{} ainsi que le mot +\MotDefinition{intégration}{} mais qu'on veuille que, dans le lexique, +le symbole mathématique soit classé immédiatement après le mot \og +intégrale \fg{}. + +On se sert alors du deuxième argument optionnel qui +permet de spécifier le classement alphabétique. Par défaut, le +classement s'effectue en se servant du premier argument obligatoire +saut si, justement, on utilise le deuxième argument optionnel. +\end{remarque} + +\begin{code} +\begin{verbatim} +\MotDefinition{$\int$}[integralea]{} +\MotDefinition{intégrale}{} +\MotDefinition{intégration}{} +\end{verbatim} +\end{code} +va produire trois entrées dans le lexique : les deux mots \og intégrale +\fg{} et \og intégration \fg{} et le symbole \og $\int$ \fg{} classé +immédiatement après le mot \og intégrale \fg{}. + +Le premier argument optionnel n'a de sens que lorsqu'on ne donne pas +de définition, c'est-à-dire lorsque le deuxième argument obligatoire +est vide. Il sert à avoir un mot différent entre ce qui est placé dans +le lexique et ce qui est composé dans le texte. Normalement, ce sont +les mêmes \MotDefinition[mot]{mots}{} qui servent pour les deux usages +mais, de temps en temps, on voudrait faire référence à un mot qui +n'est pas exactement celui employé dans le texte. Un exemple fréquent +est l'utilisation d'un mot au pluriel dans le texte alors que le +lexique présente normalement le mot au singulier. Par exemple, on a +utilisé le code : +\begin{verbatim} +\MotDefinition[mot]{mots}{} +\end{verbatim} +un peu au-dessus dans ce paragraphe. Cela a fait que c'est bien \og +mots \fg{} (au pluriel) qui a été mis en gras dans ce paragraphe mais +que c'est \og mot \fg{} (au singulier) qu'on peut voir dans l'entrée +d'index ci-dessous. + +\begingroup +\def\clearpage{\par\goodbreak\hrulefill\par\vspace{2cm}} +\def\pagestyle#1{} +\def\thispagestyle#1{} +\AfficheLexique +\par\hrulefill\par +\endgroup +\vfill \clearpage +L'affichage du lexique se fait grâce à la commande +\cmd{AfficheLexique}. Sa syntaxe est semblable à celle de la commande +\cmd{AfficheCorriges}. +\begin{syntaxe} +\begin{verbatim} +\AfficheLexique[nombre colonnes] +\end{verbatim} +L'argument optionnel indique le nombre de colonnes sur lesquelles +composer le lexique. Par défaut, c'est la valeur de +la macro \cmd{NombreColonnesLexique} et par défaut, la classe définit +cette dernière comme valant~2. +\end{syntaxe} + +\begin{remarque} +La classe procède a plusieurs traitements automatiques. +\begin{itemize} + \item + En premier lieu +le classement alphabétique (en traitant les accents comme la lettre +non accentuée) et la mise en minuscule de l'entrée avec la première +lettre en capitale. Si ces automatismes doivent être inhibés, il +faudra utiliser les arguments optionnels de la commande +\cmd{MotDefinition}. +\item En deuxième lieu le placement d'un bandeau pour +chaque groupe de première lettre existant. +\end{itemize} + +C'est la classe elle même qui s'occupe d'un classement +alphabétique. Pour cela, si l'argument optionnel de tri n'est pas +spécifié, c'est le mot en lui même qui sera utilisé pour le tri. La +classe procède à un traitement préalable pour fabriquer sa clé de tri +à partir du mot. Ce traitement consiste à traduire en minuscule en +changeant toutes les lettres diacritiques en la ou les lettres simples +correspondantes ( \og ç \fg{} en \og c \fg{}, \og ê \fg{} en \og e +\fg{}, \og œ \fg{} en \og oe \fg{}, etc.). Cette façon de faire ne +donne pas strictement l'ordre alphabétique français puisque les +diactritiques dépendant d'une seule lettre sont classées au +hasard. Par exemple, les mots \og côté \fg{} et \og coté \fg{} seront +classés de façon aléatoire. Pour un lexique d'ouvrage mathématique, le +cas ne devrait pas arriver souvent et, au pire, on peut y remédier +avec l'argument optionnel de tri mais c'est néanmoins une petite +amélioration à laquelle il faudra songer pour une prochaine version de +la classe. +\end{remarque} + +\chapter{Classe pour\\ quelques feuilles}\label{chClsPourQQFeuilles} +\label{chap-classe-pour-quelques-feuilles} +\begin{prerequis} + Dans ce chapitre, nous présentons l'utilisation de la classe + permettant de construire quelques éléments d'un ouvrage sans devoir + en suivre l'organisation générale. + + Typiquement, cette partie de la classe a été pensée pour qu'une + personne puisse aller sur le site de \Logosesa{}, prendre le code + source d'un ou plusieurs exercices (par exemple) et compiler un + document ne contenant que ces quelques exercices. +\vfill \columnbreak + En prenant quelques éléments épars de la classe on a construit + l'extension \package{sesamanuel.sty}. Celle-ci permet de compiler des + exemples simples qui utilisent quelques éléments de syntaxe de la + classe \class{sesamanuel} mais sous une autre classe comme \class{beamer}. + + Une première section étudiera l'utilisation de la classe et une + seconde l'utilisation de l'extension. +\end{prerequis} + +\begin{autoeval} + \begin{multicols}{2} + \begin{exercice} + Où trouver les codes sources des manuels ? + \end{exercice} + \begin{corrige} + Les codes sources des manuels peuvent être téléchargés +\begin{itemize} + \item + par chapitre (fichiers zip) sur le site + \texttt{http://www.sesamath.net/}. Cliquez sur Les manuels puis sur + \texttt{TÉLÉCHARGEMENTS}. Actuellement, seuls les manuels de lycée + utilisent \LaTeX{} et cette classe. +\item par vignette du manuel numérique en cliquant sur le logo \includegraphics{logotex.eps} +\end{itemize} + + \end{corrige} +\vfill \columnbreak + \begin{exercice} + Je voudrais faire une présentation de mes exercices avec + \class{beamer}. Comment procéder ? + \end{exercice} + \begin{corrige} + Comme \class{beamer} est une classe, la seule solution est + d'utiliser l'extension \package{sesacah.sty}. + \end{corrige} + \end{multicols} +\end{autoeval} + +\cours +\section{Utilisation de la classe} +Pour utiliser la classe dans le but de produire une page (ou peu de +pages), il existe un pseudo thème dit \og libre \fg{}. En fait, on ne +l'appelle même pas directement. Pour indiquer qu'on va utiliser la +classe de façon \og libre \fg{}, on indiquera la macro \cmd{libre} en +tout début de document. + +Cette commande va considérablement simplifier la mise en page des +en-têtes (devenues inexistantes) et des pieds de page (réduits au seul +numéro de page). + +La conséquence immédiate de cela est qu'il devient alors sans objet de +vouloir utiliser les commandes de partie générale d'un ouvrage +(thème, chapitre, partie dédiée aux activités d'approche, au cours, +aux exercices, aux QCM d'évaluation et aux TP). En revanche, on peut +quasiment utiliser tous les éléments internes de la classe. + +Il existe quelques limitations dues à l'absence de cloisonnement de +parties générales. Ainsi, la commande \cmd{partie} peut exister à +plusieurs emplacements avec un traitement différents dans un ouvrage +classique. Ce comportement ne pourra plus exister puisque les +commandes modifiant le comportement de \cmd{partie} ne seront plus +utilisées. + +Voici ce qu'il est possible de faire avec une utilisation \og libre +\fg{} de la classe : +\begingroup +\setlist{AE} +\begin{itemize} +\item écrire du texte de façon libre; +\item composer un environnement \environ{debat} ou \environ{activite}; +\item utiliser la commande \cmd{section} (non numérotées); +\item utiliser les environnements de type \environ{definition}, + \environ{notation}, \environ{methode} (avec la liste des méthodes si + on le souhaite en appelant la commande \cmd{AfficheListeMethodes}); +\item utiliser la commande \cmd{recreation} (mais par la commande + \cmd{Recreation} qui modifie les en-têtes); +\item les QCM d'auto-évaluation; +\item les TP ; +\item les exercices (et le mécanisme des corrections); +\item le lexique. +\end{itemize} +\endgroup + +Tout ce qui a été dit dans le chapitre précédent s'applique. On notera +juste l'introduction de quelques paramètres propres à la partie \og +libre \fg{}. + +\begingroup +\renewcommand*\colorlet[2]{% + #1 & #2 & +}% +\newcommand*\titre[1]{\multicolumn{3}{c}{\textbf{#1}}} +\centering +\begin{longtable}{@{}llp{8cm}@{}} + \hline + \endfirsthead + \\\hline + \endhead + \\ + \endlastfoot + \titre{Couleurs dans la partie libre} \\\hline + \colorlet{LibrePartieColor}{A1} + Couleur des titres de partie \cmd{algo} \\ +\end{longtable} +\endgroup + +Les autres couleurs sont gérées par la commande \cmd{ChangeLibre} qui +a exactement la même syntaxe et la même signification que la commande +\cmd{ChangeAnnexe}. + +Il y a une certaine homogénéité dans le choix des couleurs à +l'intérieur d'une partie libre. Il est possible, comme d'habitude, de +modifier les couleurs de façon individuelle mais, pour assurer cette +homogénéité la classe fournit la commande \cmd{ChangeLibre} qui +demande quatre arguments qui seront les couleurs utilisées dans +la partie libre. Le premier argument correspond à la couleur du +bandeau de marge mais dans la partie libre, il n'y a pas de tel +bandeau. On garde ce premier argument pour une éventuelle modification +future mais pour l'instant, il ne sert à rien. Le deuxième argument +est une couleur partagée par plusieurs éléments : +\begingroup +\setlist{AE} +\begin{itemize} +\item \key{LibreSectionRuleColor} +\item \key{LibreItemColor} +\item \key{LibreExerciceCorrigeNumFrameColor} +\item \key{LibreExerciceNumFrameColor} +\end{itemize} +Le troisième argument est également une couleur partagée par plusieurs +éléments : +\begin{itemize} +\item \key{LibreSectionTitleColor} +\item \key{LibreExerciceTitleColor} +\end{itemize} +\endgroup +Enfin, le quatrième et dernier argument est la couleur des numéros +d'exercices. Par défaut la classe appelle cette macro de cette façon, +c'est-à-dire exactement comme pour les annexes : +\begin{verbatim} +\ChangeLibre{G3}{A1}{G1}{Blanc} +\end{verbatim} + +On a également quelques définitions de longueurs : + +\begingroup +\newcommand*\longueur[2]{% + \cmd{#1} & \texttt{#2} +}% +\newcommand*\titre[1]{\multicolumn{2}{c}{\textbf{#1}}} +\centering +\begin{longtable}{@{}ll@{}} + \hline + \endfirsthead + \\\hline + \endhead + \\ + \endlastfoot + \titre{Longueurs dans la partie libre} \\\hline + \longueur{LibreSectionRuleWidth}{\cmd{SquareWidth}}\\ + \longueur{LibreSectionRuleHSpace}{1mm}\\ + \longueur{BeforeLibreSectionVSpace}{5mm}\\ + \longueur{AfterLibreSectionVSpace}{2mm}\\ + \longueur{BeforeLibrePartieVSpace}{1.5mm}\\ + \longueur{AfterLibrePartieVSpace}{1mm} +\end{longtable} +\endgroup + +Enfin, quelques définitions de fontes : + +\begingroup +\newcommand*\fonte[2]{% + \cmd{#1} & \texttt{#2} +}% +\newcommand*\taille[2]{% + \cmd{fontsize\{#1\}\{#2\}}% +} +\newcommand*\titre[1]{\multicolumn{2}{c}{\textbf{#1}}} +\centering +\begin{longtable}{@{}ll@{}} + \hline + \endfirsthead + \\\hline + \endhead + \\ + \endlastfoot + \titre{Fontes dans la partie libre}\\\hline + \fonte{FootLibrePageFont}{\taille{11}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{LibreSectionTitleFont}{\taille{14.4}{14.4}\cmd{sffamily}\cmd{bfseries}}\\ + \fonte{LibrePartieFont}{\taille{10.5}{14.4}\cmd{bfseries}}\\ +\end{longtable} +\endgroup + +\section{Extension \package{sesamanuel}} +L'extension \package{sesamanuel} est destinée à être utilisée lorsqu'il +est obligatoire d'utiliser une autre classe que \class{sesamanuel}. Un +exemple typique est celui où on compose un diaporama avec la classe +\class{beamer}. + +L'extension définit un certain nombre d'éléments et de syntaxe qui +sont définis dans la classe mais un grand nombre de mécanismes sont +évidemment abandonnés. Tout ce qu'on trouve ici est également +utilisable avec une utilisation \og libre \fg{} de la classe (voir +ci-dessus). + +Avec l'extension, on a accès à: +\begingroup +\setlist{AE} +\begin{itemize} +\item les tableaux: +\item les algorithmes; +\item les unités; +\item les macros \cmd{TopStrut} et \cmd{BotStrut}; +\item les listes. +\end{itemize} +\endgroup + +Tous ces éléments sont présentés plus en détails dans le chapitre +suivant. + +Pour les listes, comme la classe prévoyait un grand nombre de +possibilités, on les retrouve dans l'extension grâce à la macro +\cmd{setlist}. Celle-ci demande un argument qui indique le type de +partie donc l'aspect des différentes listes (voir la première section +du chapitre suivant). On trouve: +\begingroup +\setlist{AE} +\begin{itemize} +\item \cmd{setlist\{prerequis\}}; +\item \cmd{setlist\{AE\}} pour les listes d'auto-évaluation; +\item \cmd{setlist\{exapp\}} pour les listes des exercices + d'application; +\item \cmd{setlist\{def\}} pour les listes des environnements de type + définition; +\item \cmd{setlist\{activite\}} ; +\item \cmd{setlist\{rem\}} pour les listes des environnements de type + remarque; +\item \cmd{setlist\{exemple\}}; +\item \cmd{setlist\{proof\}}; +\item \cmd{setlist\{exercice\}} pour les listes des exercices + d'entraînement et d'approfondissement; +\item \cmd{setlist\{acquis\}} pour les listes dans \og Je vérifie mes + acquis \fg{}; +\item \cmd{setlist\{commentaire\}}; +\item \cmd{setlist\{recreation\}}; +\item \cmd{setlist\{annexe\}}; +\item \cmd{setlist\{lexique\}}. +\end{itemize} +\endgroup +L'utilisation des listes dans une classe générale requiert quelques +précautions. + +En premier lieu il est obligatoire de spécifier un des types de liste +précédents avec la macro \cmd{setlist}. + +Les environnements \environ{colenumerate} et \environ{colitemize} se +servent de la macro \cmd{item} pour analyser le contenu d'une liste +afin de le découper en différents blocs. Si vous emboîtez des listes +dans ce type de liste, il va falloir protéger la liste intérieur en la +plaçant intégralement dans un groupe. + +Enfin, il est fortement préférable de travailler avec des documents +sans retrait d'alinéa sinon le rendu risque d'être assez bizarre. + +Voici un code qui tient compte de tous ces éléments : +\begin{verbatim} +\setlength{\parindent}{0pt} +\setlist{recreation} +\begin{colenumerate} +\item Le premier point est simple. +\item Le deuxième point contient une liste (protégée) : + { + \begin{enumerate} + \item avec un premier sous-point + \item et un deuxième. + \end{enumerate} + } +\item Le troisième point est simple +\end{colenumerate} +\end{verbatim} + +\chapter{Détails\\ typographiques}\label{chDetails} +\label{chap-details-typographiques} +\begin{prerequis}[Constructions offertes par la classe] + Dans ce chapitre, nous allons présenter les éléments qui existent + pour toutes les parties du manuel ou, du moins, pour plusieurs + parties du manuel. On découpera la présentation en : + \begin{itemize} + \item Listes + + Il s'agit des listes traditionnelles \environ{itemize} et + \environ{enumerate} avec leurs différentes déclinaisons selon + l'endroit où elles sont appelées. + \item Cadres et tableaux + + La classe offre un certain nombre de constructions automatiques + de tableaux ainsi que des cadres variés. + \item Divers + + On placera dans cette dernière section tout ce qui ne relève pas + des deux sections précédentes. Cela fera donc un peu fourre-tout. + \end{itemize} +\end{prerequis} + +\begin{autoeval} + \begin{multicols}{2} + \begin{exercice} + Essayez de placer des environnements \environ{itemize} ou + \environ{enumerate} dans plusieurs endroits du document et + regardez le rapport de compilation. + \end{exercice} + \begin{corrige} + Normalement, on a une erreur de compilation. On peut alors lire + le rapport de compilation ou lire la section qui suit pour + comprendre ce qui s'est passé. + \end{corrige} + \begin{exercice} + Comment faire pour commencer la partie cours en première page + d'un chapitre ? + \end{exercice} + \begin{corrige} + On ne peut pas. + \end{corrige} + \vfill\columnbreak + \begin{exercice} + Comment procéder pour réaliser un manuel de physique à la place + d'un manuel de mathématique? + \end{exercice} + \begin{corrige} + La possibilité de modifier le comportement de la classe, en + particulier les textes fixes, devrait permettre de faire une + sorte de sesaphysique à la place d'un sesamath. + \end{corrige} + \end{multicols} +\end{autoeval} + +\cours +\section{Listes} +\label{sec-listes} +La classe redéfinit les listes standards \environ{itemize} et +\environ{enumerate}. Elle ne redéfinit pas la liste +\environ{description} puisque la maquette initiale ne s'en servait +jamais. Elle créé également d'autres listes, à savoir +\environ{colitemize}, \environ{colenumerate} et +\environ{bigenumerate}. + +Les environnements \environ{colitemize} et \environ{colenumerate} +permettent de présenter les résultats en colonnes. Le principe est de +spécifier le nombre de colonnes voulues en paramètre. Les entrées des +listes se feront alors en remplissant les colonnes d'abord et en les +équilibrant au maximum. Voici un exemple. Le source +\begin{verbatim} +\begin{colenumerate}{3} +\item item +\item item +\item item un peu plus long pour faire plus d'une ligne +\item item un peu plus long pour faire plus d'une ligne +\item item +\end{colenumerate} +\end{verbatim} +donne le résultat : +\begingroup +\setlist{AE}% +\begin{colenumerate}{3} +\item item +\item item +\item item un peu plus long pour faire plus d'une ligne +\item item un peu plus long pour faire plus d'une ligne +\item item +\end{colenumerate} +\endgroup + +\strut On aura un résultat similaire pour les listes +\environ{itemize}. + +La liste \environ{bigenumerate} résulte d'une discussion lors de +l'élaboration de la maquette. L'exemple précédent montre que les +numéros d'une liste \environ{enumerate} ou \environ{colenumerate} sont +très proches du texte de l'item. Si le numéro vient à s'écrire sur +deux chiffres, soit il télescope le texte, soit il chasse dans la +marge, soit le texte de l'entrée n'est plus aligné avec celui des +autres entrées. C'est cette dernière option qui a été choisie mais +avec la possibilité d'avoir une liste permettant quand même +l'alignement en augmentant la distance entre numéro et texte. Voici un +exemple (idiot puisque \environ{bigenumerate} ne sert qu'à partir de +10 entrées). Le source : +\begin{verbatim} +\begin{enumerate} +\item item +\item item +\end{enumerate} +\begin{bigenumerate} +\item item éloigné +\item item éloigné +\end{bigenumerate} +\end{verbatim} +donne le résultat : +\begingroup +\setlist{AE}% +\begin{enumerate} +\item item +\item item +\end{enumerate} +\begin{bigenumerate} +\item item éloigné +\item item éloigné +\end{bigenumerate} +\endgroup +La classe prévoit deux niveaux de liste. On peut en faire plus mais +l'aspect restera celui du deuxième niveau d'emboîtement. Pour les +liste \environ{itemize}, cela ne se traduira que pas un retrait +différent. Pour les listes \environ{enumerate}, on aura une +présentation différentes des numéros. Voici un exemple : +\begin{verbatim} +\begin{enumerate} +\item item +\item item + \begin{enumerate} + \item item emboîté + \item item emboîté + \end{enumerate} +\item item +\end{enumerate} +\end{verbatim} +qui donne : +\begingroup +\setlist{AE}% +\begin{enumerate} +\item item +\item item + \begin{enumerate} + \item item emboîté + \item item emboîté + \end{enumerate} +\item item +\end{enumerate} +\endgroup + +\label{liste-debut-listes} +En réalité la façon dont sont composées les listes dépend de +l'emplacement où elles sont appelées. Les exemples ci-dessus ont été +construits avec les listes utilisées dans l'auto-évaluation (bas de la +première page d'un chapitre). On va montrer toutes les possibilités +avec le source : +\begin{verbatim} +\begin{itemize} +\item test itemize +\end{itemize} +\begin{enumerate} +\item niveau 1 + \begin{enumerate} + \item niveau 2 + \end{enumerate} +\end{enumerate} +\end{verbatim} + +\testliste{prerequis}{le cadre bleu des prérequis} +\testliste{AE}{les QCM d'auto-évaluation} +\testliste{activite}{les activités et débats} +\testliste{def}{les environnements de type définition} +\testliste{rem}{les environnements de type remarque} +\testliste{proof}{les environnements de type preuve} +\testliste{exemple}{les exemples} +\testliste{exapp}{les méthodes} +\testliste{commentaire}{les commentaires} +\testliste{exercice}{les exercices} +\testliste{acquis}{les questions de je teste mes connaissances} +\testliste{recreation}{les recréations et énigmes} +\testliste[0pt]{corrAE}{les correction des QCM d'auto-évaluation} +\testliste[0pt]{correxercice}{les corrections d'exercices} +\testliste[0pt]{corrrecreation}{les corrections des récréations} +\testliste{annexe}{les annexes générales} +\testliste{lexique}{le lexique} + +\label{liste-fin-listes} +L'utilisation de ces listes en d'autres emplacements du document +provoquera une erreur de compilation. Ainsi, on ne pourra pas utiliser +ces listes : +\begingroup +\setlist{AE} +\begin{itemize} +\item dans les pages activités (en dehors des activités et débats + proprement dits) ; +\item dans les pages cours (en dehors de certains environnements) ; +\item dans les QCM de je teste mes connaissances ; +\item dans les corrections d'activités ; +\item dans les corrections des je teste mes connaissances. +\end{itemize} +\endgroup + +\section{Cadres et tableaux} +\subsection{Cadres} +Il y a plusieurs cadres qui sont définies par la classe mais +\emph{via} des macros privées. L'utilisateur ne peut donc normalement +pas s'en servir. +\begin{cadre} + Si on excepte les cadres vus au chapitre précédent qui devaient être + placés à des endroits particuliers du manuel, on trouve une commande + particulière permettant de composer un cadre avec un biseau + inférieur droit. +\end{cadre} +Ce type de cadre est réalisé grâce à l'environnement +\environ{cadre}. Cet environnement accepte deux arguments optionnels +indiquant la couleur du cadre et la couleur de fond. Par défaut, ce +sera respectivement la couleur \key{CadreLineColor} et la couleur +\key{CadreBkgColor}. La largeur des lignes est indiquée avec la macro +\cmd{CadreLineWidth} et la séparation entre texte et cadre est +indiquée avec la macro \cmd{CadreSep}. Par exemple, le code : +\begin{verbatim} +\renewcommand*\CadreSep{1pt} +\renewcommand*\CadreLineWidth{2pt} +\begin{cadre}[B2][F4] + Du texte, du texte, du texte, du texte... +\end{cadre} +\end{verbatim} +donne le résultat +\begingroup +\renewcommand*\CadreSep{1pt} +\renewcommand*\CadreLineWidth{2pt} +\begin{cadre}[B2][F4] + Du texte, du texte, du texte, du texte, du texte, du texte, du + texte, du texte, du texte, du texte, du texte, du texte, du texte, + du texte, du texte, du texte, du texte, du texte, du texte, du + texte, du texte, du texte, du texte et du texte. +\end{cadre} +\endgroup +Cet exemple montre qu'à cause du biseau, il ne faut pas demander une +séparation trop faible entre texte et cadre. + +\subsection{Algorithmes} +La classe propose une façon de composer des algorithmes. En réalité, +la maquette ayant changé en cours de route, il y a deux +environnements permettant de composer les algorithmes. Le plus ancien +s'appelle \environ{oldalgorithme}. Le principe est que l'intérieur de +cet environnement sera écrit verbatim dans un cadre avec des numéros +de ligne. Par exemple le code : +\begin{verbatim} +\begin{oldalgorithme} +Pour x dans 1..n + Pour y dans 1..n + M[x,y]=x+y + Fin Pour +Fin Pour +\end{oldalgorithme} +\end{verbatim} +donnera le résultat : +\begin{oldalgorithme} +Pour x dans 1..n + Pour y dans 1..n + M[x,y]=x+y + Fin Pour +Fin Pour +\end{oldalgorithme} +En réalité, cet environnement n'est pas véritablement un environnement +verbatim. Il l'est en ce qui concerne le traitement des sauts de +ligne et des espaces mais pas en ce qui concerne les caractères +spéciaux. Par exemple, le caractère \cmd{} garde son statut de +caractère d'échappement habituel. Par exemple, le source +\begin{verbatim} +\begin{oldalgorithme} +Pour x dans 1..n //\textit{entrée de boucle} + Pour y dans 1..n + M[x,y]=\textcolor{B2}{x+y} + Fin Pour +Fin Pour +\end{oldalgorithme} +\end{verbatim} +donnera le résultat +\begin{oldalgorithme} +Pour x dans 1..n //\textit{entrée de boucle} + Pour y dans 1..n + M[x,y]=\textcolor{B2}{x+y} + Fin Pour +Fin Pour +\end{oldalgorithme} + +La classe propose un autre environnement pour réaliser des algorithmes +qui ne suit pas du tout le même principe que celui +ci-dessus. L'environnement \environ{algorithme} permet de présenter +des algorithmes dans un cadre en utilisant des commandes dédiées qui +se chargeront automatiquement du retrait des lignes. Les commandes +utilisables sont : +\begin{center} + \begin{tabularx}{\linewidth}{>{\cmd{}\ttfamily}lX} + \hline + \multicolumn{1}{c}{\textbf{Commande}} & + \multicolumn{1}{c}{\textbf{Signification}} \\\hline + BlocVariables & + Affiche \og Liste des variables utilis\'ees \fg\\ + BlocEntrees & + Affiche \og Entrées \fg\\ + BlocTraitements & + Affiche \og Traitements \fg\\ + BlocAffichage & + Affiche \og Affichage \fg\\ + BlocTraitementsEtAffichage & + Affiche \og Traitements et affichage \fg\\ + DeclareVar & + Demande 3 paramètres qui sont la variable, son type et un commentaire\\ + TantQue & + Demande 2 paramètres qui sont la condition de boucle et le corps + de boucle\\ + Pour & + Demande 4 paramètres qui sont la variable de boucle, la valeur + initiale, la valeure finale et le corps de boucle\\ + PourAvecPas & + Demande 5 paramètres qui sont la variable de boucle, la valeur + initiale, la valeure finale, le pas et le corps de boucle\\ + SiAlors & + Demande 2 paramètres qui sont la condition et la partie vraie\\ + SiAlorsSinon & + Demande 3 paramètres qui sont la condition, la partie vraie et la + partie fausse\\ + AfficherVar & + Demande 1 paramètre qui est la variable\\ + Afficher & + Demande 1 paramètre qui est ce qu'il faut afficher\\ + Calculer & + Demande 1 paramètre qui est le calcul\\ + Demander & + Demande 1 paramètre qui est la demande\\ + Saisir & + Demande 1 paramètre qui est ce qui doit être saisi\\ + Stocker & + Demande 1 paramètre qui est la variable dans laquelle on stocke\\ + DonnerValeur & + Demande 2 paramètres qui sont le nom d'une variable et la valeur à + stocker\\ + TitreAlgo & + Demande 1 paramètre qui est le titre de l'algorithme\\ + FinAlgo & + Affiche \og Fin de l'algorithme \fg\\\hline + \end{tabularx} +\end{center} +Chaque instruction gère elle-même l'indentation, les fontes et les +couleurs utilisées. Le tableau~\ref{tab-couleurs} +pages~\pageref{tab-debut-couleur}-\pageref{tab-couleurs} indique les noms de +couleurs utilisées pour les algorithmes (ce sont les noms qui +commencent par \key{CouleurAlgo}. En fait, toutes ces couleurs sont +noires mais la classe permet une coloration syntaxique automatique +personnalisée. + +Voici un exemple d'algorithme pour mieux comprendre le fonctionnement +de l'indentation automatique. Celui-ci est sous le contrôle de la +macro \cmd{AlgoIndent} qui vaut \key{1em} par défaut. Le code +\begin{verbatim} +\begin{algorithme} + \TitreAlgo{Euclide} + \BlocVariables + \DeclareVar{a}{entier}{1\ier{} nombre} + \DeclareVar{b}{entier}{2\ieme{} nombre} + \DeclareVar{r}{entier}{reste} + \BlocEntrees + \Demander{a} + \Demander{b} + \BlocTraitements + \Calculer{r = reste de a/b} + \TantQue{r $\neq$ 0}{% + \DonnerValeur{a}{b} + \DonnerValeur{b}{r} + \Calculer{r = reste de a/b} + } + \Afficher{"PGCD = "} + \AfficherVar{b} + \FinAlgo +\end{algorithme} +\end{verbatim} +donne le résultat : +\begin{algorithme} + \TitreAlgo{Euclide} + \BlocVariables + \DeclareVar{a}{entier}{1\ier{} nombre} + \DeclareVar{b}{entier}{2\ieme{} nombre} + \DeclareVar{r}{entier}{reste} + \BlocEntrees + \Demander{a} + \Demander{b} + \BlocTraitements + \Calculer{r = reste de a/b} + \TantQue{r $\neq$ 0}{% + \DonnerValeur{a}{b} + \DonnerValeur{b}{r} + \Calculer{r = reste de a/b} + } + \Afficher{"PGCD = "} + \AfficherVar{b} + \FinAlgo +\end{algorithme} + +\subsection{Sudokus} +La classe a une commande très particulière qui permet de composer +des sudokus. Il s'agit de la commande \cmd{sudoku}. Cette commande +accepte un argument optionnel qui indique la largeur d'une case +(\key{SudokuWidth} par défaut, c'est-à-dire \umm{5}) et un argument +obligatoire qui indique le contenu de la grille de sudoku. + +Une grille de sudoku est un tableau $9\times9$ et on va donc +donner $9\times9$ indications de remplissage. Un point représente une +case vide blanche, une étoile représente une case vide colorée (avec +la couleur \key{FondSudokuColor}) et toute autre matériel indique ce +qu'il faut placer dans la case (en général des chiffres). + +En réalité, la commande est assez permissive. S'il y a moins de 81 +renseignements, la fin de la grille sera remplie avec des cases vides. +S'il y a plus de 81 renseignements, les indications après la 81\ieme{} +seront ignorées. Les espaces et les sauts de ligne ne comptent pas ce +qui permet de noter les grilles de façon lisible pour l'humain. + +Le code +\begin{verbatim} +\begin{center} + \sudoku{} + \hspace{2cm}% + \sudoku{% + 1.234..5. + ......... + 5..67.8.. + 6..5.2..8 + 23..*..61 + 9..1.7..4 + ..4.16..3 + ......... + .2..897.5 + } +\end{center} +\end{verbatim} +donne le résultat : +\begin{center} + \sudoku{} + \hspace{2cm}% + \sudoku{% + 1.234..5. + ......... + 5..67.8.. + 6..5.2..8 + 23..*..61 + 9..1.7..4 + ..4.16..3 + ......... + .2..897.5 + } +\end{center} + +\subsection{Tableaux} +\label{sec-tableaux} +La classe permet d'utiliser toutes les commandes et environnements +standards liés aux tableaux. Elle charge même les extensions +\package{longtable} donc \package{array}, \package{tabularx}, +\package{multirow} et l'extension \package{xcolor} avec son option +\key{table}. + +Cependant, pour assurer une cohérence dans le traitement des tableaux, +la classe propose une série d'environnements permettant de présenter +des tableaux sous des formes particulières. + +Les environnements s'appellent \environ{tableau}. À l'intérieur +de cet environnement, la couleur des filets sera grise. Le type +\key{X} de l'environnement \environ{tabularx} est redéfini pour donner +une entrée centrée à la fois verticalement et horizontalement. Le +\key{} est une ou deux lettres indiquant le type du tableau, on +a les possibilités suivantes : +\begin{center} + \begin{tabularx}{\linewidth}{>{\ttfamily}lX} + \hline + \multicolumn{1}{c}{\textbf{}} & + \multicolumn{1}{c}{\textbf{Signification}} + \\\hline + t & C'est l'environnement le plus simple. Il demande deux + arguments qui sont la largeur du tableau et le nombre de + colonnes. Toutes les colonnes seront du type \key{X} + \\ + c & Même chose que ci-dessus mais la première colonne sera en + couleur. + \\ + l & Même chose que ci-dessus mais c'est la première ligne qui sera + en couleur. + \\ + cl & Toujours la même chose. C'est la première ligne et la + première colonne qui seront en couleur. + \\ + T, C, L \textrm{et} CL & Les types en capitale correspondent au + type en minuscule. Il demande un argument supplémentaire qui est le + type de la première colonne. + \\ + pr & Il s'agit d'un type de tableau très particulier qui ne sert, + normalement, que pour la liste des propriétés (voir + page~\ref{sec-proprietes}) + \\\hline + \end{tabularx} +\end{center} +Voici un exemple avec le type \key{C}. Le source +\begin{verbatim} +\begin{center} + \renewcommand*\tabularxcolumn[1]{>{\centering\arraybackslash}m{#1}} + \begin{Ctableau}{0.7\linewidth}{7}{c} + \hline + Hauteur en dm & 0,5 & 1 & 1,5 & 2 & 2,5 & 3 \\\hline + Volumes en litres & & & & & & \\\hline + \end{Ctableau} +\end{center} +\end{verbatim} +va donner le résultat : +\begin{center} + \renewcommand*\tabularxcolumn[1]{>{\centering\arraybackslash}m{#1}} + \begin{Ctableau}{0.7\linewidth}{7}{c} + \hline + Hauteur en dm & 0,5 & 1 & 1,5 & 2 & 2,5 & 3 \\\hline + Volumes en litres & & & & & & \\\hline + \end{Ctableau} +\end{center} +Dans l'exemple, on a redéfini la macro \cmd{tabularxcolumn} afin +d'obtenir des entrées centrées. + +Lorsqu'on compose un tableau avec un des types \key{c}, \key{l}, +\key{cl} et les types en capitale correspondants, on utilise la +couleur \key{FondTableaux}. La couleur des filets est +\key{FiletTableauColor} + +\section{Divers} +Dans cette section, on va présenter des détails typographiques définis +par la classe. On ne parlera pas de tous les détails typographiques +définis par les extensions appelées par la classe en renvoyant à la +documentation de ces extensions (liste page~\pageref{tab-extensions}). + +\subsection{Empagement} +Dans un ouvrage \Logosesa{}, l'empagement peut être modifié dans +certaines circonstances (à l'intérieur des activités ou débats, dans +les travaux pratiques). + +Normalement, l'utilisateur n'a pas à régler lui-même ces problèmes +d'empagement. Cela dit, la classe laisse quand même la possibilité de +le faire en fournissant l'environnement +\environ{changemargin}. Celle-ci est utilisé en interne pour certaines +présentation où l'empagement est réduit. Si l'augmentation de marge à +gauche dépend des circonstances, l'augmentation de la marge droite est +toujours égale à \cmd{ExtraMarginRight}. + +Lorsque l'empagement est réduit, il peut alors arriver qu'on veuille +remettre l'empagement jusqu'à la marge droite habituelle. Pour cela, +on utilise l'environnement \environ{debordedroite}. Par exemple, le +code : +\begin{verbatim} +\begin{changemargin}{1.5cm}{\ExtraMarginRight} + Exemple de texte avec une modification d'empagement... + \begin{debordedroite} + Exemple de texte avec une marge droite habituelle... + \end{debordedroite} + Exemple de texte avec une modification d'empagement... +\end{changemargin} +\end{verbatim} +donnera le résultat suivant : +\begin{changemargin}{1.5cm}{\ExtraMarginRight} + Exemple de texte avec une modification d'empagement. Exemple de + texte avec une modification d'empagement. Exemple de texte avec une + modification d'empagement. Exemple de texte avec une modification + d'empagement. Exemple de texte avec une modification d'empagement. + \begin{debordedroite} + Exemple de texte avec une marge droite habituelle. Exemple de + texte avec une marge droite habituelle. Exemple de texte avec une + marge droite habituelle. Exemple de texte avec une marge droite + habituelle. Exemple de texte avec une marge droite habituelle. + \end{debordedroite} + Exemple de texte avec une modification d'empagement. Exemple de + texte avec une modification d'empagement. Exemple de texte avec une + modification d'empagement. Exemple de texte avec une modification + d'empagement. Exemple de texte avec une modification d'empagement. +\end{changemargin} + +Un autre commande permettant de jouer ponctuellement avec l'empagement +est celle qui permet d'habiller une image avec du texte. Dans les +ouvrages \Logosesa{}, les images sont toujours utilisées dans les +passages à marge augmentée. Lorsqu'une image est insérée, et si sa +largeur le permet, elle débordera pour aller jusqu'à la marge de +droite habituelle. Voici un exemple où on va inclure les deux cas de +figure possibles (images plus large ou moins large que +\cmd{ExtraMarginRight}) : +\begin{verbatim} +\begin{changemargin}{1.5cm}{\ExtraMarginRight} + \setkeys{Gin}{keepaspectratio=false, height=2cm} + \habillage{\fbox{\includegraphics[width=1cm]{tiger.eps}}} Dans ce premier... + + \habillage{\fbox{\includegraphics[width=4cm]{tiger.eps}}} Dans ce second... +\end{changemargin} +\end{verbatim} +qui donne le résultat : + +\begin{changemargin}{1.5cm}{\ExtraMarginRight} +% \setkeys{Gin}{keepaspectratio=false, height=2cm}% + % \habillage{\fbox{\includegraphics[width=1cm]{tiger.eps}}} +Dans ce + premier exemple, l'image a une largeur inférieure à la marge + supplémentaire \cmd{ExtraMarginRight}. Dans ces conditions, l'image + déborde de sa largeur naturelle sans renfoncement dans le + texte. Dans ce premier exemple, l'image a une largeur inférieure à + la marge supplémentaire \cmd{ExtraMarginRight}. Dans ces conditions, + l'image déborde de sa largeur naturelle sans renfoncement dans le + texte. + + % \habillage{\fbox{\includegraphics[width=4cm]{tiger.eps}}} +Dans ce second + exemple, la largeur de l'image est maintenant supérieure à + \cmd{ExtraMarginRight}. Dans ces conditions, la droite de l'image + atteint exactement la marge droite habituelle et provoque un + renfoncement du texte en vis à vis. Dans ce second exemple, la + largeur de l'image est maitenant supérieure à + \cmd{ExtraMarginRight}. Dans ces conditions, la droite de l'image + atteint exactement la marge droite habituelle et provoque un + renfoncement du texte en vis à vis. +\end{changemargin} + +\subsection{Correction de hauteur} +Dans certaines circonstances il peut être utile de poser des éléments +invisibles ayant une certaine hauteur. Cela permet par exemple de +respecter un interlignage ou bien d'éviter que certains éléments se +télescopent (en particulier avec des formules mathématiques +complexes). \LaTeX propose la commande \cmd{strut} qui permet de poser +un élément ayant exactement la hauteur et la profondeur de +l'interlignage classique. La classe étend un peu cette commande en +proposant trois commandes: \cmd{Strut}, \cmd{TopStrut} et +\cmd{BotStrut}. + +La commande \cmd{Strut} (avec une majuscule) fonctionne exactement +comme \cmd{strut} mais elle admet un argument optionnel qui est un +facteur d'agrandissement. Sa valeur par défaut est 1 ce qui donne donc +le comportement exact de \cmd{strut}. Par exemple, le code : +\begin{verbatim} +\begin{minipage}{0.5\linewidth} + Il y a une différence fondamentale entre $\displaystyle\int_0^{+\infty} f(x)dx$ + et son équivalent dans le domaine discret qui est la somme infinie + $\displaystyle\sum_{n=0}^{+\infty} f(n)$. + + Il y a une différence fondamentale entre $\displaystyle\int_0^{+\infty} f(x)dx$ + et son équivalent dans le domaine discret qui est la somme infinie + \Strut[2]$\displaystyle\sum_{n=0}^{+\infty} f(n)$. +\end{minipage} +\end{verbatim} +donne le résultat : + +\begin{minipage}{0.7\linewidth} + Il y a une différence fondamentale entre $\displaystyle\int_0^{+\infty} f(x)dx$ + et son équivalent dans le domaine discret qui est la somme infinie + $\displaystyle\sum_{n=0}^{+\infty} f(n)$. + + Il y a une différence fondamentale entre $\displaystyle\int_0^{+\infty} f(x)dx$ + et son équivalent dans le domaine discret qui est la somme infinie + \Strut[2]$\displaystyle\sum_{n=0}^{+\infty} f(n)$. +\end{minipage} + +Dans cet exemple, l'utilisation de \cmd{Strut} n'était peut-être pas +la meilleure chose à faire si le bas de la formule somme ne gênait +pas. Pour permettre une plus grande souplesse dans ce type +d'espacement, la classe offre donc les deux commandes supplémentaires +\cmd{TopStrut} et \cmd{BotStrut} qui fonctionnent strictement comme +\cmd{Strut}, qui donne exactement le même espacement vertical sauf que +\cmd{TopStrut} a une profondeur nulle et \cmd{BotStrut} une hauteur +nulle. Toujours pour rester dans l'exemple ci-dessus, il est possible +que \cmd{TopStrut} ait été un meilleur choix. + +\subsection{Unités} +La classe offre un système souple pour écrire les nombres avec +unités. L'extension \package{siunitx} est bien plus puissante que ce +que propose la classe mais les fonctionnalités desservies par +\package{siunitx} et non proposées par la classe sont de peu d'intérêt +pour un ouvrage scientifique du secondaire et, en contre-partie, la +syntaxe proposée par la classe est bien plus souple. + +L'idée générale est de composer un nombre avec unité en utilisant une +macro \cmd{uxxx} ou \cmd{Uxxx} où \texttt{xxx} dépend de l'unité +voulue. La différence entre la version minuscule et la version +majuscule est que celle en minuscule compose un nombre décimal (des +chiffres avec un éventuel séparateur décimal) tandis que la version +majuscule compose l'argument en mode mathématique. Cela permet de +pouvoir composer à la fois \Ucm{\sqrt{2}} et \ucm{1.4142}. + +Ces deux derniers exemples ont été produits respectivement par +\verb+\Ucm{\sqrt{2}}+ et \verb+\ucm{1.4142}+. On peut voir que même si +le source du deuxième exemple comportait un point décimal, la sortie a +affiché une virgule. On peut également s'apercevoir que les chiffres +ont un séparateur des milliers (ici au niveau de la partie décimale. + +Pour la version minuscule, l'argument est en fait composé en tant +qu'argument d'une commande \cmd{numprint} de l'extension +\package{numprint}. Toutes les possibilités de modification de +paramètre de \package{numprint} sont donc accessibles. Par exemple, si +on n'aime pas le séparateur décimal, on peut demander sa suppression +avec un appel à la commande \cmd{npthousandsep}. Par exemple : +\begin{verbatim} +\npthousandsep{}\ucm{1.4142} +\end{verbatim} +donne le résultat +\begingroup +\npthousandsep{}\ucm{1.4142} +\endgroup +sans l'espace fine de séparation des milliers. Pour plus de détails, +voir la documentation de l'extension \package{numprint}. La classe +offre une grande quantité de commandes pour afficher un nombre avec +une unité. Toutes ces commandes existent au format minuscule et +majuscule comme le \cmd{ucm} et \cmd{Ucm} ci-dessus. On trouve : +\newcommand\uu[1]{% + \cmd{u#1\{1234\}} & + \csname u#1\endcsname{1234} +} +\newcommand\uutitre[1]{% + \multicolumn{6}{|c|}{\bfseries #1} \\*\hline +} +\newcommand\uusoustitre[1]{% + \multicolumn{6}{|c|}{\hrulefill{} #1 \hrulefill} \\* +} +\begin{center} + \begin{longtable}{*{3}{|l|l|}} + \hline + \uutitre{Macros d'unités} + \endfirsthead + \hline + \uutitre{Macros d'unités (suite)} + \endhead + \uusoustitre{Unités de longueur} + \uu{ym} & + \uu{zm} & + \uu{am} \\* + \uu{fm} & + \uu{pm} & + \uu{nm} \\* + \uu{micron} & + \uu{mm} & + \uu{cm} \\* + \uu{dm} & + \uu{m} & + \uu{dam}\\* + \uu{hm} & + \uu{km} & + \uu{Mm} \\* + \uu{Gm} & + \uu{Tm} & + \uu{Pm} \\* + \uu{Em} & + \uu{Zm} & + \uu{Ym} \\\hline + \uusoustitre{Unités de surface} + \uu{mmq} & + \uu{cmq} & + \uu{dmq} \\* + \uu{mq} & + \uu{damq}& + \uu{hmq} \\* + \uu{kmq} & + \uu{ha} & & \\\hline + \uusoustitre{Unités de volume} + \uu{mmc} & + \uu{cmc} & + \uu{dmc} \\* + \uu{mc} & + \uu{damc}& + \uu{hmc} \\* + \uu{kmc} & + \uu{hl} & + \uu{dal} \\* + \uu{l} & + \uu{dl} & + \uu{cl} \\* + \uu{ml} & + \uu{hel} & + \uu{dael}\\* + \uu{el} & + \uu{del} & + \uu{cel} \\* + \uu{mel} & & & & \\\hline + \uusoustitre{Unités de temps} + \uu{s} & + \uu{min}& + \uu{h} \\\hline + \uusoustitre{Unités de vitesse et débit} + \uu{ms} & + \uu{mh} & + \uu{kms} \\* + \uu{kmmin}& + \uu{kmh} & + \uu{ls} \\\hline + \uusoustitre{Unités de masse} + \uu{mg} & + \uu{cg} & + \uu{dg} \\* + \uu{g} & + \uu{dag}& + \uu{hg} \\* + \uu{kg} & & & &\\\hline + \uusoustitre{Unités diverses} + \uu{pc} & + \uu{deg} & + \uu{degc}\\* + \uu{euro}& & & & \\\hline + \end{longtable} +\end{center} + +Si une unité semble manquer, on peut toujours en créer une autre avec +la commande \cmd{newunit}. Celle-ci demande deux arguments, le premier +étant le fin du nom de la commande et le deuxième la façon de composer +l'unité. Par exemple, la classe déclare \cmd{ucm} avec la syntaxe : +\begin{verbatim} +\newunit{cm}{\text{cm}} +\end{verbatim} +La commande \cmd{text} est nécessaire parce que l'argument est composé +en mode mathématique. Si on veut une commande pour exprimer une donnée +en newtons, il suffit donc de faire : +\begin{verbatim} +\newunit{N}{\text{N}} +\uN{9.81} +\end{verbatim} +qui donne : +\newunit{N}{\text{N}} +\uN{9.81} + +De même, si l'aspect d'une unité n'est pas celui souhaité, on peut le +modifier en utilisant la commande \cmd{renewunit}. Celle-ci fonctionne +strictement comme \cmd{newunit}. Par exemple : +\begin{verbatim} +Avant \ukmh{5}. +\renewunit{kmh}{\text{km/h}} +Après \ukmh{5}. +\end{verbatim} +donne le résultat : +Avant \ukmh{5}. +\renewunit{kmh}{\text{km/h}} +Après \ukmh{5}. + + +\chapter{Extention \\sesamanuelTIKZ.sty}\label{chTIKZ} + +\begin{prerequis} +\Logosesa{} ayant pour objectif de faciliter la diffusion libre de ses ressources, le code source du manuel \Logosesa{} 2\up{de} a été volontairement le plus neutre possible. + +Mais pour une homogénéité du rendu de la version imprimable, des commandes personnalisées ont dû être implémentées. +\vfill\columnbreak + +Vous avez pu voir, par exemple, les tableaux dans le chapitre précédent. + +\begin{itemize} + \item Ce chapitre traite de l'homogénéisation des figures. +\end{itemize} + +\end{prerequis} + +\begin{autoeval} + \begin{exercice} + Pourquoi avoir choisir de créer une extension à part de la classe? + \end{exercice} + \begin{corrige} +Les commandes spéciales TIKZ n'ont pas été incluses dans la classe pour permettre à l'utilisateur de rester libre de la mise en forme de ses figures. Le niveau d'exigence pour une impression en rotatives n'est pas nécessaire à tous. + \end{corrige} + +\begin{exercice} + Pourquoi avoir choisi TIKZ et non pas PSTRIKS ? +\end{exercice} +\begin{corrige} + Citons le vénérable Sage \og le meilleur logiciel est celui qu'on a l'habitude d'utiliser\fg{}... + + Une grande majorité des auteurs du manuel \Logosesa{} 2\up{de} étant utilisateurs de TIKZ, le choix a donc été fait d'utiliser TIKZ pour le manuel même si cet échantillon n'est peut-être pas représentatif de la communauté mondiale des utilisateurs de \LaTeX. +\end{corrige} + +\end{autoeval} + +\cours +\begin{attention} + Cette extention n'est nécessaire que pour utiliser des sources du manuel \Logosesa{} 2\up{de} qui contiennent des figures. +\end{attention} +\section{L'appel à TIKZ} +L'extention commence par appeler TIKZ et les librairies nécessaires. + +\begin{verbatim} +\usepackage{tikz} % appel général +\usepackage{pgf} % appel général +\usepackage{tkz-tab} % extention pour les tableaux de variations +\usetikzlibrary{arrows} % librairie pour les flèches +\usetikzlibrary{patterns} % librairie pour les hachures et les pointillés +\end{verbatim} + +\section{La feuille de style} +\begin{code} suivant crée la feuille de style du manuel (épaisseur et couleur des traits). +\begin{verbatim} +\tikzstyle{general}=[line width=0.3mm, >=stealth, x=1cm, y=1cm,line cap=round, line join=round] +\definecolor{CyanTikz40}{cmyk}{.4,0,0,0} +\definecolor{CyanTikz20}{cmyk}{.2,0,0,0} +\tikzstyle{quadrillage}=[line width=0.3mm, color=CyanTikz40] +\tikzstyle{quadrillageNIV2}=[line width=0.3mm, color=CyanTikz20] +\tikzstyle{quadrillage55}=[line width=0.3mm, color=CyanTikz40, xstep=0.5, ystep=0.5] +\tikzstyle{cote}=[line width=0.3mm, <->] +\tikzstyle{epais}=[line width=0.5mm, line cap=butt] +\tikzstyle{tres epais}=[line width=0.8mm, line cap=butt] +\tikzstyle{axe}=[line width=0.3mm, ->, color=Noir, line cap=rect] +\end{verbatim} +\end{code} + +En détails: + +\begin{syntaxe}\begin{verbatim} +\tikzstyle{general}=[line width=0.3mm, >=stealth, x=1cm, y=1cm,line cap=round, line join=round] + \end{verbatim} + +définit pour tous les graphiques, + +\begin{itemize} + \item l'épaisseur des traits (ici \umm{0.3} correspondant à l'épaisseur minimum pour que les rotatives d'impression professionnelles fassent de la polychromie.) + +\item la forme de flèches en bout de segments (ici \verb+stealth+ correspond à une flèche en forme d'aile d'avion) + +\item l'unité choisie (ici le \ucm{} en abscisse et en ordonnée) + +\item la forme des extrémités de segments (ici \verb+round+ correspond à une forme arrondie) +\item la forme des jonctions de segments (ici \verb+round+ correspond à une forme arrondie) +\end{itemize} +\end{syntaxe} + +\vfill \clearpage +Ainsi, le code minimum pour une figure TIKZ sera : +\begin{verbatim} + \begin{tikzpicture}[general] + ... + \end{tikzpicture} +\end{verbatim} + +\begin{remarque} + Le choix de l'unité en \ucm{} a été dicté pour faciliter les recherches des coordonnées des points lors de la construction des figures. La réduction ou l'agrandissement des figures se fait avec les options \environ{scale}, \environ{xscale} et \environ{yscale} +\end{remarque} + +\begin{multicols}{2} + \begin{code} + +\begin{verbatim} + \begin{tikzpicture}[general] + \draw (0,0) circle (1); + \end{tikzpicture} + \begin{tikzpicture}[general, scale=1.5] + \draw (0,0) circle (1); + \end{tikzpicture} + \begin{tikzpicture}[general, xscale=1.3, yscale=0.6] + \draw (0,0) circle (1); + \end{tikzpicture} +\end{verbatim} + \end{code} + \begin{result} + + \end{result} + \begin{center} +\begin{tikzpicture}[general] + \draw (0,0) circle (1); + \end{tikzpicture} + \hfill + \begin{tikzpicture}[general, scale=1.5] + \draw (0,0) circle (1); + \end{tikzpicture} + + \begin{tikzpicture}[general, xscale=1.3, yscale=0.6] + \draw (0,0) circle (1); + \end{tikzpicture} + \end{center} +\end{multicols} + +\begin{syntaxe} Les commandes suivantes permettent de faire des quadrillages avec l'option \environ{grid} + \begin{verbatim} +\definecolor{CyanTikz40}{cmyk}{.4,0,0,0} +\definecolor{CyanTikz20}{cmyk}{.2,0,0,0} +\tikzstyle{quadrillage}=[line width=0.3mm, color=CyanTikz40] +\tikzstyle{quadrillageNIV2}=[line width=0.3mm, color=CyanTikz20] +\tikzstyle{quadrillage55}=[line width=0.3mm, color=CyanTikz40, xstep=0.5, ystep=0.5] +\end{verbatim} + +L'épaisseur des traits ne pouvant être diminuer pour avoir deux niveaux de quadrillage, c'est la couleur du trait qui fait la différence. +Le quadrillage de niveau 2 devra être fait avant le quadrillage simple pour que la couleur foncée recouvre la couleur claire. +\end{syntaxe} + + +\begin{multicols}{2} + \begin{code} + +\begin{verbatim} + \begin{tikzpicture}[general] + \draw[quadrillage] (0,0) grid (3,3); + \end{tikzpicture} + \begin{tikzpicture}[general] + \draw[quadrillageNIV2, step=0.2] (0,0) grid (3,3); + \draw[quadrillage] (0,0) grid (3,3); + \end{tikzpicture} + \begin{tikzpicture}[general] + \draw[quadrillage55] (0,0) grid (3,3); + \end{tikzpicture} +\end{verbatim} + \end{code} + \columnbreak + \begin{result} + + \end{result} + \begin{center} + \begin{tikzpicture}[general] + \draw[quadrillage] (0,0) grid (3,3); + \end{tikzpicture} + \begin{tikzpicture}[general] + \draw[quadrillageNIV2, step=0.2] (0,0) grid (3,3); + \draw[quadrillage] (0,0) grid (3,3); + \end{tikzpicture} + \begin{tikzpicture}[general] + \draw[quadrillage55] (0,0) grid (3,3); + \end{tikzpicture} + \end{center} +\end{multicols} + +\begin{syntaxe} Les commandes suivantes donnent différents types de segments (épaisseur et extrémités). + +Lorsque l'épaisseur du trait est augmentée, la forme ronde de l'extrémité déborde. Les jonctions ne sont pas nettes. L'extrémité a donc été changée pour \environ{butt} (coupe un peu avant) ou \environ{rect} (coupe nette aux coordonnées). + +Les exemples ci-dessous sont donnés sur un quadrillage pour mieux apprécier la différence (le quadrillage est ou n'est pas recouvert). +\begin{verbatim} +\tikzstyle{cote}=[line width=0.3mm, <->] +\tikzstyle{epais}=[line width=0.5mm, line cap=butt] +\tikzstyle{tres epais}=[line width=0.8mm, line cap=butt] +\tikzstyle{axe}=[line width=0.3mm, ->, color=Noir, line cap=rect] +\end{verbatim} +\end{syntaxe} + + +\begin{multicols}{2} + \begin{code} +\begin{verbatim} +\begin{tikzpicture}[general] +\draw[quadrillageNIV2] (0,0) grid (3,3); + \draw[cote] (0,3)--(3,3); + \draw[epais] (0,2)--(3,2); + \draw[tres epais] (0,1)--(3,1); + \draw[axe] (0,0)--(3,0); + \end{tikzpicture} +\end{verbatim} + \end{code} + \columnbreak + \begin{result} + + \end{result} + \begin{center} + \begin{tikzpicture}[general] +\draw[quadrillageNIV2] (0,0) grid (3,3); + \draw[cote] (0,3)--(3,3); + \draw[epais] (0,2)--(3,2); + \draw[tres epais] (0,1)--(3,1); + \draw[axe] (0,0)--(3,0); + \end{tikzpicture} + \end{center} +\end{multicols} + +\section{Les commandes personnalisées} + +\begin{syntaxe} +La commande suivante permet d'obtenir un quadrillage Seyes. Les arguments obligatoires sont les coordonnées du coin inférieur gauche et du coin supérieur droit. Les couleurs utilisées sont celles du nuancier de la classe. + + \begin{verbatim} +\newcommand{\quadrillageSeyes}[2]{\draw[line width=0.3mm, color=A1!10, ystep=0.2, xstep=0.8] +#1 grid #2; +\draw[line width=0.3mm, color=A1!30, xstep=0.8, ystep=0.8] #1 grid #2; } + \end{verbatim} +\end{syntaxe} + + +\begin{multicols}{2} + \begin{code} +\begin{verbatim} +\begin{tikzpicture}[general] +\quadrillageSeyes{(0,0)}{(4,4)} + \end{tikzpicture} +\end{verbatim} + \end{code} + \columnbreak + \begin{result} + + \end{result} + \begin{center} + \begin{tikzpicture}[general] +\quadrillageSeyes{(0,0)}{(4,4)} + \end{tikzpicture} + \end{center} +\end{multicols} +\begin{syntaxe} +La commande suivante crée un axe des abscisses gradués pour un repère de type fonction. Les arguments obligatoires sont dans l'ordre: l'abscisse minimale, l'abscisse maximale, la liste des abscisses à graduer. Un argument optionnel permet de translater verticalement l'axe si les ordonnées ne commencent pas à 0. + + \begin{verbatim} +\newcommand{\axeX}[4][0]{\draw[axe] (#2,#1)--(#3,#1); \foreach \x in {#4} +{\draw (\x,#1) node {\small $+$}; +\draw (\x,#1) node[below] {\small $\x$};}} + \end{verbatim} + +\end{syntaxe} + + +\begin{multicols}{2} + \begin{code} +\begin{verbatim} +\begin{tikzpicture}[general] +\axeX[2]{0}{3}{1, 2} +\axeX{0}{3}{1, 2} + \end{tikzpicture} +\end{verbatim} + \end{code} + \columnbreak + \begin{result} + + \end{result} + \begin{center} + \begin{tikzpicture}[general] +\axeX[2]{0}{3}{1, 2} +\axeX{0}{3}{1, 2} + \end{tikzpicture} + \end{center} +\end{multicols} +\begin{syntaxe} +La commande suivante crée de même l'axe de ordonnées d'un repère de type fonction + + \begin{verbatim} +\newcommand{\axeY}[4][0]{\draw[axe] (#1,#2)--(#1,#3); \foreach \y in {#4} +{\draw (#1, \y) node {\small $+$}; \draw (#1, \y) node[left] {\small $\y$};}} + \end{verbatim} + +\end{syntaxe} + + +\begin{multicols}{2} + \begin{code} +\begin{verbatim} +\begin{tikzpicture}[general] +\axeY[2]{0}{3}{1,2} +\axeY{0}{3}{1,2} + \end{tikzpicture} +\end{verbatim} + \end{code} + \columnbreak + \begin{result} + + \end{result} + \begin{center} + \begin{tikzpicture}[general] +\axeY[2]{0}{3}{1,2} +\axeY{0}{3}{1,2} + \end{tikzpicture} + \end{center} +\end{multicols} +Soit, ensemble +\begin{multicols}{2} + \begin{code} +\begin{verbatim} +\begin{tikzpicture}[general] +\axeY{0}{3}{1,2} +\axeX{0}{3}{1, 2} +\end{tikzpicture} +\begin{tikzpicture}[general] +\axeY{1}{4}{2,3} +\axeX[2]{0}{3}{1,2} + \end{tikzpicture} +\end{verbatim} + \end{code} + \columnbreak + \begin{result} + + \end{result} + \begin{center} + \begin{tikzpicture}[general] +\axeY{0}{3}{1,2} +\axeX{0}{3}{1, 2} + \end{tikzpicture} + \begin{tikzpicture}[general] +\axeY{1}{4}{2,3} +\axeX[2]{0}{3}{1,2} + \end{tikzpicture} + \end{center} +\end{multicols} +\begin{syntaxe} + La commande suivante crée un axe des abscisses pour un repère de géométrie avec $I$ pour repérer l'unité et sans graduation. Les arguments obligatoires sont dans l'ordre: l'abscisse minimale et l'abscisse maximale. Un argument optionnel permet de translater verticalement l'axe si les ordonnées ne commencent pas à 0. + + + \begin{verbatim} + \newcommand{\axeOI}[3][0]{\draw[axe] (#2,#1)--(#3,#1); + \draw (1,#1) node {\small $+$}; + \draw (1,#1) node[below] {\small $I$};} + \end{verbatim} + +\end{syntaxe} + + +\begin{multicols}{2} + \begin{code} +\begin{verbatim} +\begin{tikzpicture}[general] +\axeOI[2]{0}{3} +\axeOI{0}{3} +\end{tikzpicture} +\end{verbatim} + \end{code} + \columnbreak + \begin{result} + + \end{result} + \begin{center} + \begin{tikzpicture}[general] +\axeOI[2]{0}{3} +\axeOI{0}{3} + \end{tikzpicture} + \end{center} +\end{multicols} +\begin{syntaxe} +La commande suivante définit de même l'axe des ordonnées. + + \begin{verbatim} + \newcommand{\axeOJ}[3][0]{\draw[axe] (#1,#2)--(#1,#3); + \draw (#1, 1) node {\small $+$}; + \draw (#1, 1) node[left] {\small $J$};} + \end{verbatim} + +\end{syntaxe} + + +\begin{multicols}{2} + \begin{code} +\begin{verbatim} +\begin{tikzpicture}[general] +\axeOJ[2]{0}{3} +\axeOJ{0}{3} +\end{tikzpicture} +\end{verbatim} + \end{code} + \columnbreak + \begin{result} + + \end{result} + \begin{center} + \begin{tikzpicture}[general] +\axeOJ[2]{0}{3} +\axeOJ{0}{3} + \end{tikzpicture} + \end{center} +\end{multicols} + + +Soit, ensemble +\begin{multicols}{2} + \begin{code} +\begin{verbatim} +\begin{tikzpicture}[general] +\axeOI{-2}{3} +\axeOJ{0}{3} +\end{tikzpicture} +\end{verbatim} + \end{code} + \columnbreak + \begin{result} + + \end{result} + \begin{center} + \begin{tikzpicture}[general] +\axeOI{-2}{3} +\axeOJ{0}{3} + \end{tikzpicture} + \end{center} +\end{multicols} +\begin{syntaxe} +Les commandes suivantes permettent de rajouter des traits de graduation sur les axes crées avec les commandes \cmd{axeOI} et \cmd{axeOJ}. Un argument obligatoire : la liste des abscisses ou ordonnées. Un argument optionnel : la position de l'axe si autre que 0 (voir commande \cmd{axeX} ). + + \begin{verbatim} +\newcommand{\axeXgraduation}[2][0]{\foreach \x in {#2} {\draw (\x,#1) node {\small $+$};}} +\newcommand{\axeYgraduation}[2][0]{\foreach \y in {#2} {\draw (#1, \y) node {\small $+$}; }} + \end{verbatim} + +\end{syntaxe} + + +\begin{multicols}{2} + \begin{code} +\begin{verbatim} +\begin{tikzpicture}[general] + \draw[axe] (0,0)--(4,0); + \axeXgraduation{1, 2, 3} + \end{tikzpicture} +\end{verbatim} + \end{code} + \columnbreak + \begin{result} + + \end{result} + \begin{center} + \begin{tikzpicture}[general] + \axeOI{0}{4} + \axeXgraduation{1, 2, 3} + \axeOJ{0}{4} + \axeYgraduation{1, 2, 3} + \end{tikzpicture} + \end{center} +\end{multicols} +\begin{syntaxe} +Les commandes suivantes permettent d'afficher l'origine dans les deux types de repères : $0$ pour les types fonction et $O$ pour les géométriques. + +Attention, suivant le redimensionnement choisi, la position de l'origine peut empêcher de placer une abscisse et/ou une ordonnée $-1$. + + \begin{verbatim} +\newcommand{\origine}{\draw (0,0) node[below left] {\small $0$};} +\newcommand{\origineO}{\draw (0,0) node[below left] {$O$};} + \end{verbatim} +\end{syntaxe} + + +\begin{multicols}{2} + \begin{code} +\begin{verbatim} + \begin{tikzpicture}[general] +\axeX{-1}{2} +\axeY{-1}{2} +\origine + \end{tikzpicture} +\begin{tikzpicture}[general] +\axeOI{-1}{2} +\axeOJ{-1}{2} +\origineO + \end{tikzpicture} +\end{verbatim} + \end{code} + \columnbreak + \begin{result} + + \end{result} + \begin{center} + \begin{tikzpicture}[general] + \axeX{-1}{2}{1} + \axeY{-1}{2}{1} + \origine + \end{tikzpicture} + \begin{tikzpicture}[general] +\axeOI{-1}{2} +\axeOJ{-1}{2} +\origineO + \end{tikzpicture} + \end{center} +\end{multicols} + +\clearpage +\begin{syntaxe} +Les commandes suivantes permettent de placer le nom d'un point à partir de ses coordonnées. +\begin{itemize} + \item la commande \cmd{point} donnera juste le nom du point + \item la commande \cmd{pointGraphique} donnera le nom du point et repérera la point par une croix en forme de $+$ + \item la commande \cmd{pointFigure} donnera le nom du point et repérera la point par une croix en forme de $\times$ +\end{itemize} + + +\begin{verbatim} +\newcommand{\point}[4]{\draw (#1,#2) node[#4] {$#3$};} +\newcommand{\pointGraphique}[4]{\draw (#1,#2) node[#4] {$#3$}; +\draw (#1,#2) node {$+$};} +\newcommand{\pointFigure}[4]{\draw (#1,#2) node[#4] {$#3$}; +\draw (#1,#2) node {$\times$};} + \end{verbatim} + +\`A chaque fois, quatre arguments obligatoires: + +\begin{itemize} + \item abscisse du point + \item ordonnée du point + \item nom du point + \item positionnement du nom par rapport au point, au choix : \environ{above} (dessus) \environ{below} (dessous) \environ{right} (droite) \environ{left} (gauche) (on peut combiner : \environ{below left} positionnement vertical suivi de l'horizontal) +\end{itemize} + +\end{syntaxe} + + +\begin{multicols}{2} + \begin{code} +\begin{verbatim} + \begin{tikzpicture}[general] + \draw (0,0)--(1,0)--(0,1)--cycle; + \point{1}{0}{A}{right} + \pointFigure{1}{1}{B}{above right} + \end{tikzpicture} + \begin{tikzpicture}[general] + \draw[quadrillage55] (0,0)grid(2,2); + \pointGraphique{1.5}{0.5}{A}{below left} + \end{tikzpicture} +\end{verbatim} + \end{code} + \columnbreak + \begin{result} + + \end{result} + \begin{center} + \begin{tikzpicture}[general] + \draw (0,0)--(1,0)--(0,1)--cycle; + \point{1}{0}{A}{right} + \pointFigure{1}{1}{B}{above right} + \end{tikzpicture} + + \begin{tikzpicture}[general] + \draw[quadrillage55] (0,0)grid(2,2); + \pointGraphique{1.5}{0.5}{A}{below left} + \end{tikzpicture} + \end{center} +\end{multicols} +\begin{syntaxe}Dans des figures complexes, on peut être amené à définir des points qui servent régulièrement avec la commande \cmd{coordinate}. +Les commandes suivantes fonctionnent comme les précédentes mais les deux premiers arguments demandant l'abscisse et l'ordonnée du point sont remplacées par un argument unique qui est le code du point. Généralement, il s'agit aussi du nom du point + +\begin{verbatim} +\newcommand{\pointC}[3]{\draw (#1) node[#3] {$#2$};} +\newcommand{\pointCGraphique}[3]{\draw (#1) node[#3] {$#2$}; +\draw (#1) node {$+$};} +\newcommand{\pointCFigure}[3]{\draw (#1) node[#3] {$#2$}; +\draw (#1) node {$\times$};} + \end{verbatim} + +\end{syntaxe} + + +\begin{multicols}{2} + \begin{code} +\begin{verbatim} +\begin{tikzpicture}[general] +\coordinate (A) at (0,0); +\coordinate (B) at (1,0); +\coordinate (C) at (0,1); +\draw (A)--(B)--(C)--cycle; +\pointC{A}{A}{below left} +\pointC{C}{C}{above left} +\pointC{B}{B}{below right} + \end{tikzpicture} +\end{verbatim} + \end{code} + \columnbreak + \begin{result} + + \end{result} + \begin{center} + \begin{tikzpicture}[general] +\coordinate (A) at (0,0); +\coordinate (B) at (1,0); +\coordinate (C) at (0,1); +\draw (A)--(B)--(C)--cycle; +\pointC{A}{A}{below left} +\pointC{C}{C}{above left} +\pointC{B}{B}{below right} + \end{tikzpicture} + \end{center} +\end{multicols} +\AfficheCorriges +\end{document} diff --git a/Master/texmf-dist/doc/latex/sesamanuel/tiger.eps b/Master/texmf-dist/doc/latex/sesamanuel/tiger.eps new file mode 100644 index 00000000000..5588d5236b9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/sesamanuel/tiger.eps @@ -0,0 +1,2746 @@ +%!PS-Adobe-2.0 EPSF-1.2 +%%BoundingBox: 1 150 611 792 +/InitDictCount countdictstack def +gsave +save +mark +newpath +/showpage {} def +%!PS-Adobe-2.0 EPSF-1.2 +%%Creator: Adobe Illustrator(TM) 1.2d4 +%%For: OpenWindows Version 2 +%%Title: tiger.eps +%%CreationDate: 4/12/90 3:20 AM +%%DocumentProcSets: Adobe_Illustrator_1.2d1 0 0 +%%DocumentSuppliedProcSets: Adobe_Illustrator_1.2d1 0 0 +%%BoundingBox: 22 171 567 738 +%%EndComments + +%%BeginProcSet:Adobe_Illustrator_1.2d1 0 0 + +/Adobe_Illustrator_1.2d1 dup 100 dict def load begin +% definition operators +/bdef {bind def} bind def +/ldef {load def} bdef +/xdef {exch def} bdef +% graphic state operators +/_K { 3 index add neg dup 0 lt {pop 0} if 3 1 roll } bdef +/_k /setcmybcolor where { + /setcmybcolor get +} { + { 1 sub 4 1 roll _K _K _K setrgbcolor pop } bind +} ifelse def +/g {/_b xdef /p {_b setgray} def} bdef +/G {/_B xdef /P {_B setgray} def} bdef +/k {/_b xdef /_y xdef /_m xdef /_c xdef /p {_c _m _y _b _k} def} bdef +/K {/_B xdef /_Y xdef /_M xdef /_C xdef /P {_C _M _Y _B _k} def} bdef +/d /setdash ldef +/_i currentflat def +/i {dup 0 eq {pop _i} if setflat} bdef +/j /setlinejoin ldef +/J /setlinecap ldef +/M /setmiterlimit ldef +/w /setlinewidth ldef +% path construction operators +/_R {.25 sub round .25 add} bdef +/_r {transform _R exch _R exch itransform} bdef +/c {_r curveto} bdef +/C /c ldef +/v {currentpoint 6 2 roll _r curveto} bdef +/V /v ldef +/y {_r 2 copy curveto} bdef +/Y /y ldef +/l {_r lineto} bdef +/L /l ldef +/m {_r moveto} bdef +% path painting operators +/n /newpath ldef +/N /n ldef +/F {p fill} bdef +/f {closepath F} bdef +/S {P stroke} bdef +/s {closepath S} bdef +/B {gsave F grestore S} bdef +/b {closepath B} bdef +end +%%EndProcSet +%%EndProlog + +%%Page: 1 1 + +Adobe_Illustrator_1.2d1 begin + +.8 setgray +%clippath fill +-110 -300 translate +1.1 dup scale + +0 g +0 G +0 i +0 J +0 j +0.172 w +10 M +[]0 d +0 0 0 0 k + +177.696 715.715 m +177.797 713.821 176.973 713.84 v +176.149 713.859 159.695 761.934 139.167 759.691 C +156.95 767.044 177.696 715.715 V +b +181.226 718.738 m +180.677 716.922 179.908 717.221 v +179.14 717.519 180.023 768.325 159.957 773.199 C +179.18 774.063 181.226 718.738 V +b +208.716 676.41 m +210.352 675.45 209.882 674.773 v +209.411 674.096 160.237 686.898 150.782 668.541 C +154.461 687.428 208.716 676.41 V +b +205.907 666.199 m +207.763 665.803 207.529 665.012 v +207.296 664.221 156.593 660.879 153.403 640.478 C +150.945 659.563 205.907 666.199 V +b +201.696 671.724 m +203.474 671.061 203.128 670.313 v +202.782 669.565 152.134 673.654 146.002 653.936 C +146.354 673.175 201.696 671.724 V +b +190.991 689.928 m +192.299 688.554 191.66 688.033 v +191.021 687.512 147.278 713.366 133.131 698.324 C +141.872 715.467 190.991 689.928 V +b +183.446 685.737 m +184.902 684.52 184.326 683.929 v +183.75 683.339 137.362 704.078 125.008 687.531 C +131.753 705.553 183.446 685.737 V +b +180.846 681.665 m +182.454 680.657 181.964 679.994 v +181.474 679.331 132.692 693.554 122.709 675.478 C +126.934 694.251 180.846 681.665 V +b +191.58 681.051 m +192.702 679.52 192.001 679.085 v +191.3 678.65 151.231 709.898 135.273 696.793 C +146.138 712.674 191.58 681.051 V +b +171.8 710 m +172.4 708.2 171.6 708 v +170.8 707.8 142.2 749.8 122.999 742.2 C +138.2 754 171.8 710 V +b +172.495 703.021 m +173.47 701.392 172.731 701.025 v +171.993 700.657 135.008 735.501 117.899 723.939 C +130.196 738.739 172.495 703.021 V +b +172.38 698.651 m +173.502 697.12 172.801 696.685 v +172.1 696.251 132.031 727.498 116.073 714.393 C +126.938 730.274 172.38 698.651 V +b +0 J 1 w +170.17 696.935 m +170.673 690.887 171.661 684.318 173.4 681.199 C +169.8 668.799 178.6 655.599 V +178.2 648.399 179.8 645.199 V +183.8 636.799 188.6 635.999 v +192.484 635.352 201.207 632.283 211.068 630.879 c +228.2 616.799 225 603.999 V +224.6 587.599 221 585.999 V +232.6 597.199 223 580.399 V +218.6 561.599 l +244.2 583.199 228.6 564.799 V +218.6 538.799 l +238.2 557.199 231 548.799 V +227.8 539.999 l +271 567.199 240.2 537.599 V +248.2 541.199 252.6 538.399 V +259.4 539.599 258.6 537.999 V +237.8 527.599 234.2 509.199 V +242.6 519.199 239.4 508.399 V +239.8 496.799 l +243.8 518.399 243.4 480.799 V +262.6 498.799 251 477.999 V +251 461.199 l +266.2 477.599 259.8 464.799 V +269.8 473.599 265.8 458.399 V +265 447.999 269.4 459.199 V +285.4 489.799 279.4 463.599 V +278.6 444.399 283.4 459.199 V +283.8 448.799 293 441.599 V +291.8 492.399 304.6 456.399 V +308.6 439.999 l +311.4 449.199 311 454.399 V +325.8 470.799 319 446.399 V +334.2 469.199 331 455.999 V +323.4 439.999 325 435.199 V +341.8 469.999 343 471.599 V +341 429.198 351.8 465.199 V +357.4 453.199 354.6 448.799 V +362.6 456.799 361.8 459.999 V +366.4 468.199 369.2 454.599 V +371 445.199 372.6 448.399 V +376.6 424.398 377.8 447.199 V +379.4 460.799 372.2 472.399 V +373 475.599 370.2 479.599 v +383.8 457.999 376.6 486.799 V +387.801 478.799 389.001 478.799 V +375.4 501.999 384.2 497.199 V +379 507.599 397.001 495.599 V +381 511.599 398.601 501.999 V +406.601 495.599 399.001 505.599 V +384.6 521.599 406.601 503.599 V +418.201 487.199 419.001 484.399 V +409.001 513.599 404.601 516.399 V +413.001 552.799 454.201 537.199 V +461.001 519.999 465.401 538.399 V +478.201 544.799 489.401 517.199 V +493.401 530.799 492.601 533.599 V +499.401 532.399 498.601 533.599 V +511.801 529.199 513.001 529.999 V +519.801 523.199 520.201 526.799 V +529.401 523.999 527.401 527.599 V +536.201 511.999 536.601 508.399 V +539.001 522.399 l +541.001 519.599 l +542.601 527.199 541.801 528.399 v +541.001 529.599 561.801 521.599 566.601 500.799 C +568.601 492.399 l +574.601 507.199 573.001 511.199 V +578.201 510.399 578.601 505.999 V +582.601 529.199 577.801 535.199 V +582.201 535.999 583.401 532.399 V +583.401 539.599 l +590.601 538.799 590.601 541.199 V +595.001 545.199 597.001 540.399 V +584.601 575.599 603.001 556.399 V +610.201 545.599 606.601 564.399 v +603.001 583.199 599.001 584.799 603.801 585.199 C +604.601 588.799 602.601 590.399 v +600.601 591.999 603.801 590.399 y +608.601 586.399 603.401 608.399 V +609.801 606.799 597.801 635.999 V +600.601 638.399 596.601 646.799 V +604.601 642.399 607.401 643.999 V +607.001 645.599 603.801 649.599 V +582.201 704.4 602.601 682.399 V +614.451 668.849 608.051 691.649 V +598.94 715.659 599.717 719.955 V +170.17 696.935 l +b +0.2 0.55 0.85 0 k +599.717 719.755 m +600.345 719.574 602.551 718.45 603.801 716.8 C +610.601 706 605.401 724.4 V +596.201 753.2 605.001 742 V +611.001 734.8 607.801 748.4 v +603.936 764.827 601.401 771.2 y +613.001 766.4 586.201 806 V +595.001 802.4 l +575.401 842 553.801 847.2 V +545.801 853.2 l +584.201 891.2 571.401 928 V +564.601 933.2 555.001 924 V +548.601 919.2 542.601 920.8 V +511.801 919.6 509.801 919.6 v +507.801 919.6 473.001 956.8 407.401 939.2 C +402.201 937.2 397.801 938.4 V +379.4 954.4 330.6 931.6 v +320.6 929.6 319 929.6 v +317.4 929.6 314.6 929.6 306.6 923.2 c +298.6 916.8 298.2 916 296.2 914.4 C +279.8 903.2 275 902.4 V +263.4 896 259 886 V +255.4 884.8 l +253.8 877.6 253.4 876.4 V +248.6 872.8 247.8 867.2 V +239 861.2 239.4 856.8 V +237.8 851.6 237 846.8 V +229.8 842 230.6 839.2 V +223 825.2 224.2 818.4 V +217.8 818.8 215 816.4 V +214.2 811.6 212.6 811.2 V +209.8 810 212.2 806 V +210.6 803.2 210.2 801.6 V +211 798.8 206.6 793.2 V +200.2 774.4 202.2 769.2 V +202.6 764.4 199.8 762.8 V +196.2 763.2 204.6 751.2 V +205.4 750 202.2 747.6 V +185 744 182.6 727.6 V +169 712.8 169 707.6 v +169 705.295 169.271 702.148 169.97 697.535 C +169.4 689.199 197 688.399 v +224.6 687.599 599.717 719.755 Y +b +184.4 697.4 m +159.4 736.8 173.8 680.399 Y +182.6 645.999 312.2 683.599 y +481.001 714 492.201 718 v +503.401 722 598.601 715.6 y +593.001 732.4 L +528.201 778.8 509.001 755.6 495.401 759.6 c +481.801 763.6 484.201 754 481.001 753.2 c +477.801 752.4 438.601 777.2 432.201 776.4 c +425.801 775.6 400.459 799.351 415.401 767.6 c +431.401 733.6 357 728.4 340.2 739.6 c +323.4 750.8 347.4 721.2 Y +365.8 701.2 331.4 718 y +297 730.8 273 705.2 269.8 704.4 c +266.6 703.6 261.8 700.4 261 706.8 c +260.2 713.2 252.69 729.901 221 703.6 c +201 686.999 187.2 709 Y +184.4 697.4 L +f +0.09 0.5 0.772 0 k +433.51 774.654 m +427.11 773.854 401.743 797.593 416.71 765.854 c +433.31 730.654 358.31 726.654 341.51 737.854 c +324.709 749.054 348.71 719.454 Y +367.11 699.454 332.709 716.254 y +298.309 729.054 274.309 703.454 271.109 702.654 c +267.909 701.854 263.109 698.654 262.309 705.054 c +261.509 711.454 254.13 727.988 222.309 701.854 c +201.073 684.508 187.582 705.963 Y +184.382 695.854 L +159.382 735.654 174.454 677.345 Y +183.255 642.944 313.509 681.854 y +482.31 712.254 493.51 716.254 v +504.71 720.254 599.038 713.927 y +593.51 731.236 L +528.71 777.636 510.31 753.854 496.71 757.854 c +483.11 761.854 485.51 752.254 482.31 751.454 c +479.11 750.654 439.91 775.454 433.51 774.654 c +f +0.081 0.45 0.695 0 k +434.819 772.909 m +428.419 772.109 403.685 796.138 418.019 764.109 c +434.219 727.908 359.619 724.908 342.819 736.108 c +326.019 747.308 350.019 717.708 Y +368.419 697.708 334.019 714.508 y +299.619 727.308 275.618 701.708 272.418 700.908 c +269.218 700.108 264.418 696.908 263.618 703.308 c +262.818 709.708 255.57 726.075 223.618 700.108 c +201.145 682.017 187.964 702.926 Y +184.364 694.308 L +160.564 733.308 175.109 674.29 Y +183.909 639.89 314.819 680.108 y +483.619 710.508 494.819 714.508 v +506.019 718.508 599.474 712.254 y +594.02 730.072 L +529.219 776.472 511.619 752.109 498.019 756.109 c +484.419 760.109 486.819 750.509 483.619 749.708 c +480.419 748.908 441.219 773.709 434.819 772.909 c +f +0.072 0.4 0.618 0 k +436.128 771.163 m +429.728 770.363 404.999 794.395 419.328 762.363 c +436.128 724.807 360.394 723.518 344.128 734.363 c +327.328 745.563 351.328 715.963 Y +369.728 695.963 335.328 712.763 y +300.928 725.563 276.928 699.963 273.728 699.163 c +270.528 698.363 265.728 695.163 264.928 701.563 c +264.128 707.963 257.011 724.161 224.927 698.363 c +201.218 679.526 188.345 699.89 Y +184.345 692.763 L +162.545 729.563 175.764 671.235 Y +184.564 636.835 316.128 678.363 y +484.928 708.763 496.129 712.763 v +507.329 716.763 599.911 710.581 y +594.529 728.908 L +529.729 775.309 512.929 750.363 499.329 754.363 c +485.728 758.363 488.128 748.763 484.928 747.963 c +481.728 747.163 442.528 771.963 436.128 771.163 c +f +0.063 0.35 0.54 0 k +437.438 769.417 m +431.037 768.617 406.814 792.871 420.637 760.617 c +437.438 721.417 362.237 721.417 345.437 732.617 c +328.637 743.817 352.637 714.217 Y +371.037 694.217 336.637 711.017 y +302.237 723.817 278.237 698.217 275.037 697.417 c +271.837 696.617 267.037 693.417 266.237 699.817 c +265.437 706.217 258.452 722.248 226.237 696.617 c +201.291 677.035 188.727 696.854 Y +184.327 691.217 L +164.527 726.018 176.418 668.181 Y +185.218 633.78 317.437 676.617 y +486.238 707.017 497.438 711.017 v +508.638 715.017 600.347 708.908 y +595.038 727.745 L +530.238 774.145 514.238 748.617 500.638 752.617 c +487.038 756.617 489.438 747.017 486.238 746.217 c +483.038 745.417 443.838 770.217 437.438 769.417 c +f +0.054 0.3 0.463 0 k +438.747 767.672 m +432.347 766.872 406.383 790.323 421.947 758.872 c +441.147 720.072 363.546 719.672 346.746 730.872 c +329.946 742.072 353.946 712.472 Y +372.346 692.472 337.946 709.272 y +303.546 722.072 279.546 696.472 276.346 695.672 c +273.146 694.872 268.346 691.672 267.546 698.072 c +266.746 704.472 259.892 720.335 227.546 694.872 c +201.364 674.544 189.109 693.817 Y +184.309 689.672 L +166.309 722.872 177.073 665.126 Y +185.873 630.726 318.746 674.872 y +487.547 705.272 498.747 709.272 v +509.947 713.272 600.783 707.236 y +595.547 726.581 L +530.747 772.981 515.547 746.872 501.947 750.872 c +488.347 754.872 490.747 745.272 487.547 744.472 c +484.347 743.672 445.147 768.472 438.747 767.672 c +f +0.045 0.25 0.386 0 k +440.056 765.927 m +433.655 765.127 407.313 788.387 423.255 757.127 c +443.656 717.126 364.855 717.926 348.055 729.126 c +331.255 740.326 355.255 710.726 Y +373.655 690.726 339.255 707.526 y +304.855 720.326 280.855 694.726 277.655 693.926 c +274.455 693.126 269.655 689.926 268.855 696.326 c +268.055 702.726 261.332 718.422 228.855 693.126 c +201.436 672.053 189.491 690.781 Y +184.291 688.126 L +168.291 718.326 177.727 662.071 Y +186.527 627.671 320.055 673.126 y +488.856 703.526 500.056 707.526 v +511.256 711.526 601.22 705.563 y +596.056 725.417 L +531.256 771.817 516.856 745.126 503.256 749.126 c +489.656 753.127 492.056 743.526 488.856 742.726 c +485.656 741.926 446.456 766.727 440.056 765.927 c +f +0.036 0.2 0.309 0 k +441.365 764.181 m +434.965 763.381 407.523 786.056 424.565 755.381 c +446.565 715.781 366.164 716.181 349.364 727.381 c +332.564 738.581 356.564 708.981 Y +374.964 688.981 340.564 705.781 y +306.164 718.581 282.164 692.981 278.964 692.181 c +275.764 691.381 270.964 688.181 270.164 694.581 c +269.364 700.981 262.773 716.508 230.164 691.381 c +201.509 669.562 189.873 687.744 Y +184.273 686.581 L +169.872 714.981 178.382 659.017 Y +187.182 624.616 321.364 671.381 y +490.165 701.781 501.365 705.781 v +512.565 709.781 601.656 703.89 y +596.565 724.254 L +531.765 770.654 518.165 743.381 504.565 747.381 c +490.965 751.381 493.365 741.781 490.165 740.981 c +486.965 740.181 447.765 764.981 441.365 764.181 c +f +0.027 0.15 0.231 0 k +442.674 762.435 m +436.274 761.635 408.832 784.311 425.874 753.635 c +447.874 714.035 367.474 714.435 350.674 725.635 c +333.874 736.835 357.874 707.235 Y +376.274 687.235 341.874 704.035 y +307.473 716.835 283.473 691.235 280.273 690.435 c +277.073 689.635 272.273 686.435 271.473 692.835 c +270.673 699.235 264.214 714.595 231.473 689.635 c +201.582 667.071 190.255 684.707 Y +184.255 685.035 L +170.654 711.436 179.037 655.962 Y +187.837 621.562 322.673 669.635 y +491.474 700.035 502.674 704.035 v +513.874 708.035 602.093 702.217 y +597.075 723.09 L +532.274 769.49 519.474 741.635 505.874 745.635 c +492.274 749.635 494.674 740.035 491.474 739.235 c +488.274 738.435 449.074 763.235 442.674 762.435 c +f +0.018 0.1 0.154 0 k +443.983 760.69 m +437.583 759.89 410.529 782.777 427.183 751.89 c +449.183 711.09 368.783 712.69 351.983 723.89 c +335.183 735.09 359.183 705.49 Y +377.583 685.49 343.183 702.29 y +308.783 715.09 284.783 689.49 281.583 688.69 c +278.382 687.89 273.582 684.69 272.782 691.09 c +271.982 697.49 265.654 712.682 232.782 687.89 c +201.655 664.58 190.637 681.671 Y +184.236 683.49 L +171.236 707.49 179.691 652.907 Y +188.491 618.507 323.983 667.89 y +492.783 698.29 503.983 702.29 v +515.183 706.29 602.529 700.544 y +597.583 721.926 L +532.783 768.327 520.783 739.89 507.183 743.89 c +493.583 747.89 495.983 738.29 492.783 737.49 c +489.583 736.69 450.383 761.49 443.983 760.69 c +f +0.009 0.05 0.077 0 k +445.292 758.945 m +438.892 758.145 412.917 781.589 428.492 750.145 c +449.692 707.344 370.092 710.944 353.292 722.144 c +336.492 733.344 360.492 703.744 Y +378.892 683.744 344.492 700.544 y +310.092 713.344 286.092 687.744 282.892 686.944 c +279.692 686.144 274.892 682.944 274.092 689.344 c +273.292 695.744 267.095 710.768 234.092 686.144 c +201.727 662.089 191.018 678.635 Y +184.218 681.944 L +171.418 705.144 180.346 649.853 Y +189.146 615.453 325.292 666.144 y +494.093 696.544 505.293 700.544 v +516.493 704.544 602.965 698.872 y +598.093 720.763 L +533.292 767.163 522.093 738.144 508.493 742.144 c +494.893 746.145 497.293 736.544 494.093 735.744 c +490.892 734.944 451.692 759.745 445.292 758.945 c +f +1 g +184.2 680.399 m +171.4 702.4 181 646.799 Y +189.8 612.399 326.6 664.399 y +495.401 694.8 506.601 698.8 v +517.801 702.8 603.401 697.2 y +598.601 719.6 L +533.801 766 523.401 736.4 509.801 740.4 c +496.201 744.4 498.601 734.8 495.401 734 c +492.201 733.2 453.001 758 446.601 757.2 c +440.201 756.4 414.981 780.207 429.801 748.4 c +452.028 700.693 369.041 710.773 354.6 720.4 c +337.8 731.6 361.8 702 Y +380.2 681.999 345.8 698.8 y +311.4 711.6 287.4 685.999 284.2 685.199 c +281 684.399 276.2 681.199 275.4 687.599 c +274.6 694 268.535 708.856 235.4 684.399 c +201.8 659.599 191.4 675.599 Y +184.2 680.399 L +f +0 g +225.8 650.399 m +218.6 638.799 239.4 625.599 V +240.8 624.199 222.8 628.399 V +216.6 630.399 215 640.799 V +210.2 645.199 205.4 650.799 v +200.6 656.399 225.8 650.399 y +f +0.8 g +365.8 698 m +383.498 671.179 382.9 666.399 v +381.6 655.999 381.4 646.399 384.6 642.399 c +387.801 638.399 396.601 605.199 y +396.201 603.999 408.601 641.999 V +420.201 657.999 400.201 676.399 V +365 705.2 365.8 698 v +f +0 g +1 J 0.1 w +245.8 623.599 m +257 616.399 242.6 585.199 V +249 587.599 l +248.2 576.399 245 573.999 V +252.2 577.199 l +257 569.199 253 564.399 V +269.8 556.399 269 549.999 V +275.4 557.999 271.4 564.399 v +267.4 570.799 260.2 566.799 261 585.199 C +252.2 581.999 l +257.8 590.799 257.8 597.199 V +249.8 594.799 l +265.269 621.377 254.6 622.799 v +248.6 623.599 245.8 623.599 Y +f +0.8 g +278.2 606.799 m +281 611.199 278.2 610.399 v +275.4 609.599 244.2 594.799 238.2 585.199 C +272.6 609.599 278.2 606.799 V +f +288.6 598.799 m +291.4 603.199 288.6 602.399 v +285.8 601.599 254.6 586.799 248.6 577.199 C +283 601.599 288.6 598.799 V +f +301.8 613.999 m +304.6 618.399 301.8 617.599 v +299 616.799 267.8 601.999 261.8 592.399 C +296.2 616.799 301.8 613.999 V +f +278.6 570.399 m +278.6 576.399 275.8 575.599 v +273 574.799 237 557.199 231 547.599 C +273 573.199 278.6 570.399 V +f +279.8 581.199 m +281 585.999 278.2 585.199 V +276.2 585.199 249.8 573.599 243.8 563.999 C +273.4 585.599 279.8 581.199 V +f +265.4 533.599 m +255.4 525.999 l +265.8 533.599 269.4 532.399 V +262.6 521.199 261.8 515.999 V +272.2 528.799 277.8 528.399 V +285.4 527.999 285.4 517.199 V +291 527.599 294.2 527.199 V +295.4 520.799 294.2 513.999 V +298.2 521.599 302.2 519.999 V +308.6 521.999 307.8 510.399 V +307.8 499.999 307 497.199 V +312.6 523.599 315 523.999 V +323 525.199 327.8 516.399 V +323.8 523.999 328.6 521.999 V +339.4 520.399 342.6 513.599 V +335.8 525.599 341.4 522.399 V +348.2 522.399 349.4 515.999 V +357.8 494.799 359.8 493.199 V +352.2 514.799 353.8 514.799 V +351.8 526.799 357 511.999 V +353.8 525.999 359.4 525.199 v +365 524.399 369.4 514.399 377.8 516.799 C +387.401 511.199 389.401 580.399 V +265.4 533.599 L +f +0 g +0 J 1 w +270.2 626.399 m +285 632.399 325 626.399 V +332.2 625.999 339 634.799 v +345.8 643.599 372.6 650.799 379 648.799 C +388.601 642.399 l +389.401 641.199 l +401.801 630.799 402.201 623.199 v +402.601 615.599 387.801 567.599 378.2 551.599 c +368.6 535.599 359 523.199 339.8 525.599 C +319 529.599 293.4 525.599 v +264.2 527.199 261.4 535.199 v +258.6 543.199 272.6 558.399 y +277 566.799 275.8 581.199 v +274.6 595.599 275 623.599 270.2 626.399 c +f +0.1 0.6 0.45 0 k +292.2 624.399 m +300.6 605.999 271 540.799 y +269 539.199 283.66 533.154 293.8 535.599 c +304.746 538.237 345 533.999 Y +368.6 549.599 381.4 593.999 y +391.801 617.999 374.2 621.199 v +356.6 624.399 292.2 624.399 y +f +0.1 0.6 0.45 0.2 k +290.169 593.503 m +293.495 606.293 295.079 618.094 292.2 624.399 c +354.6 617.999 365.8 638.799 v +370.041 646.674 384.801 615.999 384.4 606.399 c +321.4 591.999 306.6 603.199 V +290.169 593.503 L +f +0.1 0.6 0.45 0.25 k +294.6 577.199 m +296.6 569.999 294.2 565.999 V +292.6 565.199 291.4 564.799 V +292.6 561.199 298.6 559.599 V +300.6 555.199 303 554.799 v +305.4 554.399 310.2 548.799 314.2 549.999 c +318.2 551.199 329.4 555.199 y +335 558.399 343.8 554.799 V +346.175 555.601 346.6 559.599 v +347.1 564.299 350.2 567.999 352.2 569.999 c +354.2 571.999 363.8 584.799 362.6 585.199 c +361.4 585.599 294.6 577.199 Y +f +0 0.55 0.5 0 k +290.2 625.599 m +287.4 603.199 290.6 594.799 v +293.8 586.399 293 584.399 292.2 580.399 c +291.4 576.399 295.8 566.399 301.4 560.399 C +313.4 558.799 l +328.6 562.399 337.8 559.599 V +346.794 558.256 350.2 573.199 V +355 579.599 362.2 582.399 v +369.4 585.199 376.6 626.799 372.6 634.799 c +368.6 642.799 354.2 647.199 338.2 631.599 c +322.2 615.999 320.2 632.799 290.2 625.599 C +b +0 0 0.2 0 k +0.5 w +291.8 550.799 m +291 552.799 286.6 553.199 V +264.2 556.799 255.8 569.199 V +249 574.799 253.4 563.199 V +263.8 542.799 270.6 539.999 V +287 535.999 291.8 550.799 V +b +0 0.55 0.5 0.2 k +1 w +371.742 614.771 m +372.401 622.677 374.354 631.291 372.6 634.799 c +366.154 647.693 349.181 642.305 338.2 631.599 c +322.2 615.999 320.2 632.799 290.2 625.599 C +288.455 611.636 289.295 601.624 v +326.6 613.199 327.4 607.599 V +329 610.799 338.2 610.799 v +347.4 610.799 370.142 611.971 371.742 614.771 C +f +0 g +0 0.55 0.5 0.35 K +2 w +328.6 624.799 m +333.4 619.999 329.8 610.399 V +315.4 594.399 317.4 580.399 v +S +0 0 0.2 0 k +0 G +0.5 w +280.6 539.999 m +276.2 552.799 285 545.999 V +289.8 543.999 288.6 542.399 v +287.4 540.799 281.8 536.799 280.6 539.999 C +b +285.64 538.799 m +282.12 549.039 289.16 543.599 V +293.581 541.151 292.04 540.719 v +287.48 539.439 292.04 536.879 285.64 538.799 C +b +290.44 538.799 m +286.92 549.039 293.96 543.599 V +298.335 541.289 296.84 540.719 v +293.48 539.439 296.84 536.879 290.44 538.799 C +b +297.04 538.599 m +293.52 548.839 300.56 543.399 V +304.943 541.067 303.441 540.519 v +300.48 539.439 303.441 536.679 297.04 538.599 C +b +303.52 538.679 m +300 548.919 307.041 543.479 V +310.881 541.879 309.921 540.599 v +308.961 539.319 309.921 536.759 303.52 538.679 C +b +310.2 537.999 m +305.4 550.399 314.6 543.999 V +319.4 541.999 318.2 540.399 v +317 538.799 318.2 535.599 310.2 537.999 C +b +0 g +0.1 0.6 0.45 0.25 K +2 w +281.8 555.199 m +295 557.999 301 554.799 V +307 553.599 308.2 553.999 v +309.4 554.399 312.6 554.799 y +S +315.8 546.399 m +327.8 559.999 339.8 555.599 v +346.816 553.026 345.8 556.399 346.6 559.199 c +347.4 561.999 347.6 566.199 352.6 569.199 c +S +0 0 0.2 0 k +0 G +0.5 w +333 562.399 m +329 573.199 326.2 560.399 v +323.4 547.599 320.2 543.999 318.6 541.199 C +318.6 535.999 327 536.399 V +337.8 536.799 338.2 539.599 v +338.6 542.399 337 553.999 333 562.399 C +b +0 g +0.1 0.6 0.45 0.25 K +2 w +347 555.199 m +350.6 557.599 353 556.399 v +S +353.5 571.599 m +356.4 576.499 361.2 577.299 v +S +0.7 g +0 G +1 w +274.2 534.799 m +292.2 531.599 296.6 533.199 V +305.4 533.199 297 531.199 V +284.2 531.199 276.2 532.399 V +264.6 537.999 274.2 534.799 V +f +0 0 0.2 0 k +0.5 w +288.2 627.999 m +305.8 627.999 307.8 627.199 V +315 596.399 311.4 588.799 V +310.2 585.999 307.4 591.599 V +289 624.399 285.8 626.399 v +282.6 628.399 287 627.999 288.2 627.999 C +b +211.1 630.699 m +220 628.999 232.6 626.399 V +237.4 603.999 240.6 599.199 v +243.8 594.399 240.2 594.399 236.6 597.199 c +233 599.999 218.2 613.999 216.2 618.399 c +214.2 622.799 211.1 630.699 y +b +232.961 626.182 m +238.761 624.634 239.77 622.419 v +240.778 620.205 238.568 616.908 y +237.568 613.603 236.366 615.765 v +235.164 617.928 232.292 625.588 232.961 626.182 c +b +0 g +233 626.399 m +236.6 621.199 240.2 621.199 v +243.8 621.199 244.182 621.612 247 620.999 c +251.6 619.999 251.2 621.999 257.8 620.799 c +260.44 620.319 263 621.199 265.8 619.999 c +268.6 618.799 271.8 619.599 273 621.599 c +274.2 623.599 279 627.799 Y +266.2 625.999 263.4 625.199 V +241 623.999 233 626.399 V +f +0 0 0.2 0 k +277.6 626.199 m +271.15 622.699 270.75 620.299 v +270.35 617.899 276 614.199 y +278.75 609.599 279.35 611.999 v +279.95 614.399 278.4 625.799 277.6 626.199 c +b +240.115 620.735 m +247.122 609.547 247.339 620.758 V +247.896 622.016 246.136 622.038 v +240.061 622.114 241.582 626.216 240.115 620.735 C +b +247.293 620.486 m +255.214 609.299 254.578 620.579 V +254.585 620.911 252.832 621.064 v +248.085 621.478 248.43 625.996 247.293 620.486 C +b +254.506 620.478 m +262.466 609.85 261.797 619.516 V +261.916 620.749 260.262 621.05 v +256.37 621.756 256.159 625.005 254.506 620.478 C +b +261.382 620.398 m +269.282 608.837 269.63 618.618 V +271.274 619.996 269.528 620.218 v +263.71 620.958 264.508 625.412 261.382 620.398 C +b +0 0 0.2 0.1 k +225.208 616.868 m +217.55 618.399 l +214.95 623.399 212.85 629.549 y +219.2 628.549 231.7 625.749 V +232.576 622.431 234.048 616.636 v +225.208 616.868 l +f +290.276 621.53 m +288.61 624.036 287.293 625.794 286.643 626.2 c +283.63 628.083 287.773 627.706 288.902 627.706 C +305.473 627.706 307.356 626.953 V +307.88 624.711 308.564 621.32 V +298.476 623.33 290.276 621.53 V +f +0.2 0.55 0.85 0 k +1 w +343.88 759.679 m +371.601 755.719 397.121 791.359 398.881 801.04 c +400.641 810.72 390.521 822.6 Y +391.841 825.68 387.001 839.76 381.721 849 c +376.441 858.24 360.54 857.266 343 858.24 c +327.16 859.12 308.68 835.8 307.36 834.04 c +306.04 832.28 312.2 793.999 313.52 788.279 c +314.84 782.559 312.2 756.159 y +346.44 765.259 316.16 763.639 343.88 759.679 c +f +0.08 0.44 0.68 0 k +308.088 833.392 m +306.792 831.664 312.84 794.079 314.136 788.463 c +315.432 782.847 312.84 756.927 y +345.512 765.807 316.728 764.271 343.944 760.383 c +371.161 756.495 396.217 791.487 397.945 800.992 c +399.673 810.496 389.737 822.16 Y +391.033 825.184 386.281 839.008 381.097 848.08 c +375.913 857.152 360.302 856.195 343.08 857.152 c +327.528 858.016 309.384 835.12 308.088 833.392 c +f +0.06 0.33 0.51 0 k +308.816 832.744 m +307.544 831.048 313.48 794.159 314.752 788.647 c +316.024 783.135 313.48 757.695 y +344.884 766.855 317.296 764.903 344.008 761.087 c +370.721 757.271 395.313 791.615 397.009 800.944 c +398.705 810.272 388.953 821.72 Y +390.225 824.688 385.561 838.256 380.473 847.16 c +375.385 856.064 360.063 855.125 343.16 856.064 c +327.896 856.912 310.088 834.44 308.816 832.744 c +f +0.04 0.22 0.34 0 k +309.544 832.096 m +308.296 830.432 314.12 794.239 315.368 788.831 c +316.616 783.423 314.12 758.463 y +343.556 767.503 317.864 765.535 344.072 761.791 c +370.281 758.047 394.409 791.743 396.073 800.895 c +397.737 810.048 388.169 821.28 Y +389.417 824.192 384.841 837.504 379.849 846.24 c +374.857 854.976 359.824 854.055 343.24 854.976 c +328.264 855.808 310.792 833.76 309.544 832.096 c +f +0.02 0.11 0.17 0 k +310.272 831.448 m +309.048 829.816 314.76 794.319 315.984 789.015 c +317.208 783.711 314.76 759.231 y +342.628 768.151 318.432 766.167 344.136 762.495 c +369.841 758.823 393.505 791.871 395.137 800.848 c +396.769 809.824 387.385 820.84 Y +388.609 823.696 384.121 836.752 379.225 845.32 c +374.329 853.888 359.585 852.985 343.32 853.888 c +328.632 854.704 311.496 833.08 310.272 831.448 c +f +1 g +344.2 763.2 m +369.4 759.6 392.601 792 394.201 800.8 c +395.801 809.6 386.601 820.4 Y +387.801 823.2 383.4 836 378.6 844.4 c +373.8 852.8 359.346 851.914 343.4 852.8 c +329 853.6 312.2 832.4 311 830.8 c +309.8 829.2 315.4 794.4 316.6 789.2 c +317.8 784 315.4 760 y +340.9 768.6 319 766.8 344.2 763.2 c +f +0.8 g +390.601 797.2 m +362.8 789.6 351.2 791.2 V +335.4 797.8 326.6 776 V +323 768.8 321 766.8 v +319 764.8 390.601 797.2 Y +f +0 g +394.401 799.4 m +365.4 787.2 355.4 787.6 v +339 792.2 330.6 777.6 V +322.2 768.4 319 766.8 V +318.6 765.2 325 769.2 V +335.4 764 l +350.2 754.4 359.8 770.4 V +363.8 781.6 363.8 783.6 v +363.8 785.6 385 791.2 386.601 791.6 c +388.201 792 394.801 796.2 394.401 799.4 C +f +0.4 0.2 0.8 0 k +347 763.486 m +340.128 763.486 331.755 767.351 331.755 773.6 c +331.755 779.848 340.128 786.113 347 786.113 c +353.874 786.113 359.446 781.048 359.446 774.8 c +359.446 768.551 353.874 763.486 347 763.486 c +f +0.4 0.2 0.8 0.2 k +343.377 780.17 m +338.531 779.448 333.442 777.945 333.514 778.161 c +335.054 782.78 341.415 786.113 347 786.113 c +351.296 786.113 355.084 784.135 357.32 781.125 c +352.004 781.455 343.377 780.17 v +f +1 g +355.4 780.4 m +351 783.6 351 781.4 V +354.6 777 355.4 780.4 V +f +0 g +345.4 772.274 m +342.901 772.274 340.875 774.3 340.875 776.8 c +340.875 779.299 342.901 781.325 345.4 781.325 c +347.9 781.325 349.926 779.299 349.926 776.8 c +349.926 774.3 347.9 772.274 345.4 772.274 c +f +0.2 0.55 0.85 0 k +241.4 785.6 m +238.2 806.8 240.6 811.2 V +251.4 821.2 251 824.8 V +250.6 842.8 249.4 843.6 v +248.2 844.4 240.6 850.4 234.6 844 C +224.2 826 225 819.6 V +225 817.6 l +217.4 818 215.8 816 V +214.6 810.8 213.4 810.4 V +210.6 808 212.6 805.2 V +210.6 802.8 211 798.8 V +218.6 794.8 L +220.6 780.4 231.4 775.2 v +236.236 772.871 239.4 779.6 241.4 785.6 c +f +1 g +240.4 787.44 m +237.52 806.52 239.68 810.48 V +249.4 819.48 249.04 822.72 V +248.68 838.92 247.6 839.64 v +246.52 840.36 239.68 845.76 234.28 840 C +224.92 823.8 225.64 818.04 V +225.64 816.24 l +218.8 816.6 217.36 814.8 V +216.28 810.12 215.2 809.76 V +212.68 807.6 214.48 805.08 V +212.68 802.92 213.04 799.32 V +219.88 795.72 L +221.68 782.76 231.4 778.08 v +235.752 775.985 238.6 782.04 240.4 787.44 c +f +0.075 0.412 0.637 0 k +248.95 842.61 m +247.86 843.47 240.37 849.24 234.52 843 C +224.38 825.45 225.16 819.21 V +225.16 817.26 l +217.75 817.65 216.19 815.7 V +215.02 810.63 213.85 810.24 V +211.12 807.9 213.07 805.17 V +211.12 802.83 211.51 798.93 V +218.92 795.03 L +220.87 780.99 231.4 775.92 v +236.114 773.65 239.2 780.21 241.15 786.06 c +238.03 806.73 240.37 811.02 V +250.9 820.77 250.51 824.28 V +250.12 841.83 248.95 842.61 V +f +0.05 0.275 0.425 0 k +248.5 841.62 m +247.52 842.54 240.14 848.08 234.44 842 C +224.56 824.9 225.32 818.82 V +225.32 816.92 l +218.1 817.3 216.58 815.4 V +215.44 810.46 214.3 810.08 V +211.64 807.8 213.54 805.14 V +211.64 802.86 212.02 799.06 V +219.24 795.26 L +221.14 781.58 231.4 776.64 v +235.994 774.428 239 780.82 240.9 786.52 c +237.86 806.66 240.14 810.84 V +250.4 820.34 250.02 823.76 V +249.64 840.86 248.5 841.62 V +f +0.025 0.137 0.212 0 k +248.05 840.63 m +247.18 841.61 239.91 846.92 234.36 841 C +224.74 824.35 225.48 818.43 V +225.48 816.58 l +218.45 816.95 216.97 815.1 V +215.86 810.29 214.75 809.92 V +212.16 807.7 214.01 805.11 V +212.16 802.89 212.53 799.19 V +219.56 795.49 L +221.41 782.17 231.4 777.36 v +235.873 775.206 238.8 781.43 240.65 786.98 c +237.69 806.59 239.91 810.66 V +249.9 819.91 249.53 823.24 V +249.16 839.89 248.05 840.63 V +f +1 g +240.4 787.54 m +237.52 806.52 239.68 810.48 V +249.4 819.48 249.04 822.72 V +248.68 838.92 247.6 839.64 V +246.84 840.68 239.68 845.76 234.28 840 C +224.92 823.8 225.64 818.04 V +225.64 816.24 l +218.8 816.6 217.36 814.8 V +216.28 810.12 215.2 809.76 V +212.68 807.6 214.48 805.08 V +212.68 802.92 213.04 799.32 V +219.88 795.72 L +221.68 782.76 231.4 778.08 v +235.752 775.985 238.6 782.14 240.4 787.54 c +f +0.8 g +237.3 793.8 m +215.7 804 214.8 804.8 V +223.9 796.6 224.7 796.6 v +225.5 796.6 237.3 793.8 Y +f +0 g +220.2 800 m +238.6 796.4 238.6 792 v +238.6 789.088 238.357 775.669 233 777.2 c +224.6 779.6 228.2 794 220.2 800 c +f +0.4 0.2 0.8 0 k +228.6 796.2 m +237.578 794.726 238.6 792 v +239.2 790.4 239.863 782.092 234.4 781 c +229.848 780.089 227.618 790.31 228.6 796.2 c +f +0 g +314.595 753.651 m +314.098 755.393 315.409 755.262 317.2 755.8 c +319.2 756.4 331.4 760.2 332.2 762.8 c +333 765.4 346.2 761 Y +348 760.2 352.4 757.6 Y +357.2 756.4 363.8 756 Y +366.2 755 369.6 752.2 Y +384.2 742 396.601 749.2 Y +416.601 755.8 410.601 773 Y +407.601 782 410.801 785.4 Y +411.001 789.2 418.201 782.8 Y +420.801 778.6 421.601 773.6 Y +429.601 762.4 426.201 780.2 Y +426.401 781.2 423.601 784.8 423.601 786 c +423.601 787.2 421.801 790.6 Y +418.801 794 421.201 801 Y +423.001 814.8 420.801 813 Y +419.601 814.8 410.401 804.8 Y +408.201 801.4 402.201 799.8 Y +399.401 798 396.001 799.4 Y +393.401 799.8 387.801 792.8 Y +390.601 793 393.001 788.6 395.401 788.4 c +397.801 788.2 399.601 790.8 401.201 791.4 c +402.801 792 405.601 786.2 Y +406.001 783.6 400.401 778.8 Y +400.001 774.2 398.401 775.8 Y +395.401 776.4 394.201 772.6 393.201 768 c +392.201 763.4 388.001 763 y +386.401 755.6 385.2 758.6 Y +385 764.2 379 758.4 Y +377.8 756.4 373.2 758.6 Y +366.4 760.6 368.8 762.6 Y +370.6 764.8 381.8 762.6 Y +384 764.2 376 768.2 Y +375.4 770 376.4 774.4 Y +377.6 777.6 384.4 783.2 Y +393.801 784.4 391.001 786 Y +384.801 791.2 379 783.6 Y +376.8 777.4 359.4 762.4 Y +354.6 759 357.2 765.8 353.2 762.4 c +349.2 759 328.6 768 y +317.038 769.193 314.306 753.451 310.777 756.571 c +316.195 748.051 314.595 753.651 v +f +509.401 920 m +483.801 912 481.001 893.2 V +478.601 870.4 499.001 852.8 V +499.401 846.4 501.401 843.2 v +499.801 838.4 518.601 846 V +545.801 854.4 l +552.201 856.8 557.401 865.6 v +562.601 874.4 577.801 893.2 574.201 918.4 C +575.401 929.6 569.401 930 V +561.001 931.6 553.801 924 V +547.001 920.8 544.601 921.2 V +509.401 920 L +f +564.022 920.99 m +566.122 929.92 561.282 925.08 V +554.242 919.36 546.761 919.36 V +532.241 917.16 527.841 903.96 V +523.881 877.12 531.801 871.4 V +536.641 863.92 543.681 870.52 v +550.722 877.12 566.222 907.35 564.022 920.99 C +f +0.2 g +563.648 920.632 m +565.738 929.376 560.986 924.624 V +554.074 919.008 546.729 919.008 V +532.473 916.848 528.153 903.888 V +524.265 877.536 532.041 871.92 V +536.793 864.576 543.705 871.056 v +550.618 877.536 565.808 907.24 563.648 920.632 C +f +0.4 g +563.274 920.274 m +565.354 928.832 560.69 924.168 V +553.906 918.656 546.697 918.656 V +532.705 916.536 528.465 903.816 V +524.649 877.952 532.281 872.44 V +536.945 865.232 543.729 871.592 v +550.514 877.952 565.394 907.13 563.274 920.274 C +f +0.6 g +562.9 919.916 m +564.97 928.288 560.394 923.712 V +553.738 918.304 546.665 918.304 V +532.937 916.224 528.777 903.744 V +525.033 878.368 532.521 872.96 V +537.097 865.888 543.753 872.128 v +550.41 878.368 564.98 907.02 562.9 919.916 C +f +0.8 g +562.526 919.558 m +564.586 927.744 560.098 923.256 V +553.569 917.952 546.633 917.952 V +533.169 915.912 529.089 903.672 V +525.417 878.784 532.761 873.48 V +537.249 866.544 543.777 872.664 v +550.305 878.784 564.566 906.91 562.526 919.558 C +f +1 g +562.151 919.2 m +564.201 927.2 559.801 922.8 V +553.401 917.6 546.601 917.6 V +533.401 915.6 529.401 903.6 V +525.801 879.2 533.001 874 V +537.401 867.2 543.801 873.2 v +550.201 879.2 564.151 906.8 562.151 919.2 C +f +0.1 0.55 0.85 0.3 k +350.6 716 m +330.2 735.2 322.2 736 V +287.8 740 273 722 V +290.6 742.4 318.2 736.8 V +296.6 741.2 284.2 738 V +267.4 738 257.8 724 V +255 719.2 l +259 734 277.4 740 V +300.2 744.8 311 740 V +289.4 746.8 279.4 744.8 V +249 747.2 236.2 720.8 V +240.2 735.2 255 742.4 V +268.6 751.2 289 748.4 V +303.4 745.2 308.6 742.8 v +313.8 740.4 312.6 743.2 304.2 748 C +298.6 758 284.6 757.6 V +241.8 754 231.4 742 V +245 753.2 255.4 756 V +277.8 764 286.2 763.2 V +311 762.2 318.6 766.2 V +307.4 761.2 310.6 758 v +313.8 754.8 320.6 747.2 320.6 746 c +320.6 744.8 344.8 722.7 348.4 718.3 C +350.6 716 l +f +0.8 g +1 J 0.1 w +489 522 m +473.5 558.5 461 568 V +487 552 490.5 534 V +490.5 524 489 522 V +f +536 514.5 m +509.5 569.5 491 593.5 V +534.5 556 539.5 529.5 V +540 524 l +537 526.5 l +536.5 517.5 536 514.5 V +f +592.5 563 m +530 622.5 528.5 625 V +589 559 592 551.5 V +590 560.5 592.5 563 V +f +404 519.5 m +423.5 571.5 442.5 549 V +457.5 539 457 536 V +453 542.5 435 542 V +416 545 404 519.5 V +f +594.5 647 m +549.5 675.5 542 677 v +530.193 679.361 591.5 648 596.5 637.5 C +598.5 640 594.5 647 V +f +0 g +0 J 1 w +443.801 540.399 m +464.201 542.399 471.001 549.199 V +475.401 545.599 l +493.001 583.999 l +496.601 578.799 l +511.001 593.599 510.201 601.599 v +509.401 609.599 523.001 595.599 y +522.201 607.199 529.401 600.399 V +527.001 615.999 535.401 607.999 V +524.864 638.156 547.401 612.399 v +553.001 605.999 548.601 612.799 y +522.601 660.799 544.201 646.399 v +546.201 669.199 545.001 673.599 v +543.801 677.999 541.801 700.4 537.001 705.6 c +532.201 710.8 537.401 712.4 543.001 707.2 C +531.801 731.2 545.001 719.2 V +541.401 734.4 537.001 737.2 V +531.401 754.4 546.601 743.6 V +542.201 756 539.001 759.2 V +527.401 786.8 534.601 782 V +539.001 778.4 l +532.201 792.4 538.601 788 v +545.001 783.6 545.001 784 y +523.801 817.2 544.201 799.6 V +536.042 813.518 532.601 820.4 V +513.801 840.8 528.201 834.4 V +533.001 832.8 l +524.201 842.8 516.201 844.4 v +508.201 846 518.601 852.4 525.001 850.4 c +531.401 848.4 547.001 840.8 y +559.801 822 563.801 821.6 V +543.801 829.2 549.801 821.2 V +564.201 807.2 557.001 807.6 V +551.001 800.4 555.801 791.6 V +537.342 809.991 552.201 784.4 v +559.001 768 l +534.601 792.8 545.801 770.8 V +563.001 747.2 565.001 746.8 v +567.001 746.4 571.401 737.6 y +567.001 739.6 l +572.201 730.8 l +561.001 742.8 567.001 729.6 V +572.601 715.2 l +552.201 737.2 565.801 707.6 V +549.401 712.8 558.201 695.6 V +556.601 679.599 557.001 674.399 v +557.401 669.199 558.601 640.799 554.201 632.799 c +549.801 624.799 560.201 605.599 562.201 601.599 c +564.201 597.599 567.801 586.799 559.001 595.999 c +550.201 605.199 554.601 599.599 556.601 590.799 c +558.601 581.999 564.601 566.399 563.801 560.799 C +562.601 559.599 559.401 563.199 V +544.601 585.999 546.201 571.599 V +545.001 563.599 541.801 554.799 V +538.601 543.999 538.601 552.799 V +535.401 569.599 532.601 561.999 v +529.801 554.399 526.201 548.399 523.401 545.999 c +520.601 543.599 515.401 566.399 514.201 555.999 C +502.201 568.399 497.401 551.999 V +485.801 535.599 l +485.401 547.999 484.201 541.999 V +454.201 535.999 443.801 540.399 V +f +409.401 897.2 m +397.801 905.2 393.801 904.8 v +389.801 904.4 421.401 913.6 462.601 886 C +467.401 883.2 471.001 883.6 V +474.201 881.2 471.401 877.6 V +462.601 868 473.801 856.8 V +492.201 850 486.601 858.8 V +497.401 854.8 499.801 850.8 v +502.201 846.8 501.001 850.8 y +494.601 858 488.601 863.2 V +483.401 865.2 480.601 873.6 v +477.801 882 475.401 892 479.801 895.2 C +475.801 890.8 476.601 894.8 v +477.401 898.8 481.001 902.4 482.601 902.8 c +484.201 903.2 500.601 919 507.401 919.4 C +498.201 918 495.201 919 v +492.201 920 465.601 931.4 459.601 932.6 C +442.801 939.2 454.801 937.2 V +490.601 933.4 508.801 920.2 V +501.601 928.6 483.201 935.6 V +461.001 948.2 425.801 943.2 V +408.001 940 400.201 938.2 V +397.601 938.8 397.001 939.2 v +396.401 939.6 384.6 948.6 357 941.6 C +340 937 331.4 932.2 V +316.2 931 312.6 927.8 V +294 913.2 292 912.4 v +290 911.6 278.6 904 277.8 903.6 C +302.4 910.2 304.8 912.6 v +307.2 915 324.6 917.6 327 916.2 c +329.4 914.8 337.8 915.4 328.2 914.8 C +403.801 900 404.601 898 v +405.401 896 409.401 897.2 y +f +0.2 0.55 0.85 0 k +480.801 906.4 m +470.601 913.8 468.601 913.8 v +466.601 913.8 454.201 924 450.001 923.6 c +445.801 923.2 433.601 933.2 406.201 925 C +405.601 927 409.201 927.8 V +415.601 930 416.001 930.6 V +436.201 934.8 443.401 931.2 V +452.601 928.6 458.801 922.4 V +470.001 919.2 473.201 920.2 V +482.001 918 482.401 916.2 V +488.201 913.2 486.401 910.6 V +486.801 909 480.801 906.4 V +f +468.33 908.509 m +469.137 907.877 470.156 907.779 470.761 906.97 c +470.995 906.656 470.706 906.33 470.391 906.233 c +469.348 905.916 468.292 906.486 467.15 905.898 c +466.748 905.691 466.106 905.873 465.553 906.022 c +463.921 906.463 462.092 906.488 460.401 905.8 C +458.416 906.929 456.056 906.345 453.975 907.346 c +453.917 907.373 453.695 907.027 453.621 907.054 c +450.575 908.199 446.832 907.916 444.401 910.2 C +441.973 910.612 439.616 911.074 437.188 911.754 c +435.37 912.263 433.961 913.252 432.341 914.084 c +430.964 914.792 429.507 915.314 427.973 915.686 c +426.11 916.138 424.279 916.026 422.386 916.546 c +422.293 916.571 422.101 916.227 422.019 916.254 c +421.695 916.362 421.405 916.945 421.234 916.892 c +419.553 916.37 418.065 917.342 416.401 917 C +415.223 918.224 413.495 917.979 411.949 918.421 c +408.985 919.269 405.831 917.999 402.801 919 C +406.914 920.842 411.601 919.61 415.663 921.679 c +417.991 922.865 420.653 921.763 423.223 922.523 c +423.71 922.667 424.401 922.869 424.801 922.2 C +424.935 922.335 425.117 922.574 425.175 922.546 c +427.625 921.389 429.94 920.115 432.422 919.049 c +432.763 918.903 433.295 919.135 433.547 918.933 c +435.067 917.717 437.01 917.82 438.401 916.6 C +440.099 917.102 441.892 916.722 443.621 917.346 c +443.698 917.373 443.932 917.032 443.965 917.054 c +445.095 917.802 446.25 917.531 447.142 917.227 c +447.48 917.112 448.143 916.865 448.448 916.791 c +449.574 916.515 450.43 916.035 451.609 915.852 c +451.723 915.834 451.908 916.174 451.98 916.146 c +453.103 915.708 454.145 915.764 454.801 914.6 C +454.936 914.735 455.101 914.973 455.183 914.946 c +456.21 914.608 456.859 913.853 457.96 913.612 c +458.445 913.506 459.057 912.88 459.633 912.704 c +462.025 911.973 463.868 910.444 466.062 909.549 c +466.821 909.239 467.697 909.005 468.33 908.509 c +f +391.696 922.739 m +389.178 924.464 386.81 925.57 384.368 927.356 c +384.187 927.489 383.827 927.319 383.625 927.441 c +382.618 928.05 381.73 928.631 380.748 929.327 c +380.209 929.709 379.388 929.698 378.88 929.956 c +376.336 931.248 373.707 931.806 371.2 933 C +371.882 933.638 373.004 933.394 373.6 934.2 C +373.795 933.92 374.033 933.636 374.386 933.827 c +376.064 934.731 377.914 934.884 379.59 934.794 c +381.294 934.702 383.014 934.397 384.789 934.125 c +385.096 934.078 385.295 933.555 385.618 933.458 c +387.846 932.795 390.235 933.32 392.354 932.482 c +393.945 931.853 395.515 931.03 396.754 929.755 c +397.006 929.495 396.681 929.194 396.401 929 C +396.789 929.109 397.062 928.903 397.173 928.59 c +397.257 928.351 397.257 928.049 397.173 927.81 c +397.061 927.498 396.782 927.397 396.408 927.346 c +395.001 927.156 396.773 928.536 396.073 928.088 c +394.8 927.274 395.546 925.868 394.801 924.6 C +394.521 924.794 394.291 925.012 394.401 925.4 C +394.635 924.878 394.033 924.588 393.865 924.272 c +393.48 923.547 392.581 922.132 391.696 922.739 c +f +359.198 915.391 m +356.044 916.185 352.994 916.07 349.978 917.346 c +349.911 917.374 349.688 917.027 349.624 917.054 c +348.258 917.648 347.34 918.614 346.264 919.66 c +345.351 920.548 343.693 920.161 342.419 920.648 c +342.095 920.772 341.892 921.284 341.591 921.323 c +340.372 921.48 339.445 922.429 338.4 923 C +340.736 923.795 343.147 923.764 345.609 924.148 c +345.722 924.166 345.867 923.845 346 923.845 c +346.136 923.845 346.266 924.066 346.4 924.2 C +346.595 923.92 346.897 923.594 347.154 923.848 c +347.702 924.388 348.258 924.198 348.798 924.158 c +348.942 924.148 349.067 923.845 349.2 923.845 c +349.336 923.845 349.467 924.156 349.6 924.156 c +349.736 924.155 349.867 923.845 350 923.845 c +350.136 923.845 350.266 924.066 350.4 924.2 C +351.092 923.418 351.977 923.972 352.799 923.793 c +353.837 923.566 354.104 922.418 355.178 922.12 c +359.893 920.816 364.03 918.671 368.393 916.584 c +368.7 916.437 368.91 916.189 368.8 915.8 C +369.067 915.8 369.38 915.888 369.57 915.756 c +370.628 915.024 371.669 914.476 372.366 913.378 c +372.582 913.039 372.253 912.632 372.02 912.684 c +367.591 913.679 363.585 914.287 359.198 915.391 c +f +345.338 871.179 m +343.746 872.398 343.162 874.429 342.034 876.221 c +341.82 876.561 342.094 876.875 342.411 876.964 c +342.971 877.123 343.514 876.645 343.923 876.443 c +345.668 875.581 347.203 874.339 349.2 874.2 C +351.19 871.966 355.45 871.581 355.457 868.2 c +355.458 867.341 354.03 868.259 353.6 867.4 C +351.149 868.403 348.76 868.3 346.38 869.767 c +345.763 870.148 346.093 870.601 345.338 871.179 c +f +317.8 923.756 m +317.935 923.755 324.966 923.522 324.949 923.408 c +324.904 923.099 317.174 922.05 316.81 922.22 c +316.646 922.296 309.134 919.866 309 920 C +309.268 920.135 317.534 923.756 317.8 923.756 c +f +0 g +333.2 914 m +318.4 912.2 314 911 v +309.6 909.8 291 902.2 288 900.2 C +274.6 894.8 257.6 874.8 V +265.2 878.2 267.4 881 V +281 893.6 280.8 891 V +293 899.6 292.4 897.4 V +316.8 908.6 314.8 905.4 V +336.4 910 335.4 908 V +354.2 903.6 351.4 903.4 V +345.6 902.2 352 898.6 V +348.6 894.2 343.2 898.2 v +337.8 902.2 340.8 900 335.8 899 C +333.2 898.2 328.6 902.2 V +323 906.8 314.2 903.2 V +283.6 890.6 281.6 890 V +278 887.2 275.6 883.6 V +269.8 879.2 266.8 877.8 V +254 866.2 252.8 864.8 V +249.4 859.6 248.6 859.2 V +255 863 257 865 V +271 875 276.4 875.8 V +280.8 878.8 281.6 880.2 V +296 889.4 300.2 889.4 V +309.4 884.2 311.8 891.2 V +317.6 893 323.2 891.8 V +326.4 894.4 325.6 896.6 V +327.2 898.4 328.2 894.6 V +331.6 891 336.4 893 V +340.4 893.2 338.4 890.8 V +334 887 322.2 886.8 V +309.8 886.2 293.4 878.6 V +263.6 868.2 254.4 857.8 V +248 849 242.6 847.8 V +236.8 847 230.8 839.6 V +240.6 845.4 249.6 845.4 V +253.6 847.8 249.8 844.2 V +246.2 836.6 247.8 831.2 V +247.2 826 246.4 824.4 V +238.6 811.6 238.6 809.2 v +238.6 806.8 239.8 797 240.2 796.4 c +240.6 795.8 239.2 798 243 795.6 c +246.8 793.2 249.6 791.6 250.4 788.8 c +251.2 786 248.4 794.2 248.2 796 c +248 797.8 243.8 805 244.6 807.4 C +245.6 806.4 246.4 805 V +245.8 805.6 246.4 809.2 V +247.2 814.4 248.6 817.6 v +250 820.8 252 824.6 252.4 825.4 c +252.8 826.2 252.8 832 254.2 829.4 C +257.6 826.8 l +254.8 829.4 257 831.6 V +256 837.2 257.8 839.8 V +264.8 848.2 266.4 849.2 v +268 850.2 266.6 849.8 y +272.6 854 266.8 852.4 V +262.8 850.8 259.8 850.8 V +252.2 848.8 256.2 853 v +260.2 857.2 270.2 862.6 274 862.4 C +274.8 860.8 l +286 863.2 l +284.8 862.4 l +284.6 862.6 288.8 863 v +293 863.4 298.8 862 300.2 863.8 c +301.6 865.6 305 866.6 304.6 865.2 c +304.2 863.8 304 861.8 y +309 867.6 308.4 865.4 v +307.8 863.2 299.6 858 298.2 851.8 C +308.6 860 l +312.2 863 l +315.8 860.8 316 862.4 v +316.2 864 320.8 869.8 322 869.6 c +323.2 869.4 325.2 872.2 325 869.6 c +324.8 867 332.4 861.6 y +335.6 863.4 337 862 v +338.4 860.6 342.6 881.8 y +367.6 892.4 l +411.201 895.8 l +394.201 902.6 l +333.2 914 l +f +0.2 0.55 0.85 0.5 K +1 J 2 w +351.4 715 m +336.4 731.8 328 734.4 V +314.6 741.2 290 733.4 v +S +324.8 735.8 m +299.6 743.8 284.2 739.6 V +265.8 737.6 257.4 723.8 v +S +321.2 737 m +304.2 744.2 289.4 746.4 V +272.8 749 256.2 741.8 V +244 735.8 238.6 725.6 v +S +322.2 736.6 m +306.8 747.6 305.8 749 V +298.8 760 285.8 760.4 V +264.4 759.6 247.2 751.6 v +S +0 G +0 J 1 w +320.895 745.593 m +322.437 744.13 349.4 715.2 Y +384.6 678.599 356.6 712.8 Y +349 717.6 339.8 736.4 Y +338.6 739.2 353.8 729.2 Y +357.8 728.4 371.4 709.2 Y +364.6 711.6 369.4 704.4 Y +372.2 702.4 392.601 686.799 Y +396.201 682.799 400.201 681.199 Y +414.201 686.399 407.801 673.199 Y +410.201 666.399 415.801 677.999 Y +427.001 694.8 410.601 692.399 Y +380.6 689.599 373.8 705.6 Y +371.4 708 380.2 705.6 Y +388.601 703.6 373 718 Y +375.4 718 384.6 711.2 Y +395.001 702 397.001 704 Y +415.001 712.8 425.401 705.2 Y +427.401 703.6 421.801 696.8 423.401 691.599 c +425.001 686.399 429.801 673.999 Y +427.401 672.399 427.801 661.599 Y +444.601 638.399 435.001 640.399 Y +419.401 640.799 434.201 633.199 Y +437.401 631.199 446.201 623.999 Y +443.401 625.199 441.801 619.999 Y +446.601 615.999 443.801 611.199 Y +437.801 609.999 436.601 605.999 Y +443.401 597.999 433.401 597.599 Y +437.001 593.199 432.201 581.199 Y +427.401 581.199 421.001 575.599 Y +423.401 570.799 413.001 565.199 Y +404.601 563.599 407.401 556.799 Y +399.401 550.799 397.001 534.799 Y +396.201 524.399 393.801 521.199 399.001 523.199 c +404.201 525.199 403.401 537.599 Y +398.601 553.199 441.401 569.199 Y +445.401 570.799 446.201 575.999 Y +448.201 575.599 457.001 567.999 Y +464.601 556.799 465.001 565.999 Y +466.201 569.599 464.601 575.599 Y +470.601 597.199 456.601 603.599 Y +446.601 637.199 460.601 628.799 Y +463.401 623.199 474.201 617.999 y +477.801 620.399 L +476.201 625.199 484.601 631.199 Y +487.401 624.799 493.401 632.799 Y +497.001 657.199 509.401 642.799 Y +513.401 641.599 514.601 648.399 Y +518.201 658.799 514.601 672.399 Y +518.201 672.799 527.801 666.799 Y +530.601 670.399 521.401 687.199 525.401 684.799 c +529.401 682.399 533.801 680.799 Y +534.601 682.799 524.601 695.199 Y +520.201 698 515.001 718.4 Y +522.201 714.8 512.201 730 Y +512.201 733.2 518.201 744.4 Y +517.401 751.2 518.201 750.8 Y +521.001 749.6 529.001 748 522.201 754.4 c +515.401 760.8 523.001 765.6 Y +527.401 768.4 513.801 768 Y +508.601 772.4 509.001 776.4 Y +517.001 774.4 502.601 788.8 500.201 792.4 c +497.801 796 507.401 801.2 Y +520.601 804.8 509.001 808 Y +489.401 807.6 500.201 818.4 Y +506.201 818 504.601 820.4 Y +499.401 821.6 489.801 828 Y +485.801 831.6 489.401 830.8 Y +506.201 829.6 477.401 840.8 Y +485.401 840.8 467.401 851.2 Y +465.401 852.8 462.201 860.4 Y +456.201 865.6 451.401 872.4 Y +451.001 876.8 446.201 881.6 Y +434.601 895.2 429.001 894.8 Y +414.201 898.4 409.001 897.6 Y +356.2 893.2 l +329.8 880.4 337.6 859.4 Y +344 851 353.2 854.8 Y +357.8 861 369.4 858.8 Y +389.801 855.6 387.201 859.2 Y +384.801 863.8 368.6 870 368.4 870.6 c +368.2 871.2 359.4 874.6 Y +356.4 875.8 352 885 Y +348.8 888.4 364.6 882.6 Y +363.4 881.6 370.8 877.6 Y +388.201 878.6 398.801 867.8 Y +409.601 851.2 409.801 859.4 Y +412.601 868.8 400.801 890 Y +401.201 892 409.401 885.4 Y +410.801 887.4 411.601 881.6 Y +411.801 879.2 415.601 871.2 Y +418.401 858.2 422.001 865.6 Y +426.601 856.2 L +428.001 853.6 422.001 846 Y +421.801 843.2 422.601 843.4 417.001 835.8 c +411.401 828.2 414.801 823.8 Y +413.401 817.2 422.201 817.6 Y +424.801 815.4 428.201 815.4 Y +430.001 813.4 432.401 814 Y +434.001 817.8 440.201 815.8 Y +441.601 818.2 449.801 818.6 Y +450.801 821.2 451.201 822.8 454.601 823.4 c +458.001 824 433.401 867 Y +439.801 867.8 431.601 880.2 Y +429.401 886.8 440.801 872.2 443.001 870.8 c +445.201 869.4 446.201 867.2 444.601 867.4 c +443.001 867.6 441.201 865.4 442.601 865.2 c +444.001 865 457.001 850 460.401 839.8 c +463.801 829.6 469.801 825.6 476.001 819.6 c +482.201 813.6 481.401 789.4 Y +481.001 780.6 487.001 770 Y +489.001 766.2 484.801 748 Y +482.801 745.8 484.201 745 Y +485.201 743.8 492.001 730.6 Y +490.201 730.8 493.801 727.2 Y +499.001 721.2 492.601 724.2 Y +486.601 725.8 493.601 716 Y +494.801 714.2 485.801 718.8 Y +476.601 719.4 488.201 712.2 Y +496.801 705 485.401 709.4 Y +480.801 711.2 484.001 704.4 Y +487.201 702.8 504.401 695.8 Y +504.801 691.999 501.801 686.999 Y +502.201 682.999 500.001 679.599 Y +498.801 671.399 498.201 670.599 Y +494.001 670.399 486.601 656.599 Y +484.801 653.999 474.601 641.999 Y +472.601 634.999 454.601 642.199 Y +448.001 638.799 450.001 642.199 Y +449.601 644.399 454.401 650.399 Y +461.401 652.999 458.801 663.799 Y +462.801 665.199 451.601 667.999 451.801 669.199 c +452.001 670.399 457.801 671.799 Y +465.801 673.799 461.401 676.199 Y +460.801 680.199 463.801 685.799 Y +475.401 686.599 463.801 702.8 Y +453.001 710.4 452.001 716.2 Y +464.601 724.4 456.401 736.8 456.601 740.4 c +456.801 744 458.001 765.6 Y +456.001 771.8 453.001 785.4 Y +455.201 790.6 462.601 803.2 Y +465.401 807.4 474.201 812.2 472.001 815.2 c +469.801 818.2 462.001 816.4 Y +454.201 817.8 454.801 812.6 Y +453.201 811.6 452.401 806.6 Y +451.68 798.667 442.801 792.4 Y +431.601 786.2 440.801 782.2 Y +446.801 775.6 437.001 775.4 Y +426.001 777.2 434.201 767 Y +445.001 754.2 442.001 751.4 Y +431.801 750.4 444.401 741.2 y +443.601 743.2 443.801 741.4 v +444.001 739.6 447.001 735.4 447.801 733.4 c +448.601 731.4 444.601 731.2 Y +445.201 721.6 429.801 725.8 y +429.801 725.8 428.201 725.6 v +426.601 725.4 415.401 726.2 409.601 728.4 c +403.801 730.6 397.001 730.6 y +393.001 728.8 385.4 729 v +377.8 729.2 369.8 726.4 Y +365.4 726.8 374 731.2 374.2 731 c +374.4 730.8 380 736.4 372 735.8 c +350.203 734.165 339.4 744.4 Y +337.4 745.8 334.8 748.6 Y +324.8 750.6 336.2 736.2 Y +337.4 734.8 336 733.8 Y +335.2 735.4 327.4 740.8 Y +324.589 741.773 323.226 743.107 320.895 745.593 C +f +0.2 0.55 0.85 0.5 k +1 J 2 w +297 757.2 m +308.6 751.6 311.2 748.8 v +313.8 746 327.8 734.6 y +322.4 736.6 319.8 738.4 v +317.2 740.2 306.4 748.4 y +302.6 754.4 297 757.2 v +f +0.4 0.2 0.8 0 k +0 J 1 w +238.991 788.397 m +239.328 788.545 238.804 791.257 238.6 791.8 c +237.578 794.526 228.6 796 y +228.373 794.635 228.318 793.039 228.424 791.401 c +233.292 785.882 238.991 788.397 v +f +0.4 0.2 0.8 0.2 k +238.991 788.597 m +238.542 788.439 238.976 791.331 238.8 791.8 c +237.778 794.526 228.6 796.1 y +228.373 794.735 228.318 793.139 228.424 791.501 c +232.692 786.382 238.991 788.597 v +f +0 g +234.6 788.454 m +233.975 788.454 233.469 789.594 233.469 791 c +233.469 792.405 233.975 793.545 234.6 793.545 c +235.225 793.545 235.732 792.405 235.732 791 c +235.732 789.594 235.225 788.454 234.6 788.454 c +f +234.6 791 m +F +189 690.399 m +183.4 680.399 208.2 686.399 V +222.2 687.599 224.6 689.999 V +225.8 689.199 234.166 686.266 237 685.599 c +243.8 683.999 252.2 694 y +256.8 704.5 259.6 704.5 v +262.4 704.5 259.2 702.9 y +252.6 692.799 253 691.199 V +247.8 671.199 231.8 670.399 V +215.65 669.449 217 663.599 V +225.8 665.999 228.2 663.599 V +239 663.999 231 657.599 V +224.2 645.999 l +224.34 642.081 214.2 645.599 v +204.4 648.999 194.1 661.899 y +178.15 676.449 189 690.399 V +f +0.1 0.4 0.4 0 k +187.8 686.399 m +185.8 676.799 222.6 687.199 V +227 687.199 229.4 686.399 v +231.8 685.599 243.8 682.799 245.8 683.999 C +238.6 670.399 227 671.999 V +213.8 670.399 214.2 665.599 V +218.2 658.399 223 655.999 V +225.8 653.599 225.4 650.399 v +225 647.199 222.2 645.599 220.2 644.799 c +218.2 643.999 215 647.199 213.4 647.199 c +211.8 647.199 203.4 653.599 199 658.399 c +194.6 663.199 186.2 675.199 186.6 677.999 c +187 680.799 187.8 686.399 Y +f +0.1 0.4 0.4 0.2 k +191 668.949 m +193.6 664.999 196.8 660.799 199 658.399 c +203.4 653.599 211.8 647.199 213.4 647.199 c +215 647.199 218.2 643.999 220.2 644.799 c +222.2 645.599 225 647.199 225.4 650.399 c +225.8 653.599 223 655.999 Y +219.934 657.532 217.194 661.024 215.615 663.347 C +215.8 660.799 210.6 661.599 v +205.4 662.399 200.2 665.199 198.6 668.399 c +197 671.599 194.6 673.999 196.2 670.399 c +197.8 666.799 200.2 663.199 201.8 662.799 c +203.4 662.399 203 661.199 200.6 661.599 c +198.2 661.999 195.4 662.399 191 667.599 c +F +0.1 0.55 0.85 0.3 k +188.4 689.999 m +190.2 703.6 191.4 707.6 V +190.6 714.4 193 718.6 v +195.4 722.8 197.4 729 200.4 734.4 c +203.4 739.8 203.6 743.8 207.6 745.4 c +211.6 747 217.6 755.6 220.4 756.6 c +223.2 757.6 223 756.8 y +229.8 771.6 243.4 767.6 V +227.2 770.4 243 779.8 V +238.2 778.7 241.5 785.7 v +243.701 790.368 243.2 783.6 232.2 771.8 C +227.2 763.2 222 760.2 v +216.8 757.2 204.8 750.2 203.6 746.4 c +202.4 742.6 199.2 736.8 197.2 735.2 c +195.2 733.6 192.4 729.4 192 726 C +190.8 722 189.4 720.8 v +188 719.6 187.8 716.4 187.8 714.4 c +187.8 712.4 185.8 709.6 186 707.2 C +186.8 688.199 186.4 686.199 V +188.4 689.999 L +f +1 g +179.8 685.399 m +177.8 686.799 173.4 680.799 V +180.7 647.799 180.7 646.399 V +181.8 648.499 180.5 655.699 v +179.2 662.899 178.3 675.599 y +179.8 685.399 l +f +0.1 0.55 0.85 0.3 k +201.4 746 m +183.8 742.8 184.2 713.6 V +183.4 688.799 l +182.2 714.4 181 716 v +179.8 717.6 183.8 728.8 180.6 722.8 C +166.6 708.8 174.6 687.599 V +176.1 684.299 173.1 688.899 V +168.5 701.5 169.6 707.9 V +169.8 710.1 171.7 712.9 V +180.3 724.6 183 726.9 V +184.8 741.3 200.2 746.5 V +205.9 748.8 201.4 746 V +f +0 g +340.8 812.2 m +341.46 812.554 341.451 813.524 342.031 813.697 c +343.18 814.041 343.344 815.108 343.862 815.892 c +344.735 817.211 344.928 818.744 345.51 820.235 c +345.782 820.935 345.809 821.89 345.496 822.55 c +344.322 825.031 343.62 827.48 342.178 829.906 c +341.91 830.356 341.648 831.15 341.447 831.748 c +340.984 833.132 339.727 834.123 338.867 835.443 c +338.579 835.884 339.104 836.809 338.388 836.893 c +337.491 836.998 336.042 837.578 335.809 836.552 c +335.221 833.965 336.232 831.442 337.2 829 C +336.418 828.308 336.752 827.387 336.904 826.62 c +337.614 823.014 336.416 819.662 335.655 816.188 c +335.632 816.084 335.974 815.886 335.946 815.824 c +334.724 813.138 333.272 810.693 331.453 808.312 c +330.695 807.32 329.823 806.404 329.326 805.341 c +328.958 804.554 328.55 803.588 328.8 802.6 C +325.365 799.82 323.115 795.975 320.504 792.129 c +320.042 791.449 320.333 790.24 320.884 789.971 c +321.697 789.573 322.653 790.597 323.123 791.443 c +323.512 792.141 323.865 792.791 324.356 793.434 c +324.489 793.609 324.31 794.028 324.445 794.149 c +327.078 796.496 328.747 799.432 331.2 801.8 C +333.15 802.129 334.687 803.127 336.435 804.14 c +336.743 804.319 337.267 804.07 337.557 804.265 c +339.31 805.442 339.308 807.478 339.414 809.388 c +339.464 810.272 339.66 811.589 340.8 812.2 c +f +331.959 816.666 m +332.083 816.743 331.928 817.166 332.037 817.382 c +332.199 817.706 332.602 817.894 332.764 818.218 c +332.873 818.434 332.71 818.814 332.846 818.956 c +335.179 821.403 335.436 824.427 334.4 827.4 C +335.424 828.02 335.485 829.282 335.06 830.129 c +334.207 831.829 334.014 833.755 333.039 835.298 c +332.237 836.567 330.659 837.811 329.288 836.508 c +328.867 836.108 328.546 835.321 328.824 834.609 c +328.888 834.446 329.173 834.3 329.146 834.218 c +329.039 833.894 328.493 833.67 328.487 833.398 c +328.457 831.902 327.503 830.391 328.133 829.062 c +328.905 827.433 329.724 825.576 330.4 823.8 C +329.166 821.684 330.199 819.235 328.446 817.358 c +328.31 817.212 328.319 816.826 328.441 816.624 c +328.733 816.138 329.139 815.732 329.625 815.44 c +329.827 815.319 330.175 815.317 330.375 815.441 c +330.953 815.803 331.351 816.29 331.959 816.666 c +f +394.771 826.977 m +396.16 825.185 396.45 822.39 394.401 821 C +394.951 817.691 398.302 819.67 400.401 820.2 C +400.292 820.588 400.519 820.932 400.802 820.937 c +401.859 820.952 402.539 821.984 403.601 821.8 C +404.035 823.357 405.673 824.059 406.317 825.439 c +408.043 829.134 407.452 833.407 404.868 836.653 c +404.666 836.907 404.883 837.424 404.759 837.786 c +404.003 839.997 401.935 840.312 400.001 841 C +398.824 844.875 398.163 848.906 396.401 852.6 C +394.787 852.85 394.089 854.589 392.752 855.309 c +391.419 856.028 390.851 854.449 390.892 853.403 c +390.899 853.198 391.351 852.974 391.181 852.609 c +391.105 852.445 390.845 852.334 390.845 852.2 c +390.846 852.065 391.067 851.934 391.201 851.8 C +390.283 850.98 388.86 850.503 388.565 849.358 c +387.611 845.648 390.184 842.523 391.852 839.322 c +392.443 838.187 391.707 836.916 390.947 835.708 c +390.509 835.013 390.617 833.886 390.893 833.03 c +391.645 830.699 393.236 828.96 394.771 826.977 c +f +357.611 808.591 m +356.124 806.74 352.712 804.171 355.629 802.243 c +355.823 802.114 356.193 802.11 356.366 802.244 c +358.387 803.809 360.39 804.712 362.826 805.294 c +362.95 805.323 363.224 804.856 363.593 805.017 c +365.206 805.72 367.216 805.662 368.4 807 C +372.167 806.776 375.732 807.892 379.123 809.2 c +380.284 809.648 381.554 810.207 382.755 810.709 c +384.131 811.285 385.335 812.213 386.447 813.354 c +386.58 813.49 386.934 813.4 387.201 813.4 C +387.161 814.263 388.123 814.39 388.37 815.012 c +388.462 815.244 388.312 815.64 388.445 815.742 c +390.583 817.372 391.503 819.39 390.334 821.767 c +390.049 822.345 389.8 822.963 389.234 823.439 c +388.149 824.35 387.047 823.496 386 823.8 C +385.841 823.172 385.112 823.344 384.726 823.146 c +383.867 822.707 382.534 823.292 381.675 822.854 c +380.313 822.159 379.072 821.99 377.65 821.613 c +377.338 821.531 376.56 821.627 376.4 821 C +376.266 821.134 376.118 821.368 376.012 821.346 c +374.104 820.95 372.844 820.736 371.543 819.044 c +371.44 818.911 370.998 819.09 370.839 818.955 c +369.882 818.147 369.477 816.913 368.376 816.241 c +368.175 816.118 367.823 816.286 367.629 816.157 c +366.983 815.726 366.616 815.085 365.974 814.638 c +365.645 814.409 365.245 814.734 365.277 814.99 c +365.522 816.937 366.175 818.724 365.6 820.6 C +367.677 823.12 370.194 825.069 372 827.8 C +372.015 829.966 372.707 832.112 372.594 834.189 c +372.584 834.382 372.296 835.115 372.17 835.462 c +371.858 836.316 372.764 837.382 371.92 838.106 c +370.516 839.309 369.224 838.433 368.4 837 C +366.562 836.61 364.496 835.917 362.918 837.151 c +361.911 837.938 361.333 838.844 360.534 839.9 c +359.549 841.202 359.884 842.638 359.954 844.202 c +359.96 844.33 359.645 844.466 359.645 844.6 c +359.646 844.735 359.866 844.866 360 845 C +359.294 845.626 359.019 846.684 358 847 C +358.305 848.092 357.629 848.976 356.758 849.278 c +354.763 849.969 353.086 848.057 351.194 847.984 c +350.68 847.965 350.213 849.003 349.564 849.328 c +349.132 849.544 348.428 849.577 348.066 849.311 c +347.378 848.807 346.789 848.693 346.031 848.488 c +344.414 848.052 343.136 846.958 341.656 846.103 c +340.171 845.246 339.216 843.809 338.136 842.489 c +337.195 841.337 337.059 838.923 338.479 838.423 c +340.322 837.773 341.626 840.476 343.592 840.15 c +343.904 840.099 344.11 839.788 344 839.4 C +344.389 839.291 344.607 839.52 344.8 839.8 C +345.658 838.781 346.822 838.444 347.76 837.571 c +348.73 836.667 350.476 837.085 351.491 836.088 c +353.02 834.586 352.461 831.905 354.4 830.6 C +353.814 829.287 353.207 828.01 352.872 826.583 c +352.59 825.377 353.584 824.18 354.795 824.271 c +356.053 824.365 356.315 825.124 356.8 826.2 C +357.067 825.933 357.536 825.636 357.495 825.42 c +357.038 823.033 356.011 821.04 355.553 818.609 c +355.494 818.292 355.189 818.09 354.8 818.2 C +354.332 814.051 350.28 811.657 347.735 808.492 c +347.332 807.99 347.328 806.741 347.737 806.338 c +349.14 804.951 351.1 806.497 352.8 807 C +353.013 808.206 353.872 809.148 355.204 809.092 c +355.46 809.082 355.695 809.624 356.019 809.754 c +356.367 809.892 356.869 809.668 357.155 809.866 c +358.884 811.061 360.292 812.167 362.03 813.356 c +362.222 813.487 362.566 813.328 362.782 813.436 c +363.107 813.598 363.294 813.985 363.617 814.17 c +363.965 814.37 364.207 814.08 364.4 813.8 C +363.754 813.451 363.75 812.494 363.168 812.292 c +362.393 812.024 361.832 811.511 361.158 811.064 c +360.866 810.871 360.207 811.119 360.103 810.94 c +359.505 809.912 358.321 809.474 357.611 808.591 c +f +302.2 858 m +292.962 860.872 281.8 835.2 V +279.4 830 277 828 v +274.6 826 263.4 822.4 261.4 818.4 C +251 802.4 L +265.8 818.4 269 820.8 V +277 829.2 273.8 822.4 V +259.8 811.6 261 802.4 V +255.4 788 254.6 786 V +270.6 818 273 819.2 v +275.4 820.4 276.6 820.4 275.4 816.8 c +274.2 813.2 273.8 796.8 271 794.8 C +279 815.2 278.2 818.4 V +281.4 822 283.8 816.8 V +282.6 800.8 l +287 788.8 l +284.6 800 286.2 815.6 V +284.2 826 288.2 820.4 v +292.2 814.8 301.8 808.8 301.8 804 C +296.6 821.6 287.4 826.4 V +283.4 820.4 l +282.2 822.4 l +278.6 823.2 283 830 v +287.4 836.8 287 837.6 y +293.4 830.4 295 830.4 V +308.2 838 309.4 813.6 V +316.2 828 307 834.8 V +292.2 836.8 293.4 842 V +300.6 854.4 L +304.2 859.6 302.6 856.8 y +F +282.2 841.6 m +269.4 841.6 266.2 836.4 V +259 826.8 l +276.2 836.8 280.2 838 v +284.2 839.2 282.2 841.6 Y +f +242.2 835.2 m +240.2 834 239.8 831.2 v +239.4 828.4 237 828 237.8 825.2 c +238.6 822.4 240.6 820 240.6 824 c +240.6 828 242.2 830 243 831.2 c +243.8 832.4 245.4 836.8 242.2 835.2 c +f +233.4 774 m +225 778 221.8 781.6 v +218.6 785.2 219.052 780.034 214.2 780.4 c +208.353 780.841 209.4 796.8 y +205.4 789.2 l +204.2 774.8 212.2 777.2 v +216.107 778.372 217.4 776.8 215.8 776 c +214.2 775.2 221.4 774.8 218.6 773.2 c +215.8 771.6 230.2 776.8 227.8 766.4 C +233.4 774 L +f +220.8 759.6 m +205.4 755.2 201.8 764.8 V +197 762.4 199.2 759.4 v +201.4 756.4 202.6 756 y +208 754.8 207.4 754 v +206.8 753.2 204.4 749.8 y +214.6 755.8 220.8 759.6 v +f +1 g +449.201 681.399 m +448.774 679.265 447.103 678.464 445.201 677.799 C +443.284 678.757 440.686 681.863 438.801 679.799 C +438.327 680.279 437.548 680.339 437.204 681.001 c +436.739 681.899 437.011 682.945 436.669 683.743 c +436.124 685.015 435.415 686.381 435.601 687.799 C +437.407 688.511 438.002 690.417 437.528 692.18 c +437.459 692.437 437.03 692.634 437.23 692.983 c +437.416 693.306 437.734 693.533 438.001 693.8 C +437.866 693.665 437.721 693.432 437.61 693.452 c +437 693.558 437.124 694.195 437.254 694.582 c +437.839 696.328 439.853 696.592 441.201 695.4 C +441.457 695.965 441.966 695.771 442.401 695.8 C +442.351 696.379 442.759 696.906 442.957 697.326 c +443.475 698.424 445.104 697.318 445.901 697.93 c +446.977 698.755 448.04 699.454 449.118 698.851 c +450.927 697.838 452.636 696.626 453.835 694.885 c +454.41 694.051 454.65 692.77 454.592 691.812 c +454.554 691.165 453.173 691.517 452.83 690.588 c +452.185 688.84 454.016 688.321 454.772 686.983 c +454.97 686.634 454.706 686.33 454.391 686.232 c +453.98 686.104 453.196 686.293 453.334 685.84 c +454.306 682.647 451.55 681.969 449.201 681.399 C +f +439.6 661.799 m +439.593 663.537 437.992 665.293 439.201 666.999 C +439.336 666.865 439.467 666.644 439.601 666.644 c +439.736 666.644 439.867 666.865 440.001 666.999 C +441.496 664.783 445.148 663.855 445.006 661.009 c +444.984 660.562 443.897 659.644 444.801 658.999 C +442.988 657.651 442.933 655.281 442.001 653.399 C +440.763 653.685 439.551 654.048 438.401 654.599 C +438.753 656.085 438.636 657.769 439.456 659.089 c +439.89 659.787 439.603 660.866 439.6 661.799 c +f +0.8 g +273.4 670.799 m +256.542 660.663 270.6 675.999 v +279.4 685.599 289.4 691.199 y +299.8 695.6 303.4 696.8 v +307 698 322.2 703.2 325.4 703.6 c +328.6 704 338.2 708 345 704 c +351.8 700 359.8 695.6 y +343.4 704 339.8 701.6 v +336.2 699.2 329 699.6 323 696.4 C +308.2 691.999 305 689.999 v +301.8 687.999 291.4 676.399 289.8 677.199 c +288.2 677.999 290.2 678.399 291.4 681.199 c +292.6 683.999 290.6 685.599 282.6 679.199 c +274.6 672.799 273.4 670.799 Y +f +0 g +280.805 676.766 m +282.215 689.806 290.693 688.141 V +298.919 692.311 301.641 694.279 V +309.78 695.981 311.09 696.598 v +329.569 705.298 344.288 700.779 344.835 701.899 c +345.381 703.018 365.006 695.901 368.615 691.815 c +369.006 691.372 358.384 697.412 348.686 699.303 c +340.413 700.917 318.811 699.056 307.905 693.52 c +304.932 692.011 295.987 686.227 293.456 686.338 c +290.925 686.45 280.805 676.766 Y +f +0.8 g +277 651.199 m +261.8 653.599 278.6 655.199 V +296.6 657.199 300.6 662.399 V +314.2 671.599 317 671.999 v +319.8 672.399 349.8 679.599 350.2 681.999 c +350.6 684.399 356.2 684.399 357.8 683.599 c +359.4 682.799 358.6 681.599 355.8 680.799 c +353 679.999 321.8 663.599 315.4 662.399 c +309 661.199 297.4 653.599 292.6 652.399 c +287.8 651.199 277 651.199 Y +f +0 g +296.52 658.597 m +287.938 659.426 296.539 660.245 V +305.355 663.669 307.403 666.332 V +314.367 671.043 315.8 671.247 v +317.234 671.452 331.194 675.139 331.399 676.367 c +331.604 677.596 365.67 690.177 370.09 686.987 c +373.001 684.886 363.1 686.563 353.466 682.153 c +352.111 681.533 318.258 666.946 314.981 666.332 c +311.704 665.717 305.765 661.826 303.307 661.212 c +300.85 660.597 296.52 658.597 Y +f +288.6 656.399 m +293.8 656.799 292.6 655.199 v +291.4 653.599 289 654.399 y +288.6 656.399 l +f +281.4 654.799 m +286.6 655.199 285.4 653.599 v +284.2 651.999 281.8 652.799 y +281.4 654.799 l +f +271 653.199 m +276.2 653.599 275 651.999 v +273.8 650.399 271.4 651.199 y +271 653.199 l +f +263.4 652.399 m +268.6 652.799 267.4 651.199 v +266.2 649.599 263.8 650.399 y +263.4 652.399 l +f +301.8 691.999 m +306.2 691.999 305 690.399 v +303.8 688.799 300.6 689.199 y +301.8 691.999 l +f +291.8 686.399 m +298.306 688.54 295.8 685.199 v +294.6 683.599 292.2 684.399 y +291.8 686.399 l +f +280.6 681.599 m +285.8 681.999 284.6 680.399 v +283.4 678.799 281 679.599 y +280.6 681.599 l +f +273 675.599 m +278.2 675.999 277 674.399 v +275.8 672.799 273.4 673.599 y +273 675.599 l +f +266.2 670.799 m +271.4 671.199 270.2 669.599 v +269 667.999 266.6 668.799 y +266.2 670.799 l +f +305.282 664.402 m +312.203 664.934 310.606 662.805 v +309.009 660.675 305.814 661.74 y +305.282 664.402 l +f +315.682 669.202 m +322.603 669.734 321.006 667.605 v +319.409 665.475 316.214 666.54 y +315.682 669.202 l +f +326.482 673.602 m +333.403 674.134 331.806 672.005 v +330.209 669.875 327.014 670.94 y +326.482 673.602 l +f +336.882 678.402 m +343.803 678.934 342.206 676.805 v +340.609 674.675 337.414 675.74 y +336.882 678.402 l +f +309.282 696.402 m +316.203 696.934 314.606 694.805 v +313.009 692.675 309.014 692.94 y +309.282 696.402 l +f +319.282 699.602 m +326.203 700.134 324.606 698.005 v +323.009 695.875 318.614 696.14 y +319.282 699.602 l +f +296.6 659.599 m +301.8 659.999 300.6 658.399 v +299.4 656.799 297 657.599 y +296.6 659.599 l +f +0.1 0.55 0.85 0.3 k +223.4 758.8 m +219 750 218.6 746.8 V +219.4 755.6 220.6 757.6 v +221.8 759.6 223.4 758.8 y +f +205 744.8 m +201.8 730.4 202.2 727.6 V +201 739.2 201.4 740.4 v +201.8 741.6 205 744.8 y +f +0.8 g +225.8 819.4 m +225.6 816.2 l +223.4 816 l +237.6 803.4 238.2 795.8 V +239 804 225.8 819.4 V +f +0 g +229.784 818.135 m +229.353 818.551 229.572 819.296 229.164 819.556 c +228.355 820.072 230.462 820.129 230.234 820.845 c +229.851 822.051 230.038 822.072 229.916 823.348 c +229.859 823.946 230.447 825.486 230.832 825.926 c +232.278 827.578 230.954 830.51 232.594 832.061 c +232.898 832.35 233.274 832.902 233.559 833.32 c +234.218 834.283 235.402 834.771 236.352 835.599 c +236.67 835.875 236.469 836.702 237.038 836.61 c +237.752 836.495 238.993 836.625 238.948 835.784 c +238.835 833.664 237.506 831.944 236.226 830.276 C +236.677 829.572 236.219 828.937 235.935 828.38 c +234.6 825.76 234.789 822.919 234.615 820.079 c +234.61 819.994 234.303 819.916 234.311 819.863 c +234.664 817.528 235.248 815.329 236.127 813.1 c +236.493 812.17 236.964 811.275 237.114 810.348 c +237.225 809.662 237.328 808.829 236.92 808.124 C +238.955 805.234 237.646 802.583 238.815 799.052 c +239.022 798.427 240.714 796.513 240.251 796.674 c +237.738 797.545 237.626 797.943 237.449 798.696 c +237.303 799.319 236.973 800.696 236.736 801.298 c +236.672 801.462 236.501 803.346 236.423 803.468 c +234.91 805.85 236.268 805.674 234.898 808.032 C +233.47 808.712 232.504 809.816 231.381 810.978 c +231.183 811.182 232.326 811.906 232.145 812.119 c +231.053 813.408 229.9 814.175 230.236 815.668 c +230.391 816.358 230.528 817.415 229.784 818.135 c +f +226.2 816.4 m +226.6 809.6 229 808 v +231.4 806.4 230.2 807.2 227 808.4 c +223.8 809.6 225 810.4 y +222.2 810 224.6 808 v +227 806 230.6 803.6 229 803.6 c +227.4 803.6 219.8 807.6 219.8 810.4 c +219.8 813.2 218.8 817.3 y +219.9 818.1 224.7 818 V +226.1 817.3 226.2 816.4 V +f +1 g +1 J 0.1 w +225.4 797.8 m +216.88 800.591 198.4 797.2 V +207.431 799.278 226.2 797 v +236.5 795.75 225.4 797.8 Y +b +227.498 797.871 m +219.252 801.389 200.547 799.608 V +209.725 800.897 228.226 797.005 v +238.38 794.869 227.498 797.871 Y +b +229.286 797.778 m +221.324 801.899 202.539 801.514 V +211.787 802.118 229.948 796.86 v +239.914 793.975 229.286 797.778 Y +b +230.556 797.555 m +223.732 801.862 206.858 802.96 V +215.197 802.79 231.078 796.681 v +239.794 793.328 230.556 797.555 Y +b +345.84 787.039 m +344.91 786.395 345.124 787.576 v +345.339 788.757 373.547 801.927 377.161 801.677 C +346.913 788.471 345.84 787.039 V +b +342.446 786.4 m +341.57 785.685 341.691 786.879 v +341.812 788.073 368.899 803.418 372.521 803.452 C +343.404 787.911 342.446 786.4 V +b +339.16 785.025 m +338.332 784.253 338.374 785.453 v +338.416 786.652 358.233 802.149 368.045 804.023 C +350.015 795.896 339.16 785.025 V +b +336.284 783.162 m +335.539 782.468 335.577 783.547 v +335.615 784.627 353.449 798.574 362.28 800.26 C +346.054 792.946 336.284 783.162 V +b +0.8 g +0 J 1 w +304.6 635.199 m +289.4 637.599 306.2 639.199 V +324.2 641.199 328.2 646.399 V +341.8 655.599 344.6 655.999 v +347.4 656.399 363.8 659.999 364.2 662.399 c +364.6 664.799 370.6 667.199 372.2 666.399 c +373.8 665.599 373.8 656.399 371 655.599 c +368.2 654.799 349.4 647.599 343 646.399 c +336.6 645.199 325 637.599 320.2 636.399 c +315.4 635.199 304.6 635.199 Y +f +0 g +377.6 672.599 m +374.6 670.999 373.4 668.399 V +367 657.799 352.8 654.599 V +329.8 645.599 322 643.599 V +308.6 638.599 301.2 639.399 V +294.2 639.199 300.4 637.599 V +320.6 639.599 324 641.399 V +339.6 646.599 342.6 649.199 v +345.6 651.799 363.8 656.799 366 658.799 c +368.2 660.799 378 669.199 377.6 672.599 C +f +318.882 641.089 m +324.111 641.315 322.958 639.766 v +321.805 638.216 319.357 639.09 y +318.882 641.089 l +f +311.68 639.737 m +316.908 639.963 315.756 638.414 v +314.603 636.864 312.155 637.737 y +311.68 639.737 l +f +301.251 638.489 m +306.48 638.716 305.327 637.166 v +304.174 635.617 301.726 636.49 y +301.251 638.489 l +f +293.617 637.945 m +298.846 638.171 297.693 636.622 v +296.54 635.072 294.092 635.946 y +293.617 637.945 l +f +335.415 648.487 m +342.375 648.788 340.84 646.726 v +339.306 644.664 336.047 645.826 y +335.415 648.487 l +f +345.73 652.912 m +351.689 656.213 351.155 651.151 v +350.885 648.595 346.362 650.251 y +345.73 652.912 l +f +354.862 655.726 m +362.021 659.427 360.287 653.965 v +359.509 651.515 355.493 653.065 y +354.862 655.726 l +f +364.376 660.551 m +368.735 665.452 369.801 658.79 v +370.207 656.252 365.008 657.89 y +364.376 660.551 l +f +326.834 644.003 m +332.062 644.23 330.91 642.68 v +329.757 641.131 327.308 642.004 y +326.834 644.003 l +f +1 g +1 J 0.1 w +362.434 765.397 m +361.708 764.732 361.707 765.803 v +361.707 766.873 379.191 780.137 388.034 781.521 C +371.935 774.792 362.434 765.397 V +b +0 g +0 J 1 w +365.4 701.6 m +387.401 679.199 396.601 675.599 V +405.801 664.399 401.801 638.399 V +398.601 630.799 395.401 651.599 V +398.601 676.799 387.401 660.799 V +379 670.699 385.4 670.399 V +388.601 668.399 389.001 669.999 v +389.401 671.599 381.4 685.199 364.2 699.6 c +347 714 365.4 701.6 Y +f +1 g +1 J 0.1 w +307 662.799 m +306.8 664.599 308.6 663.799 v +310.4 662.999 404.601 656.799 436.201 632.799 C +391.001 655.999 307 662.799 V +b +317.4 667.199 m +317.2 668.999 319 668.199 v +320.8 667.399 457.401 668.399 481.001 635.999 C +459.001 661.199 317.4 667.199 V +b +329 671.199 m +328.8 672.999 330.6 672.199 v +332.4 671.399 505.801 684.399 529.401 651.999 C +519.801 677.599 329 671.199 V +b +339 675.999 m +338.8 677.799 340.6 676.999 v +342.4 676.199 464.601 714.8 488.201 682.399 C +474.801 707 339 675.999 V +b +281 653.199 m +280.8 654.999 282.6 654.199 v +284.4 653.399 302.2 651.199 304.2 612.399 C +297 654.399 281 653.199 V +b +272.2 651.599 m +272 653.399 273.8 652.599 v +275.6 651.799 289.8 656.399 287 617.599 C +288.2 652.799 272.2 651.599 V +b +264.2 651.199 m +264 652.999 265.8 652.199 v +267.6 651.399 283 650.799 270.6 628.399 C +280.2 652.399 264.2 651.199 V +b +311.526 695.535 m +311.082 693.536 312.631 694.753 v +328.699 707.378 361.141 766.28 416.826 771.914 C +378.518 784.024 311.526 695.535 V +b +322.726 697.335 m +321.363 698.528 323.231 699.153 v +325.099 699.778 437.541 772.28 476.826 764.314 C +449.719 771.824 322.726 697.335 V +b +301.885 691.233 m +301.376 689.634 303.087 690.61 v +312.062 695.73 315.677 752.941 359.254 754.196 C +326.843 768.91 301.885 691.233 V +b +281.962 680.207 m +280.885 678.921 282.838 679.175 v +293.084 680.507 314.489 721.778 358.928 716.699 C +326.962 731.045 281.962 680.207 V +b +293.2 686.333 m +292.389 684.864 294.258 685.489 v +304.057 688.763 317.141 733.375 361.729 736.922 C +327.603 744.865 293.2 686.333 V +b +274.922 675.088 m +274.049 674.046 275.631 674.252 v +283.93 675.331 301.268 708.76 337.264 704.646 C +311.371 716.266 274.922 675.088 V +b +267.323 669.179 m +266.318 668.134 267.909 668.252 v +272.077 668.561 302.715 701.64 321.183 686.138 C +309.168 704.861 267.323 669.179 V +b +336.855 701.102 m +335.654 702.457 337.586 702.842 v +339.518 703.226 460.221 760.939 498.184 748.073 C +472.243 758.947 336.855 701.102 V +b +303.4 636.799 m +303.2 638.599 305 637.799 v +306.8 636.999 322.2 636.399 309.8 613.999 C +319.4 637.999 303.4 636.799 V +b +313.8 638.399 m +313.6 640.199 315.4 639.399 v +317.2 638.599 335 636.399 337 597.599 C +329.8 639.599 313.8 638.399 V +b +320.6 639.999 m +320.4 641.799 322.2 640.999 v +324 640.199 348.6 636.799 372.2 604.399 C +336.6 641.199 320.6 639.999 V +b +328.225 642.028 m +327.788 643.786 329.678 643.232 v +331.568 642.678 352.002 644.577 390.099 610.401 C +343.924 645.344 328.225 642.028 V +b +338.625 646.428 m +338.188 648.186 340.078 647.632 v +341.968 647.078 376.802 642.577 428.499 607.601 C +354.324 649.744 338.625 646.428 V +b +298.2 657.999 m +298 659.799 299.8 658.999 v +301.6 658.199 355 655.599 385.4 628.799 C +350.499 653.574 298.2 657.999 V +b +288.2 653.999 m +288 655.799 289.8 654.999 v +291.6 654.199 316.2 650.799 339.8 618.399 C +304.2 655.199 288.2 653.999 V +b +349.503 651.038 m +348.938 652.759 350.864 652.345 v +352.79 651.932 387.86 649.996 441.981 618.902 C +364.317 653.296 349.503 651.038 V +b +357.903 653.438 m +357.338 655.159 359.264 654.745 v +361.19 654.332 396.26 652.396 450.381 621.302 C +373.317 656.096 357.903 653.438 V +b +367.503 658.438 m +366.938 660.159 368.864 659.745 v +370.79 659.332 413.86 654.996 503.582 620.702 C +382.917 661.096 367.503 658.438 V +b +0 g +0 J 1 w +256.2 651.599 m +261.4 651.999 260.2 650.399 v +259 648.799 256.6 649.599 y +256.2 651.599 l +f +287 637.599 m +292.2 637.999 291 636.399 v +289.8 634.799 287.4 635.599 y +287 637.599 l +f +278.2 637.999 m +283.4 638.399 282.2 636.799 v +281 635.199 278.6 635.999 y +278.2 637.999 l +f +182.831 649.818 m +187.876 648.495 186.218 647.376 v +184.561 646.256 182.554 647.798 y +182.831 649.818 l +f +184.831 659.418 m +189.876 658.095 188.218 656.976 v +186.561 655.856 184.554 657.398 y +184.831 659.418 l +f +177.631 663.818 m +182.676 662.495 181.018 661.376 v +179.361 660.256 177.354 661.798 y +177.631 663.818 l +f +0.8 g +1 J 0.1 w +257.4 588.799 m +255.8 588.799 251.8 586.799 V +249.8 586.799 238.6 583.199 233 573.199 C +245.4 582.799 257.4 588.799 V +f +345.116 496.153 m +345.257 495.895 345.312 495.475 345.604 495.458 c +346.262 495.418 347.495 495.117 347.37 495.753 c +346.522 500.059 345.648 504.996 341.515 506.803 c +340.876 507.082 339.434 506.669 339.36 505.785 c +339.233 504.261 339.116 502.912 339.425 501.446 c +339.725 500.025 341.883 500.015 342.8 501.399 C +343.736 499.727 344.168 497.884 345.116 496.153 c +f +334.038 491.419 m +334.786 490.006 334.659 488.147 336.074 487.584 c +336.814 487.29 338.664 488.265 338.246 489.339 c +337.444 491.4 337.056 493.639 335.667 495.45 c +335.467 495.712 335.707 496.245 335.547 496.573 c +334.953 497.793 333.808 498.528 332.4 498.199 C +331.285 495.996 332.433 493.867 333.955 492.158 c +334.091 492.006 333.925 491.63 334.038 491.419 c +f +294.436 496.609 m +294.328 496.986 294.29 497.449 294.455 497.77 c +294.986 498.803 295.779 499.925 295.442 500.947 c +295.094 502.003 293.978 501.821 293.328 501.252 c +292.193 500.258 292.144 498.432 291.453 497.073 c +291.257 496.687 291.308 496.114 290.867 495.723 c +290.393 495.302 289.953 493.778 290.049 493.207 c +290.102 492.894 289.919 482.986 290.141 483.249 c +290.76 483.982 293.81 493.716 293.879 494.608 c +293.936 495.339 294.668 495.804 294.436 496.609 c +f +268.798 503.401 m +271.432 505.9 274.222 508.861 273.78 512.573 c +273.664 513.549 271.889 513.022 271.702 512.176 c +270.9 508.551 268.861 505.89 266.293 503.498 c +264.097 501.451 262.235 495.107 262 494.599 C +265.697 499.855 267.954 502.601 268.798 503.401 c +f +255.224 509.365 m +255.747 509.735 255.445 510.226 255.662 510.558 c +256.615 512.016 257.916 513.262 257.934 515 c +257.937 515.277 257.559 515.586 257.224 515.362 c +256.947 515.178 256.605 515.048 256.497 514.918 c +254.467 512.469 253.067 509.798 251.624 506.986 c +251.441 506.629 250.297 502.138 250.61 502.027 c +250.849 501.942 252.569 506.123 252.779 506.237 c +254.042 506.923 254.054 508.538 255.224 509.365 c +f +271.957 489.821 m +272.401 490.69 273.977 491.892 273.864 492.781 c +273.746 493.709 274.214 495.152 273.302 494.464 c +272.045 493.516 268.596 492.167 268.326 486.359 c +268.3 485.788 271.274 488.481 271.957 489.821 c +f +286.4 506.999 m +286.8 507.667 287.508 507.194 287.967 507.457 c +288.615 507.829 289.226 508.387 289.518 509.036 c +290.488 511.185 292.257 513.005 292.4 515.399 C +290.909 516.804 290.23 514.764 289.6 513.799 C +288.277 515.446 287.278 513.572 285.978 513.053 c +285.908 513.025 285.695 513.372 285.62 513.345 c +284.443 512.905 283.763 511.824 282.765 511.043 c +282.594 510.909 282.189 511.089 282.042 510.953 c +281.39 510.35 280.417 510.025 280.137 509.343 c +279.027 506.636 275.887 504.541 274 496.999 C +274.381 496.09 278.512 503.641 278.999 504.339 c +279.835 505.535 279.953 502.678 281.229 503.344 c +281.28 503.371 281.466 503.133 281.6 502.999 C +281.794 503.279 282.012 503.508 282.4 503.399 C +282.4 503.799 282.266 504.355 282.467 504.514 c +283.704 505.491 283.62 506.559 284.4 507.799 C +284.858 507.01 285.919 507.729 286.4 506.999 C +f +346.2 452.599 m +353.6 472.999 349.2 484.199 V +360.6 462.599 356 451.399 V +355.6 461.799 351.6 466.799 V +347.6 453.999 346.2 452.599 V +f +331.4 455.199 m +336.8 463.999 328.8 482.399 V +328 461.999 321.2 450.999 V +335.4 471.199 331.4 455.199 V +f +321.4 457.199 m +321.2 477.199 321.6 480.199 V +317.8 463.599 307.6 453.999 V +322 465.999 321.4 457.199 V +f +311.8 489.199 m +317.8 475.599 307.8 457.199 V +314.2 469.399 309.4 476.399 V +312 479.799 311.8 489.199 V +f +292.6 457.599 m +291.6 473.199 293.4 475.399 V +293.6 481.799 293.2 482.799 V +297.2 488.999 297.4 481.599 V +298.8 473.799 301.6 469.199 V +305.2 463.799 305 457.399 V +295 487.599 292.6 457.599 V +f +289 485.199 m +282.4 474.399 280.6 455.399 V +279.2 461.599 283 475.999 V +287.2 491.399 289 485.199 V +f +267.2 465.399 m +272.2 470.799 273.6 475.799 V +277.2 491.599 270.8 482.999 V +271 474.999 262.8 467.599 V +267.6 469.999 267.2 465.399 V +f +261.4 470.399 m +264.8 487.799 265.6 488.599 V +267.4 491.999 264.6 488.799 V +255.8 469.599 251.8 462.999 V +259.8 472.199 261.4 470.399 V +f +255.6 486.999 m +267.2 509.399 245.4 483.599 V +256.4 493.399 255.6 486.999 V +f +240.2 501.599 m +245 520.399 247.6 520.199 V +255.8 529.199 249.2 518.599 V +243.2 508.999 243.8 499.199 V +243.2 508.799 240.2 501.599 V +f +570.5 513 m +558.5 523 556 526.5 V +569.5 508 569.5 501 V +572 508.5 570.5 513 V +f +576 535 m +555 550 551.5 557.5 V +578 528 578 523.5 V +578.5 532.5 576 535 V +f +593 689 m +581 697 579.5 695 V +590 688.5 592.5 680 V +591 689 593 689 V +f +601.5 608.5 m +584 620.5 l +603 603.5 603.5 599.5 V +601.5 608.5 L +f +0 g +1 w +210.75 631 m +232.75 626.25 l +S +261 469 m +260.5 472.5 251.5 462 v +S +266.5 464 m +268.5 470.5 262 466 v +S +320.5 455.5 m +322 466.5 310.5 453.5 v +S + +showpage + +% Modification Denis GIROU (CNRS/IDRIS - France) - 18 Dec. 1997 +%% %%Trailer +countdictstack InitDictCount sub { end } repeat +cleartomark +restore +grestore diff --git a/Master/texmf-dist/source/latex/sesamanuel/sesamanuel.dtx b/Master/texmf-dist/source/latex/sesamanuel/sesamanuel.dtx new file mode 100644 index 00000000000..c29f9f28d1a --- /dev/null +++ b/Master/texmf-dist/source/latex/sesamanuel/sesamanuel.dtx @@ -0,0 +1,11947 @@ +% \iffalse +% +%% sesamanuel.dtx +%% Copyright 2014-2015 Sesamath Society written by J.-C. Charpentier, S. Mengin +%% +%% Copyright (C) 2014-2015 Sesamath Society written by Jean-C\^ome Charpentier, S\'ebastien +%% Mengin. +% \fi +% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +% \iffalse +%<*driver> +\documentclass[a4paper]{ltxdoc} +\IndexPrologue{% + \newpage + \section*{Index}% + Les num\'eros soulign\'es indiquent le num\'ero de ligne de la + d\'efinition de l'entr\'ee. Les num\'eros en roman indiquent les + num\'eros de ligne o\`u l'entr\'ee est utilis\'ee. +} +\makeatletter +\renewenvironment{theglossary}{% + \glossary@prologue + \GlossaryParms \let\item\@idxitem \ignorespaces}% + {} +\makeatother +\GlossaryPrologue{% + \newpage + \section*{{Historique des changements}} + \markboth{{Historique des changements}}{{Historique des changements}}% +} +\DisableCrossrefs +%\EnableCrossrefs +%\CodelineIndex +\RecordChanges +%\OnlyDescription +\usepackage{fontspec} +\usepackage{xunicode} +\usepackage{xltxtra} +\usepackage[a4paper,left=2in]{geometry} +\usepackage{makeidx} +\usepackage{array} +\let\iint\relax +\let\iiint\relax +\let\iiiint\relax +\let\idotsint\relax +\usepackage{amsmath} +\usepackage{xcolor} +\usepackage[french]{babel} +\usepackage{xspace} +\usepackage{hyperref} +\makeindex +\title{Code de la classe \class{sesamanuel}\\Classe pour les cahiers Sésamath} +\author{% + Jean-Côme Charpentier\thanks{\ttfamily jean-come.charpentier@wanadoo.fr} + \and Sébastien Mengin\thanks{\ttfamily sebastien-mengin@edilibre.net} +} +\newcommand*\pgm[1]{\texttt{#1}} +\newcommand*\file[1]{\texttt{#1}} +\newcommand*\package[1]{\texttt{#1}} +\newcommand*\class[1]{\texttt{#1}} +\newcommand*\option[1]{\texttt{#1}} +\newcommand*\key[1]{\texttt{#1}} +\newcommand*\environ[1]{\texttt{#1}} + +\begin{document} +\maketitle +\newpage +\tableofcontents +\newpage +\DocInput{sesamanuel.dtx} +\PrintChanges +\PrintIndex +\end{document} +% +% \fi +% +% \changes{v0.1}{2013/07/16}{% +% Classe \class{sesacah} commencée. +% } +% \changes{v0.2}{2014/03/05}{% +% Classe \class{sesacah} utilisée en production. +% } +% \changes{v0.3}{2014/08/26}{% +% Quelques aménagements de la classe après écriture de la +% documentation.\endgraf +% Package \package{sesacah} pour une utilisation indépendante. +% } +% \changes{v0.4}{2014/10/31}{% +% Écriture de la partie libre. +% } +% \changes{v0.5}{2014/12/20}{% +% Changement de nom sesacah en sesamanuel. +% } +% \changes{v0.6}{2015/03/03}{% +% Mise en cohérence avec les sources du site Sesamath.\endgraf +% Package \package{sesamanuelTIKZ} ajouté au dtx. +% } +% \CheckSum{0} +% \iffalse +%<*class> +% \fi +% \section{Partie introductive} +% La partie introductive de la classe n'a rien de particulier, on +% retrouve la définition de version et de date de la classe ainsi que +% les commandes \LaTeX{} pour communiquer ces informations à +% l'utilisateur. +% \begin{macrocode} +\def\filedate{2015/03/03} +\let\smcfiledate\filedate +\def\fileversion{0.6} +\let\smcfileversion\fileversion +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesClass{sesamanuel}[% + \filedate\space v\fileversion\space + Classe pour les cahiers Sesamath (SM/JCC/SM)% +] +% \end{macrocode} +% Dans cette partie introductive, on charge également la classe +% \class{book}. Pour l'instant, il n'y a besoin d'aucune option +% particulière, les options par défaut sont tout à fait suffisantes. +% \begin{macrocode} +\LoadClass{book} +% \end{macrocode} +% \section{Options de classe} +% La classe gère le codage d'entrée en option. On retrouve tous les +% codages possibles. En principe, la classe est sensée fonctionner +% avec \XeTeX{} et alors uniquement un codage d'entrée UTF-8 mais on +% permettra un fonctionnement sous \LaTeX{} et donc avec les codages +% permis par \package{inputenc}. Comme il y a beaucoup de déclarations +% différentes, on utilise une macro générale de déclaration d'option : +% \begin{macrocode} +\def\smc@enc@opt#1{\DeclareOption{#1}{\def\smc@encoding{#1}}} +\smc@enc@opt{ascii} +\smc@enc@opt{latin1} +\smc@enc@opt{latin2} +\smc@enc@opt{latin3} +\smc@enc@opt{latin4} +\smc@enc@opt{latin5} +\smc@enc@opt{latin9} +\smc@enc@opt{latin10} +\smc@enc@opt{decmulti} +\smc@enc@opt{cp850} +\smc@enc@opt{cp852} +\smc@enc@opt{cp858} +\smc@enc@opt{cp437} +\smc@enc@opt{cp437de} +\smc@enc@opt{cp865} +\smc@enc@opt{applemac} +\smc@enc@opt{macce} +\smc@enc@opt{next} +\smc@enc@opt{cp1250} +\smc@enc@opt{cp1252} +\smc@enc@opt{cp1257} +\smc@enc@opt{ansinew} +\smc@enc@opt{utf8} +% \end{macrocode} +% On a également une option pour obtenir ou non les repères +% photographique (et les débordements de pleine page). On donne sa +% valeur par défaut qui est vraie. +% \begin{macrocode} +\newif\ifsmc@crop +\smc@croptrue +\DeclareOption{crop}{\smc@croptrue} +\DeclareOption{nocrop}{\smc@cropfalse} +% \end{macrocode} +% Une dernière option permet de supprimer les numéros de page mais +% uniquement pour un texte libre. +% \begin{macrocode} +\newif\ifsmc@page +\smc@pagetrue +\DeclareOption{page}{\smc@pagetrue} +\DeclareOption{nopage}{\smc@pagefalse} +% \end{macrocode} +% Les options par défaut sont l'utilisation de UTF-8 et de repère +% photgraphique et de la numérotation des pages en partie libre. On +% aura également besoin d'une macro contenant la chaîne \og utf8 \fg{}. +% \begin{macrocode} +\newcommand*\smc@string@utfviii{utf8} +\ExecuteOptions{utf8} +\ProcessOptions +% \end{macrocode} +% \section{Chargement des extensions} +% On chargera le minimum d'extensions dans la classe afin de limiter +% les problèmes de compatibilités avec les différentes distributions +% \TeX{} (distributions et versions de ces distributions). On aurait +% pu choisir de charger les extensions \package{ifpdf}, +% \package{ifluatex} et \package{ifxetex} pour tester le mode de +% compilation et agir en conséquence mais on n'a pas besoin de ce luxe +% : comme on est en tout début de classe, on peut utiliser des +% méthodes légèrement moins solides que celles fournies dans ces +% extensions mais très largement suffisantes ici. +% +% On doit tester dans l'ordre : +% \begin{enumerate} +% \item si on compile avec PDF\LaTeX{} ou lua\LaTeX{} ce qui +% doit donner une erreur de compilation immédiate avec un message +% d'erreur explicite ; +% \item si on compile avec \LaTeX{} ou avec \XeLaTeX{} ce qui donnera +% un chargement d'extensions différentes et, plus tard, une gestion +% des fontes différentes. +% \end{enumerate} +% Le code suivant est une recopie du code de \package{ifxetex} de Will +% Robertson. +% \begin{macrocode} +\newif\ifxetex +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname XeTeXrevision\endcsname\relax + \xetexfalse +\else + \xetextrue +\fi +% \end{macrocode} +% Le code suivant est très largement suffisant pour détecter en tout +% début de classe si on utilise PDF\LaTeX{} en mode PDF, PDF\LaTeX{} +% en mode dvi, \XeLaTeX{} ou enfin lua\LaTeX{}. +% \begin{macrocode} +\newif\ifpdftex +\newif\ifpdfdvi +\newif\ifluatex +\ifx\luatexversion\undefined + \luatexfalse + \ifx\pdfoutput\undefined + \pdftexfalse + \pdfdvifalse + \else + \pdftextrue + \ifnum\pdfoutput=\z@ + \pdfdvitrue + \else + \pdfdvifalse + \fi + \fi +\else + \luatextrue +\fi +% \end{macrocode} +% On teste d'abord les modes qui conduisent à une erreur de +% compilation. +% \begin{macrocode} +\ifpdftex + \unless\ifpdfdvi + \ClassError{sesamanuel}{Vous ne pouvez pas compiler en mode pdflatex} + {Compilez en mode latex.}% + \fi +\fi +\ifluatex + \ClassError{sesamanuel}{Vous ne pouvez pas compiler en mode lualatex} + {Compilez en mode latex.}% +\fi +% \end{macrocode} +% On commence le chargement des extensions par celles qui dépendent du +% mode de compilation. Au préalable, on charge le package +% \package{etex} pour ne pas embêter ceux qui vont utiliser TikZ. +% \begin{macrocode} +\RequirePackage{etex} +\ifxetex + \RequirePackage{fontspec} + \RequirePackage{xunicode} + \defaultfontfeatures{Ligatures=TeX} +% \end{macrocode} +% Si l'auteur a précisé un codage autre que utf8 dans les options de +% classe, on va émettre un message d'erreur. +% \begin{macrocode} + \unless\ifx\smc@encoding\smc@string@utfviii + \ClassError{sesamanuel}{Vous ne pouvez pas utiliser un codage autre + que utf8 avec xelatex}{Changez les codages de tous vos fichiers + pour les transformer en utf8.}% + \fi +% \end{macrocode} +% Si on n'est pas en mode \XeLaTeX{}, on considèrera qu'on est en mode +% \LaTeX{}. Si ce n'est pas vrai, il y aura déjà eu un message +% d'erreur auparavant. On déclare également des fontes annexes. +% \begin{macrocode} +\else + \RequirePackage[T1]{fontenc} + \RequirePackage[\smc@encoding]{inputenc} +\fi +% \end{macrocode} +% On charge les fontes courantes. Le réglage de la fonte Helvetica +% fait que l'œil est le même que pour Palatino. +% \begin{macrocode} +\RequirePackage[scaled=0.87]{helvet} +\RequirePackage{mathpazo} +\renewcommand{\ttdefault}{lmtt} +% \end{macrocode} +% Puis quelques autres à usage plus ponctuel. +% \begin{macrocode} +\RequirePackage{mathrsfs} +\RequirePackage{pifont} +\RequirePackage[official]{eurosym} +% \end{macrocode} +% Il est difficle de trouver une fonte directement installée dans les +% distributions \TeX{} qui se rapproche du Comic Sans proposé par la +% maquette. Un premier essai a été Comforta mais il semble que cette +% fonte n'existait pas sur les versions un peu ancienne des +% distributions \TeX{} (par exemple \TeX Live 2009). On fait un autre +% essai avec la famille llcmss (\package{lxfonts}). +% \begin{macrocode} +%%%\newcommand*\scriptfamily{\fontfamily{fco}\selectfont} +\newcommand*\scriptfamily{\fontfamily{llcmss}\selectfont} +% \end{macrocode} +% Tout ce qui est empagement est paramétré au maximum. |\smc@bleed| +% indique le débordement des éléments en pleine page. +% \begin{macrocode} +\newcommand*\smc@paperheight{27cm} +\newcommand*\smc@paperwidth{19.5cm} +\newcommand*\smc@marginleft{1.33cm} +\newcommand*\smc@marginright{1.33cm} +% \end{macrocode} +% Il y a une dimension en plus qui ne sera pas gérée par geometry : le +% surplus de marge droite pour certains éléments de l'ouvrage. +% \begin{macrocode} +\newcommand*\ExtraMarginRight{1.8cm} +\newcommand*\smc@margintop{2.5cm} +\newcommand*\smc@headheight{14.4pt} +\newcommand*\smc@headsep{1.4cm} +\newcommand*\smc@marginbottom{2cm} +\newcommand*\smc@footskip{1.2cm} +% \end{macrocode} +% Les éléments suivants dépendent de la demande ou non de repères +% photographiques. On traite d'abord le cas où il y a une telle demande. +% \begin{macrocode} +\ifsmc@crop + \newcommand*\smc@bleed{5mm} +% \end{macrocode} +% On peut alors appeler l'extension geometry ainsi que crop. Avant +% d'appeler geometry, on sauvegarde les éléments de mise en page dans +% des macros privées. Tous les calculs de distances se feront avec des +% macros (jamais de longueurs directes). +% \begin{macrocode} + \RequirePackage[driver=none, + paperheight=\smc@paperheight, + paperwidth=\smc@paperwidth, + top=\smc@margintop, + headheight=\smc@headheight, + headsep=\smc@headsep, + bottom=\smc@marginbottom, + footskip=\smc@footskip, + left=\smc@marginleft, + right=\smc@marginright, + nomarginpar]{geometry} + \RequirePackage[cam,a4,center]{crop} +% \end{macrocode} +% Si on ne demande pas de repère photographique, l'extension +% \package{crop} est inutile et les débordements de pleine page sont +% supprimés. L'appel de \package{geometry} se fait exactement de la +% même façon qu'avec l'option crop mais on garde quand même un double +% code au cas où l'appel ne serait plus le même plus tard. +% \begin{macrocode} +\else + \newcommand*\smc@bleed{0mm} + \RequirePackage[driver=none, + paperheight=\smc@paperheight, + paperwidth=\smc@paperwidth, + top=\smc@margintop, + headheight=\smc@headheight, + headsep=\smc@headsep, + bottom=\smc@marginbottom, + footskip=\smc@footskip, + left=\smc@marginleft, + right=\smc@marginright, + nomarginpar]{geometry} + \RequirePackage[off,a4,center]{crop} +\fi +% \end{macrocode} +% On continue avec d'autres extensions utiles +% \begin{macrocode} +\RequirePackage{ifmtarg} +\RequirePackage{mathtools} +\RequirePackage{amssymb} +\RequirePackage{longtable, tabularx} +\RequirePackage{multirow} +\RequirePackage[table]{xcolor} +\RequirePackage{pst-all, pstricks-add} +\RequirePackage{fancyhdr} +\RequirePackage{fancyvrb} +\RequirePackage{multicol} +\RequirePackage[french]{babel} +\RequirePackage[autolanguage]{numprint} +% \end{macrocode} +% On crée quelques registres de brouillon +% \begin{macrocode} +\newbox\smc@boxa +\newbox\smc@boxb +\newdimen\smc@dima +\newdimen\smc@dimb +% \end{macrocode} +% \section{Mise en page générale} +% Suppression des retraits d'alinéa. +% \begin{macrocode} +\setlength{\parindent}{0pt} +% \end{macrocode} +% \begin{macro}{\cleardoubleoddpage} +% Macro permettant de commencer sur une page impaire en remplissant si +% besoin une page vide (pas totalement vide). +% \begin{macrocode} +\newcommand*\cleardoubleoddpage{% + \clearpage + \pagestyle{empty} + \cleardoublepage +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\cleardoubleevenpage} +% Macro permettant de commencer sur une page paire en remplissant si +% besoin une page vide (pas totalement vide). Cette macro a besoin de +% la commande intermédiaire |\clearevendoublepage| construite sur le +% modèle de |\cleardoublepage| de \LaTeX. Il semble que la maquette +% n'utilise plus l'ouverture en page paire mais on laisse quand même +% les macros au cas où. +% \begin{macrocode} +\newcommand*\clearevendoublepage{% + \clearpage + \ifodd\c@page + \hbox{}\newpage + \fi +} +\newcommand*\cleardoubleevenpage{% + \clearpage + \pagestyle{empty} + \clearevendoublepage +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\normalsize} +% La classe définit un interlignage bien plus important que +% d'habitude. Il faut donc redéfinir les commandes standards de taille +% de caractère pour respecter cette marche typographique tout au long +% du document. La demande est d'avoir un interlignage de 14 points au +% lieu du 12 points habituel. On mettra plutôt 14.4 points pour garder +% la progression géométrique habituelle. On ne touche pas au ressorts +% verticaux pour les formules hors-texte. +% \begin{macrocode} +\renewcommand\normalsize{% + \@setfontsize\normalsize{9.5}\@xivpt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI} +\normalsize +% \end{macrocode} +% Les autres commandes suivent le même procédé. On augmente +% l'interlignage de un cran dans la progression géométrique. +% \begin{macrocode} +\renewcommand\small{% + \@setfontsize\small{8.5}{12}% + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus2\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \belowdisplayskip \abovedisplayskip +} +\renewcommand\footnotesize{% + \@setfontsize\footnotesize{7.5}{11}% + \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus\p@ + \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ + \belowdisplayskip \abovedisplayskip +} +\renewcommand\scriptsize{\@setfontsize\scriptsize{6.5}{9.5}} +\renewcommand\tiny{\@setfontsize\tiny\@vpt\@viipt} +\renewcommand\large{\@setfontsize\large\@xiipt\@xviipt} +\renewcommand\Large{\@setfontsize\Large\@xivpt{22}} +\renewcommand\LARGE{\@setfontsize\LARGE\@xviipt{25}} +\renewcommand\huge{\@setfontsize\huge\@xxpt{30}} +\renewcommand\Huge{\@setfontsize\Huge\@xxvpt{36}} +\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@} +\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@} +% \end{macrocode} +% \end{macro} +% \begin{environment}{itemize} +% En fait, il n'y a pas un environnement |itemize| mais tout un tas +% qui seront mis en place en fonction du contexte. On commence par +% l'environnement qui indique qu'on a pas le droit d'utiliser cet +% environnement ! On inhibe |\item| pour ne pas multipler les messages +% d'erreur. +% \begin{macrocode} +\newenvironment{smc@noitemize}{% + \ClassError{sesamanuel}{Il est interdit d'utiliser itemize ici} + {Consultez la documentation pour plus de renseignements.}% + \let\item\relax +}{} +% \end{macrocode} +% Par défaut, c'est l'environnement interdit qui est actif. +% \begin{macrocode} +\let\itemize\smc@noitemize +\let\enditemize\endsmc@noitemize +% \end{macrocode} +% \begin{macro}{\DeclareCorrItemize} +% On crée un spécificateur d'environnement itemize pour les +% corrigés. Il ne s'agit pas de liste au sens \LaTeX ien du terme : il +% n'y a pas de passage à la ligne avant le premier item, il n'y a pas +% de retrait. +% +% Le premier argument est le nom de base (il sera précédé de smc@corr +% et terminé par itemize), le +% deuxième argument est le type de puce +% \begin{macrocode} +\newcommand*\DeclareCorrItemize[2]{% + \newenvironment{smc@corr#1itemize}{% + \def\item{\par#2~}% + \ignorespaces + } + {\par} +} +% \end{macrocode} +% \end{macro} +% Les espacements sont les mêmes pour toutes les listes sauf les +% enumerate. +% \emph{normales}. +% \begin{macrocode} +\def\smc@setalllist{% + \setlength{\leftmargin}{\ListLabelWidth}% + \setlength{\rightmargin}{0mm}% + \setlength{\labelwidth}{\ListLabelWidth}% + \setlength{\labelsep}{0mm}% + \setlength{\itemindent}{0mm}% + \setlength{\listparindent}{0mm}% + \setlength{\topsep}{0mm}% + \setlength{\partopsep}{\baselineskip}% + \setlength{\itemsep}{0mm}% + \setlength{\parsep}{0mm}% + \def\makelabel##1{##1\hss}% +} +% \end{macrocode} +% Pour les enumerate de premier niveau, on peut avoir une largeur plus +% importante d'étiquette afin de pouvoir composer des numéros sur deux +% chiffres sans télescopage. Ce niveau utilise |\smc@setallfirstlist| +% qui est par défaut égal à la macro précédente. +% \begin{macrocode} +\let\smc@setallfirstlist\smc@setalllist +% \end{macrocode} +% Pour les list enumerate de premier niveau, on pourra utiliser une +% place plus importante pour le numéro afin de permettre une +% numérotation sur deux chiffres. C'est l'environnement |bigenumerate| +% qui utilisera cette possibilité. +% \begin{macrocode} +\def\smc@setallbiglist{% + \setlength{\leftmargin}{\EnumerateLabelWidth}% + \setlength{\rightmargin}{0mm}% + \setlength{\labelwidth}{\EnumerateLabelWidth}% + \setlength{\labelsep}{0mm}% + \setlength{\itemindent}{0mm}% + \setlength{\listparindent}{0mm}% + \setlength{\topsep}{0mm}% + \setlength{\partopsep}{\baselineskip}% + \setlength{\itemsep}{0mm}% + \setlength{\parsep}{0mm}% + \def\makelabel##1{##1\hss}% +} +% \end{macrocode} +% Vient ensuite l'environnement de liste à puce dans les prérequis. On +% donnera systématiquement la variante \og corr \fg de l'environnement +% même si celle-ci ne sert à rien pour l'instant : c'est une réserve +% pour l'avenir. +% +% On teste la profondeur des itemize pour pouvoir définir une puce +% différente en fonction du niveau. +% \begin{macrocode} +\newenvironment{smc@prerequisitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{PrerequisItemColor}{$\blacktriangleright$}} + {\smc@setalllist}% + \else + \list{\textcolor{PrerequisItemColor}{$\blacktriangleright$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{prerequis} + {\textcolor{PrerequisItemColor}{$\blacktriangleright$}} +% \end{macrocode} +% Puis l'environnement de liste à puce dans l'auto-évaluation. +% \begin{macrocode} +\newenvironment{smc@AEitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{AEItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{AEItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{AE}{\textcolor{AEItemColor}{$\bullet$}} +% \end{macrocode} +% Puis l'environnement de liste à puce dans les méthodes. +% \begin{macrocode} +\newenvironment{smc@exappitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ExAppItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ExAppItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{exapp}{\textcolor{ExAppItemColor}{$\bullet$}} +% \end{macrocode} +% Puis l'environnement de liste à puce dans les environnement de type +% définition. +% \begin{macrocode} +\newenvironment{smc@defitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{DefItemColor}% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{DefItemColor}% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{def}{% + \textcolor{DefItemColor}{% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + }% +} +% \end{macrocode} +% Puis l'environnement de liste à puce dans les activités. +% \begin{macrocode} +\newenvironment{smc@activiteitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ActiviteItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ActiviteItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{activite}{\textcolor{ActiviteItemColor}{$\bullet$}} +% \end{macrocode} +% Puis l'environnement de liste à puce dans les remarques. +% \begin{macrocode} +\newenvironment{smc@remitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{RemItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{RemItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{rem}{% + \textcolor{RemItemColor}{% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + }% +} +% \end{macrocode} +% Puis l'environnement de liste à puce dans les exemples. +% \begin{macrocode} +\newenvironment{smc@exempleitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ExempleItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ExempleItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{exemple}{\textcolor{ExempleItemColor}{$\bullet$}} +% \end{macrocode} +% Puis l'environnement de liste à puce dans les preuves. +% \begin{macrocode} +\newenvironment{smc@proofitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ProofItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ProofItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{proof}{\textcolor{ProofItemColor}{$\bullet$}} +% \end{macrocode} +% Puis l'environnement de liste à puce dans les parties Exercices de +% base et Exercices d'approfondissement. +% \begin{macrocode} +\newenvironment{smc@exerciceitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ExerciceItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ExerciceItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{exercice}{\textcolor{ExerciceItemColor}{$\bullet$}} +% \end{macrocode} +% Puis l'environnement de liste à puce pour les acquis. +% \begin{macrocode} +\newenvironment{smc@acquisitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{AcquisItemColor}{\footnotesize$\blacktriangleright$}} + {\smc@setalllist}% + \else + \list{\textcolor{AcquisItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{acquis}{\textcolor{AcquisItemColor}{$\bullet$}} +% \end{macrocode} +% Puis l'environnement de liste à puce pour les commentaires. Dans cet +% espace, on prend la forme la plus simple. +% \begin{macrocode} +\newenvironment{smc@commentaireitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{CommentaireItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{CommentaireItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{commentaire}{\textcolor{CommentaireItemColor}{$\bullet$}} +% \end{macrocode} +% Puis l'environnement de liste à puce pour les récréations, énigmes. +% \begin{macrocode} +\newenvironment{smc@recreationitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{RecreationItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{RecreationItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{recreation}{\textcolor{RecreationItemColor}{$\bullet$}} +% \end{macrocode} +% Puis l'environnement de liste à puce dans les annexes. +% \begin{macrocode} +\newenvironment{smc@annexeitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{AnnexeItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{AnnexeItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +% \end{macrocode} +% Liste pour le lexique +% \begin{macrocode} +\newenvironment{smc@lexiqueitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{LexiqueItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{LexiqueItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +% \end{macrocode} +% Puis l'environnement de liste à puce dans le texte libre. +% \begin{macrocode} +\newenvironment{smc@libreitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{LibreItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{LibreItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{libre}{\textcolor{LibreItemColor}{$\bullet$}} +% \end{macrocode} +% \end{environment} +% \begin{environment}{enumerate} +% Tout ce qu'on a fait avec |itemize| se reporte de façon similaire +% avec |enumerate| (sauf la largeur de l'étiquette). On ne modifiera +% pas l'environnement |description| \emph{a priori}. +% +% On commence par déclarer l'interdiction d'utiliser |enumerate|. +% \begin{macrocode} +\newenvironment{smc@noenumerate}{% + \ClassError{sesamanuel}{Il est interdit d'utiliser enumerate ici} + {Consultez la documentation pour plus de renseignements.}% + \let\item\relax +}{} +% \end{macrocode} +% Par défaut ce sont les environnements interdits qui sont activés. +% \begin{macrocode} +\let\enumerate\smc@noenumerate +\let\endenumerate\endsmc@noenumerate +% \end{macrocode} +% On définit maintenant l'environnement |bigenumerate| qui ne fait +% qu'appeler |enumerate| en ayant modifié au préalable la largeur des +% étiquettes pour la liste de premier niveau. +% \begin{macrocode} +\newenvironment{bigenumerate} + {% + \let\smc@setallfirstlist\smc@setallbiglist + \begin{enumerate} + } + {\end{enumerate}} +% \end{macrocode} +% Les différentes environnements enumerate ne diffèrent que par la +% couleur des numéros et le gras. On les déclarera grâce à la commande +% générique |\DeclareEnumerate|. Sa syntaxe est : \\ +% |\DeclareEnumerate{nom\_environnement}{commande}{couleur}|\\ +% +% La première définition globale permet d'afficher correctement la +% couleur des références des item. +% \begin{macrocode} +\newcommand\DeclareEnumerate[3]{% + \newenvironment{smc@#1enumerate}{% + \gdef\smc@curr@itemcmd{#2}% + \gdef\smc@curr@itemcolor{#3}%( + \renewcommand\labelenumi{\textcolor{#3}{#2\theenumi)}}%( + \renewcommand\labelenumii{\textcolor{#3}{#2\theenumii)}}%( + \renewcommand\labelenumiii{\textcolor{#3}{#2\theenumiii)}}% + \advance\@enumdepth \@ne + \ifnum\@enumdepth>\thr@@ +% \end{macrocode} +% Si on a plus de trois niveau d'imbrication de enumerate, c'est une +% erreur. +% \begin{macrocode} + \ClassError{sesamanuel}{Pas plus de 3 niveaux de liste} + {Consultez la documentation pour plus de renseignements.} + \else\ifnum\@enumdepth=\@ne +% \end{macrocode} +% Si on est au premier niveau, on peut utiliser une largeur de label +% plus importante pour permettre une numérotation à deux +% chiffres. +% \begin{macrocode} + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \expandafter + \list + \csname label\@enumctr\endcsname + {% + \usecounter{\@enumctr}% + \smc@setallfirstlist + }% + \else +% \end{macrocode} +% Sinon, on garde la largeur habituelle. +% \begin{macrocode} + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \expandafter + \list + \csname label\@enumctr\endcsname + {% + \usecounter{\@enumctr}% + \smc@setalllist + }% + \fi\fi + } + {\endlist} +% \end{macrocode} +% On définit du même coup les environnements |smc@correnumerate| +% qui se comporte très différemment des listes enumerate classiques. +% \begin{macrocode} + \newenvironment{smc@corr#1enumerate}{% + \gdef\smc@curr@itemcmd{#2}% + \gdef\smc@curr@itemcolor{#3}%( +% \end{macrocode} +% On remet tous les compteurs à zéros (même si un seul sera utilisé). +% \begin{macrocode} + \setcounter{enumi}{0}% + \setcounter{enumii}{0}% + \setcounter{enumiii}{0}% + \renewcommand\labelenumi{\textcolor{#3}{#2\theenumi)}}%( + \renewcommand\labelenumii{\textcolor{#3}{#2\theenumii)}}%( + \renewcommand\labelenumiii{\textcolor{#3}{#2\theenumiii)}}% + \advance\@enumdepth \@ne + \ifnum\@enumdepth>\thr@@ + \ClassError{sesamanuel}{Pas plus de 3 niveaux de liste} + {Consultez la documentation pour plus de renseignements.} + \else +% \end{macrocode} +% On commence par crée une macro annexe qui affiche le numéro. +% \begin{macrocode} + \def\smc@enum{% + \refstepcounter{enum\romannumeral\@enumdepth}% + \csname labelenum\romannumeral\@enumdepth\endcsname~ + }% +% \end{macrocode} +% Ici, on ne redéfinit que la commande |\item|. +% \begin{macrocode} + \def\item{% +% \end{macrocode} +% Au premier appel, on ne fait qu'afficher le numéro d'item. +% \begin{macrocode} + \smc@enum +% \end{macrocode} +% Aux appels suivants, on commencera par passer au paragraphe +% suivant. Pour cela la macro |\item| se redéfinit elle-même. +% \begin{macrocode} + \def\item{\par\smc@enum}% + }% + \fi + \ignorespaces + } + {\par} +} +% \end{macrocode} +% |enumerate| dans les prérequis. +% \begin{macrocode} +\DeclareEnumerate{prerequis}{}{PrerequisItemColor} +% \end{macrocode} +% |enumerate| dans les méthodes. +% \begin{macrocode} +\DeclareEnumerate{exapp}{\bfseries}{ExAppItemColor} +% \end{macrocode} +% |enumerate| dans les environnements de type définition. +% \begin{macrocode} +\DeclareEnumerate{def}{\bfseries}{DefItemColor} +% \end{macrocode} +% |enumerate| dans l'auto-évaluation. +% \begin{macrocode} +\DeclareEnumerate{AE}{\bfseries}{AEItemColor} +% \end{macrocode} +% |enumerate| dans les activités. +% \begin{macrocode} +\DeclareEnumerate{activite}{\bfseries}{ActiviteItemColor} +% \end{macrocode} +% |enumerate| dans les remarques. +% \begin{macrocode} +\DeclareEnumerate{rem}{}{RemItemColor} +% \end{macrocode} +% |enumerate| dans les exemples. +% \begin{macrocode} +\DeclareEnumerate{exemple}{}{ExempleItemColor} +% \end{macrocode} +% |enumerate| dans les preuves. +% \begin{macrocode} +\DeclareEnumerate{proof}{}{ProofItemColor} +% \end{macrocode} +% |enumerate| dans les parties Exercices de base et Exercices +% d'approfondissement. +% \begin{macrocode} +\DeclareEnumerate{exercice}{\bfseries}{ExerciceItemColor} +% \end{macrocode} +% |enumerate| dans le cadre |acquis|. +% \begin{macrocode} +\DeclareEnumerate{acquis}{\bfseries}{AcquisItemColor} +% \end{macrocode} +% |enumerate| dans les commentaires. +% \begin{macrocode} +\DeclareEnumerate{commentaire}{}{CommentaireItemColor} +% \end{macrocode} +% |enumerate| dans les récréation, énigmes. +% \begin{macrocode} +\DeclareEnumerate{recreation}{\bfseries}{RecreationItemColor} +% \end{macrocode} +% |enumerate| dans les annexes. +% \begin{macrocode} +\DeclareEnumerate{annexe}{}{AnnexeItemColor} +% \end{macrocode} +% |enumerate| dans le lexique. +% \begin{macrocode} +\DeclareEnumerate{lexique}{}{LexiqueItemColor} +% \end{macrocode} +% |enumerate| dans le texte libre. +% \begin{macrocode} +\DeclareEnumerate{libre}{}{LibreItemColor} +% \end{macrocode} +% \end{environment} +% \begin{environment}{colitemize} +% En plus des environnements de liste classiques, on a deux autres +% types de liste où on précise le nombre de colonnes sur lesquelles +% sont composées chaque item. En revanche, on garde la même syntaxe +% que les environnements standards, à savoir :\\ +% |\begin{colitemize}{}|\\ +% |\item ...|\\ +% |\item ...|\\ +% |\item ...|\\ +% |\end{colitemize}| +% +% On commence en indiquant l'interdiction d'utiliser ce type +% d'environnement. +% \begin{macrocode} +\newenvironment{smc@nocolitemize}{% + \ClassError{sesamanuel}{Il est interdit d'utiliser colitemize ici} + {Consultez la documentation pour plus de renseignements.}% + \let\item\relax +}{} +% \end{macrocode} +% Les autres environnements seront déclarés de façon générique en +% indiquant uniquement la couleur des étiquettes et leur code. +% \begin{macrocode} +\newcount\smc@nbitem +\newcount\smc@nbline +\newcommand*\DeclareColItemize[3]{% +% \end{macrocode} +% Tous les environnements |colitemize| doivent spécifier le nombre de +% colonnes en premier argument. +% \begin{macrocode} + \newenvironment{#1}[1]{% + \par +% \end{macrocode} +% On doit sauvegarder le nombre de colonnes car cette information ne +% servira que dans la partie terminale de l'environnement. +% \begin{macrocode} + \def\smc@nbcolumn{##1}% +% \end{macrocode} +% On initialise le nombre d'items +% \begin{macrocode} + \smc@nbitem \z@ +% \end{macrocode} +% Chaîne pour le test de fin d'environnement. +% \begin{macrocode} + \edef\StringColCurrent{\StringColitemize}% +% \end{macrocode} +% et on lance la macro qui va lire la totalité du contenu de +% l'environnement et la stoker dans le registre de lexèmes +% |\toks@| en ayant vidé ce registre au préalable. +% \begin{macrocode} + \toks@{}% + \smc@getbody + }% + {% +% \end{macrocode} +% En partie terminale de l'environnement, on relance la lecture du +% corps de l'environnement par la macro |\smc@splititem| qui +% sauvegarde chaque item dans une macro |\smc@item|. Pour +% permettre la détection facile de la fin, on ajoute un +% |\item\@nil\item| à la fin du corps. +% \begin{macrocode} + \expandafter\smc@splititem\the\toks@\item\@nil\item +% \end{macrocode} +% En sortie de la macro précédente, le nombre d'items est sauvegardé +% dans le registre |\smc@nbitem|. On calcule le nombre de lignes que +% cela va nécessiter avec la formule :\\ +% $\hbox{nb\_lignes}=\dfrac{\hbox{nb\_items}+\hbox{nb\_colonnes}-1} +% {\hbox{nb\_colonnes}}$\\ +% \begin{macrocode} + \smc@nbline \numexpr \smc@nbitem+\smc@nbcolumn-1 + \divide\smc@nbline \smc@nbcolumn +% \end{macrocode} +% On rentre dans la double boucle d'affichage. La boucle externe gère +% les lignes. +% \begin{macrocode} + \multido{\n=1+1}{\smc@nbline}{% +% \end{macrocode} +% La boucle interne va afficher tous les items de la ligne en +% cours. Comme les items sont organisés en colonnes, on va afficher +% les items ayant comme numéro le numéro de ligne pour l'item le plus +% à gauche et en ajoutant le nombre de lignes à ce numéro à chaque +% fois qu'on passe au numéro suivant. +% +% Par exemple, si on compose 10 items sur 3 colonnes, les calculs +% suivants indiquent qu'il y aura 4 lignes. Les numéros d'items de la +% première lignes seront donc 1 puis $1+4=5$ puis $5+4=9$. La deuxième +% ligne accueillera les numéros d'items 2 puis $2+4=6$ puis +% $6+4=10$. La troisième ligne accueillera les numéros d'items 3 puis +% $3+4=7$ et comme le numéro $7+4=11$ n'existe pas, la dernière +% colonne de la troisième ligne sera vide. Ce sera la même chose pour +% la quatrième ligne. +% \begin{macrocode} + \multido{\ni=\n+\the\smc@nbline}{\smc@nbcolumn}{% +% \end{macrocode} +% On n'affiche l'item que si le numéro existe. +% \begin{macrocode} + \unless\ifnum\ni>\smc@nbitem +% \end{macrocode} +% La puce est composée dans une boîte de largeur fixée en se servant +% des paramètres transmis à la macro |\DeclareColItemize|. +% \begin{macrocode} + \makebox[\ListLabelWidth]{\textcolor{#2}{#3}\hss}% +% \end{macrocode} +% Le corps de l'item est alors composé dans une minipage alignée en +% haut et de largeur tel qu'elle permet d'avoir le nombre de colonnes +% et le nombre d'espaces intercolonnes nécessaires. +% \begin{macrocode} + \begin{minipage}[t]{\dimexpr + (\linewidth-\ListHSep*(\smc@nbcolumn-1))% + /\smc@nbcolumn-\ListLabelWidth} +% \end{macrocode} +% Le contenu lui même est précédé et suivi d'un |\strut| pour assurer +% un bon interlignage. +% \begin{macrocode} + \strut\@nameuse{smc@item\ni}\strut + \end{minipage}% +% \end{macrocode} +% À la fin de la minipage, on place l'espace intercolonne. +% \begin{macrocode} + \hspace{\ListHSep}% + \fi + }% +% \end{macrocode} +% À la fin de chaque ligne, on insère un saut de ligne. Pour ne pas +% avoir de saut trop important, la dernière ligne utilisera +% |\endgraf|. +% \begin{macrocode} + \ifnum\n=\smc@nbline + \endgraf + \else + \\ + \fi + }% + }% +} +% \end{macrocode} +% La macro |\smc@getbody| permet de récupérer l'intégralité du corps +% d'un environnement dans le registre de lexèmes |\toks@|. Cette macro +% est une version simple de ce type de lecture qui ne permet pas +% l'emboîtement d'environnements. +% +% Le principe est de tout lire jusqu'au premier |\end|, de le +% sauvegarder et de tester le |\end| en mettant un |\smc@testend| dans +% le flot de lecture. +% \begin{macrocode} +\long\def\smc@getbody#1\end{% + \toks@\expandafter{\the\toks@#1}\smc@testend +} +% \end{macrocode} +% La macro |\smc@testend| permet de savoir si on est effectivement à +% la fin de l'environnement de départ et de réagir en conséquence. +% \begin{macrocode} +\long\def\smc@testend#1{% +% \end{macrocode} +% On sauvegarde ce qui suit le |\end| pour regarder si c'est égal à la +% chaîne correspondant à l'environnement de départ. +% \begin{macrocode} + \def\smc@arg{#1}% + \ifx\smc@arg\StringColCurrent +% \end{macrocode} +% Si c'est le cas, il suffit de remettre le tout dans le flot de +% lecture courant. +% \begin{macrocode} + \end{#1}% + \else +% \end{macrocode} +% Si ce n'est pas le cas, le |\end{environnement}| doit être mis de +% côté dans la suite du registre de lecture du corps d'environnement +% et il faut reprendre la lecture en faisant un appel récursif à +% |\smc@getbody|. +% \begin{macrocode} + \toks@\expandafter{\the\toks@\end{#1}}% + \expandafter\smc@getbody + \fi +} +% \end{macrocode} +% La macro |\smc@splititem| permet de répartir le contenu de chaque +% item dans des macros ayant un nom comportant un numéro. En +% l'occurrence |\smc@item|. +% \begin{macrocode} +\long\def\smc@splititem#1\item{% +% \end{macrocode} +% En réalité, le premier appel ne sert qu'à passer la première balise +% |\item| qui n'est normalement précédée d'aucun texte. On passe +% directement à la macro de lecture effective. +% \begin{macrocode} + \smc@@splititem +} +% \end{macrocode} +% La macro |\smc@@splititem| est la macro de lecture recursive qui +% permet de mémoriser les contenus de tous les items. +% \begin{macrocode} +\long\def\smc@@splititem#1\item{% +% \end{macrocode} +% On place le contenu dans une macro pour tester si c'est égal à +% |\@nil|. +% \begin{macrocode} + \def\smc@arg{#1}% + \ifx\smc@arg\@nnil +% \end{macrocode} +% Si le |\@nil| a été lu, il n'y a plus rien à faire. +% \begin{macrocode} + \else +% \end{macrocode} +% Sinon on incrémente le compteur d'items, on sauvegarde le contenu de +% l'item et on fait un appel récursif sur le prochain item. +% \begin{macrocode} + \advance\smc@nbitem\@ne + \@namedef{smc@item\the\smc@nbitem}{#1}% + \expandafter\smc@@splititem + \fi +} +% \end{macrocode} +% On peut maintenant déclarer les environnements colitemize des +% différentes parties. On commence par les listes dans les prérequis. +% \begin{macrocode} +\DeclareColItemize{smc@prerequiscolitemize} + {PrerequisItemColor}{$\blacktriangleright$} +% \end{macrocode} +% Ensuite le colitemize pour l'auto-évaluation. +% \begin{macrocode} +\DeclareColItemize{smc@AEcolitemize} + {AEItemColor}{$\bullet$} +% \end{macrocode} +% Ensuite le colitemize pour les méthodes. +% \begin{macrocode} +\DeclareColItemize{smc@exappcolitemize} + {ExAppItemColor}{$\bullet$} +% \end{macrocode} +% Ensuite le colitemize pour les environnements de type définition. +% \begin{macrocode} +\DeclareColItemize{smc@defcolitemize} + {DefItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +% \end{macrocode} +% Ensuite le colitemize pour les activités. +% \begin{macrocode} +\DeclareColItemize{smc@activitecolitemize} + {ActiviteItemColor}{$\bullet$} +% \end{macrocode} +% Ensuite le colitemize pour les remarques. +% \begin{macrocode} +\DeclareColItemize{smc@remcolitemize} + {RemItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +% \end{macrocode} +% Ensuite le colitemize pour les exemples. +% \begin{macrocode} +\DeclareColItemize{smc@exemplecolitemize} + {ExempleItemColor}{$\bullet$} +% \end{macrocode} +% Ensuite le colitemize pour les preuves. +% \begin{macrocode} +\DeclareColItemize{smc@proofcolitemize} + {ProofItemColor}{$\bullet$} +% \end{macrocode} +% Ensuite le colitemize pour les parties Exercices de base et +% Exercices d'approfondissement. +% \begin{macrocode} +\DeclareColItemize{smc@exercicecolitemize} + {ExerciceItemColor}{$\bullet$} +% \end{macrocode} +% Ensuite le colitemize pour les acquis +% \begin{macrocode} +\DeclareColItemize{smc@acquiscolitemize} + {AcquisItemColor}{$\bullet$} +% \end{macrocode} +% Ensuite le colitemize pour les commentaires. +% \begin{macrocode} +\DeclareColItemize{smc@commentairecolitemize} + {CommentaireItemColor}{$\bullet$} +% \end{macrocode} +% Ensuite le colitemize pour les récréation, énigmes. +% \begin{macrocode} +\DeclareColItemize{smc@recreationcolitemize} + {RecreationItemColor}{$\bullet$} +% \end{macrocode} +% Ensuite le colitemize pour les annexes. +% \begin{macrocode} +\DeclareColItemize{smc@annexecolitemize} + {AnnexeItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +% \end{macrocode} +% Ensuite le colitemize pour le lexique. +% \begin{macrocode} +\DeclareColItemize{smc@lexiquecolitemize} + {LexiqueItemColor}{$\bullet$} +% \end{macrocode} +% Ensuite le colitemize pour le texte libre. +% \begin{macrocode} +\DeclareColItemize{smc@librecolitemize} + {LibreItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +% \end{macrocode} +% \end{environment} +% \begin{environment}{colenumerate} +% Les environnements |colenumerate| permettent les listes numérotées +% sur plusieurs colonnes. Le code va être similaire à celui de +% |colitemize|. Pour la déclaration, il y aura besoin du nom de +% l'environnement d'une commande de fonte éventuelle et de la +% couleur. +% \begin{macrocode} +\newcommand*\DeclareColEnumerate[3]{% +% \end{macrocode} +% Tous les environnements |colenumerate| doivent spécifier le nombre de +% colonnes en premier argument. +% \begin{macrocode} + \newenvironment{#1}[1]{% + \par\leavevmode +% \end{macrocode} +% On commence par initialiser le comportement global de la liste en +% fonction de sa profondeur. Le compteur est indépendant des autres +% listes. Il s'agira de |\ni| qui sera en fait la variable de boucle +% interne des |\multido|. +% \begin{macrocode} + \advance\@enumdepth \@ne + \ifnum\@enumdepth>\thr@@ + \ClassError{sesamanuel}{Pas plus de 3 niveaux de liste} + {Consultez la documentation pour plus de renseignements.} + \else +% \end{macrocode} +% On définit la forme du compteur qui sera utilisé pour la +% liste. Cette forme dépend des paramètres transmis ainsi que de la +% profondeur de la liste. +% \begin{macrocode} + \ifcase\@enumdepth + \or %( + \def\@enumlabel{\textcolor{#3}{#2\ni)}}%( + \or + \def\@enumlabel{\textcolor{#3}{#2{\@alph\ni})}}%( + \or + \def\@enumlabel{\textcolor{#3}{#2{\@roman\ni)}}}% + \fi + \fi +% \end{macrocode} +% La suite est maintenant assez proche de ce qui se passait pour la +% macro |\DeclareColItemize|. +% \begin{macrocode} + \def\smc@nbcolumn{##1}% + \smc@nbitem \z@ +% \end{macrocode} +% Le test de fin se fait avec la chaîne \og colenumerate \fg{}. +% \begin{macrocode} + \edef\StringColCurrent{\StringColenumerate}% + \toks@{}% + \smc@getbody + } + {% + \expandafter\smc@splititem\the\toks@\item\@nil\item + \smc@nbline \numexpr \smc@nbitem+\smc@nbcolumn-1 + \divide\smc@nbline \smc@nbcolumn + \multido{\n=1+1}{\smc@nbline}{% + \multido{\ni=\n+\the\smc@nbline}{\smc@nbcolumn}{% + \unless\ifnum\ni>\smc@nbitem +% \end{macrocode} +% À ce niveau, le code diffère de ce qui se passait pour +% |\DeclareColItemize| puisque l'étiquette consiste en un nombre +% défini précédemment dans la macro |@enumlabel|. +% \begin{macrocode} + \makebox[\ListLabelWidth]{\@enumlabel\hss}% + \begin{minipage}[t]{\dimexpr + (\linewidth-\ListHSep*(\smc@nbcolumn-1))% + /\smc@nbcolumn-\ListLabelWidth} + \strut\@nameuse{smc@item\ni}\strut + \end{minipage}% + \hspace{\ListHSep}% + \fi + }% + \ifnum\n=\smc@nbline + \endgraf + \else + \\ + \fi + }% + }% +} +% \end{macrocode} +% On peut maintenant déclarer les environnements colenumerate des +% différentes parties. On commence par les listes dans les prérequis. +% \begin{macrocode} +\DeclareColEnumerate{smc@prerequiscolenumerate} + {}{PrerequisItemColor} +% \end{macrocode} +% |colenumerate| dans les méthodes. +% \begin{macrocode} +\DeclareColEnumerate{smc@exappcolenumerate} + {\bfseries}{ExAppItemColor} +% \end{macrocode} +% |colenumerate| dans les environnements de type définition. +% \begin{macrocode} +\DeclareColEnumerate{smc@defcolenumerate} + {\bfseries}{DefItemColor} +% \end{macrocode} +% |colenumerate| dans l'auto-évaluation. +% \begin{macrocode} +\DeclareColEnumerate{smc@AEcolenumerate} + {\bfseries}{AEItemColor} +% \end{macrocode} +% |colenumerate| dans les activités. +% \begin{macrocode} +\DeclareColEnumerate{smc@activitecolenumerate} + {}{ActiviteItemColor} +% \end{macrocode} +% |colenumerate| dans les remarques. +% \begin{macrocode} +\DeclareColEnumerate{smc@remcolenumerate} + {}{RemItemColor} +% \end{macrocode} +% |colenumerate| dans les exemples. +% \begin{macrocode} +\DeclareColEnumerate{smc@exemplecolenumerate} + {}{ExempleItemColor} +% \end{macrocode} +% |colenumerate| dans les preuves. +% \begin{macrocode} +\DeclareColEnumerate{smc@proofcolenumerate} + {}{ProofItemColor} +% \end{macrocode} +% |colenumerate| dans les parties Exercices de base et Exercices +% d'approfondissement. +% \begin{macrocode} +\DeclareColEnumerate{smc@exercicecolenumerate} + {\bfseries}{ExerciceItemColor} +% \end{macrocode} +% |colenumerate| dans la partie acquis. +% \begin{macrocode} +\DeclareColEnumerate{smc@acquiscolenumerate} + {\bfseries}{AcquisItemColor} +% \end{macrocode} +% |colenumerate| dans les commentaires. +% \begin{macrocode} +\DeclareColEnumerate{smc@commentairecolenumerate} + {\bfseries}{CommentaireItemColor} +% \end{macrocode} +% |colenumerate| dans les récréation, énigmes. +% \begin{macrocode} +\DeclareColEnumerate{smc@recreationcolenumerate} + {\bfseries}{RecreationItemColor} +% \end{macrocode} +% |colenumerate| dans les annexes. +% \begin{macrocode} +\DeclareColEnumerate{smc@annexecolenumerate} + {\bfseries}{AnnexeItemColor} +% \end{macrocode} +% |colenumerate| dans le lexique. +% \begin{macrocode} +\DeclareColEnumerate{smc@lexiquecolenumerate} + {\bfseries}{RecreationItemColor} +% \end{macrocode} +% |colenumerate| dans le texte libre. +% \begin{macrocode} +\DeclareColEnumerate{smc@librecolenumerate} + {\bfseries}{LibreItemColor} +% \end{macrocode} +% \end{environment} +% \begin{environment}{changemargin} +% Environnement général de changement de marge. +% \begin{macrocode} +\newenvironment{changemargin}[2]{% + \begin{list}{}{% + \setlength{\topsep}{0pt}% + \setlength{\leftmargin}{0pt}% + \setlength{\rightmargin}{0pt}% + \setlength{\listparindent}{0pt}% + \setlength{\itemindent}{0pt}% + \setlength{\parsep}{\parskip}% + \addtolength{\leftmargin}{#1}% + \addtolength{\rightmargin}{#2}% + }% + \item\relax +} +{\strut \end{list}} +% \end{macrocode} +% \end{environment} +% \section{Cadres et mises en page ponctuelles} +% \begin{environment}{cadre} +% Cadre avec un coin inférieur gauche biseauté. On a deux arguments +% optionnels pour indiquer les couleurs de cadre et de fond. Pour +% cette raison, il faudra définir l'environnement sous forme de +% macro. +% \begin{macrocode} +\newcommand*{\cadre}[1][]{% +% \end{macrocode} +% Le premier paramètre optionnel indique la couleur de ligne. Si il +% est vide, c'est la couleur par défaut qui est utilisée. +% \begin{macrocode} + \ifx\relax#1\relax + \colorlet{CurrCadreLineColor}{CadreLineColor}% + \else +% \end{macrocode} +% Sinon, c'est que la couleur de ligne est explicitement indiquée. +% \begin{macrocode} + \colorlet{CurrCadreLineColor}{#1}% + \fi +% \end{macrocode} +% On appelle alors la macro auxiliaire permettant de lire le +% deuxième argument optionnel et de commencer le travail véritable. +% \begin{macrocode} + \@cadre +} +\newcommand\@cadre[1][]{% +% \end{macrocode} +% On refait le travail précédent pour la couleur de fond. +% \begin{macrocode} + \ifx\relax#1\relax + \colorlet{CurrCadreBkgColor}{CadreBkgColor}% + \else + \colorlet{CurrCadreBkgColor}{#1}% + \fi +% \end{macrocode} +% On va stocker le corps de l'environnement dans une boîte contenant +% une minipage de l'empagement moins deux fois |\CadreSep| moins deux +% fois |\CadreLineWidth|. +% \begin{macrocode} + \def\smc@cadre@color{#1}% + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr \linewidth-\CadreSep*2-\CadreLineWidth*2}% +} +% \end{macrocode} +% Partie terminale de l'environnement +% \begin{macrocode} +\def\endcadre +{% + \endminipage + \end{lrbox}% +% \end{macrocode} +% La boîte est construite, il reste à construire le cadre biseauté à +% la bonne taille et à placer la boîte dans le cadre. +% \begin{macrocode} + \par\addvspace{\BeforeCadreVSpace} +% \end{macrocode} +% On peut maintenant construire le cadre +% \begin{macrocode} + \begin{pspicture}(0,\dimexpr\ht\smc@boxa+\CadreSep+\CadreLineWidth) + (\linewidth,-\dimexpr\dp\smc@boxa+\CadreSep+\CadreLineWidth) +% \end{macrocode} +% Pose des nœuds utiles. Tout est calculé automatiquement à partir des +% deux coins opposés. +% \begin{macrocode} + \pnode(0,\dimexpr\ht\smc@boxa+\CadreSep+\CadreLineWidth){A} + \pnode(\linewidth,-\dimexpr\dp\smc@boxa+\CadreSep+\CadreLineWidth){C} + \pnode(A|C){B} + \pnode(C|A){D} + \pnode([nodesep=-\SquareWidth]C){C1} + \pnode([offset=\SquareWidth]C){C2} +% \end{macrocode} +% Affichage du cadre. +% \begin{macrocode} + \pspolygon[linecolor=CurrCadreLineColor, + linewidth=\CadreLineWidth, fillstyle=solid, + fillcolor=CurrCadreBkgColor] + (A)(B)(C1)(C2)(D) +% \end{macrocode} +% Affichage du contenu. +% \begin{macrocode} + \rput[Bl](\dimexpr\CadreSep+\CadreLineWidth,0) + {\usebox{\smc@boxa}} + \end{pspicture} + \par\addvspace{\AfterCadreVSpace} +} +% \end{macrocode} +% \end{environment} +% \begin{environment}{smc@cadre} +% Environnement général de construction d'un cadre avec fond coloré, +% bord éventuel et coins arrondis à la demande. Pour cela, +% l'environnement demande un argument optionnel, un +% argument obligatoire et un troisième argument optionnel. Ils +% indiquent, dans l'ordre : +% \begin{itemize} +% \item les coins devant être arrondis (en partant du coin inférieur +% gauche et en tournant dans le sens inverse des aiguilles d'une +% montre avec une suite de valeurs entières séparées par des virgules +% qui donnent un multiple de dixième de la valeur |\FrameArc| donc 0 +% indique un coin carré et 10 un coint arrondi avec ce rayon) ; +% \item la couleur de fond ; +% \item la couleur de bordure. +% \end{itemize} +% S'il n'y a pas de couleur de bordure, il n'y a pas de bordure du +% tout. Le cadre utilise les longueurs |\FrameSep| indiquant la +% distance entre le texte et les bords du cadre, |\FrameLineWidth| +% indiquant l'épaisseur du bord éventuel, |\FrameArc| indiquant le +% rayon de l'arc. +% +% En raison de l'examen de paramètres dans un ordre non conventionnel +% (pour \LaTeX{}), on définit l'environnement |smc@cadre| comme étant +% le couple |\smc@cadre| |\endsmc@cadre|. La valeur par défaut du +% premier argument optionnel est |0,0,0,0| ce qui donne quatre coins +% carrés. +% \begin{macrocode} +\newcommand*\smc@cadre[2][0,0,0,0]{% +% \end{macrocode} +% Il faut sauvegarder les arguments car on ne s'en servira que dans la +% partie terminale de l'environnement, en l'occurrence dans la macro +% |\endcadre|. +% \begin{macrocode} + \def\smc@framecorner{#1}% + \def\smc@framebkgcolor{#2}% + \smc@@cadre +} +% \end{macrocode} +% La macro auxiliaire a une valeur par défaut vide pour le second +% paramètre optionnel de l'environnement, c'est-à-dire qu'il n'y aura +% pas de bord. +% \begin{macrocode} +\newcommand*\smc@@cadre[1][]{% +% \end{macrocode} +% On sauvegarde également l'argument optionnel pour la même raison que +% ci-dessus. +% \begin{macrocode} + \def\smc@framelinecolor{#1}% +% \end{macrocode} +% Le contenu de l'environnement sera composé dans une minipage de +% largeur égale à l'empagement moins deux fois l'espace |\FrameSep| +% et, si besoin, deux fois l'épaisseur |\FrameLineWidth|. On calcule +% également le décalage horizontal de la boîte dans le cadre final. +% \begin{macrocode} + \ifx\smc@framelinecolor\empty + \edef\smc@framehoffset{\the\dimexpr\FrameSep*2}% + \edef\smc@framewidth + {\the\dimexpr\linewidth-\smc@framehoffset}% + \else + \edef\smc@framehoffset{\the\dimexpr\FrameSep*2+\FrameLineWidth*2}% + \edef\smc@framewidth + {\the\dimexpr\linewidth-\smc@framehoffset}% + \fi +% \end{macrocode} +% Le code initiale se termine en mettant en boîte l'ensemble du corps +% de l'environnement pour l'afficher ensuite avec son cadre +% coloré. +% \begin{macrocode} + \setbox0=\hbox\bgroup + \minipage{\smc@framewidth}% + \ignorespaces +} +% \end{macrocode} +% La macro |\endsmc@cadre| correspond au code terminal de +% l'environnement. C'est elle qui fera tout le travail de composition +% après avoir refermé la minipage et sa boîte englobante. +% \begin{macrocode} +\def\endsmc@cadre{% + \endminipage + \egroup +% \end{macrocode} +% Le principe va être d'afficher d'abord le cadre et de placer le +% texte au dessus. Comme les coins peuvent être ou non arrondis +% individuellement, on va utiliser |\pscustom| pour construire le +% pourtour. Le cadre à une largeur égal à |\linewidth| est une hauteur +% égale à celle du texte plus deux fois |\FrameSep| et, éventuellement +% plus deux fois |\FrameLineWidth|. On commence donc par calculer la +% profondeur et la hauteur du cadre et on initialise les paramètres +% PSTsicks pour le tracé du cadre. Pour faciliter le code ultérieur, +% s'il n'y a pas de bord, on force la longueur |\FrameLineWith| à être +% nulle. +% \begin{macrocode} + \ifx\smc@framelinecolor\empty + \edef\smc@ymin{\the\dimexpr-\dp0-\FrameSep}% + \edef\smc@ymax{\the\dimexpr\ht0+\FrameSep}% + \psset{linewidth=0pt, linestyle=none, + fillstyle=solid, fillcolor=\smc@framebkgcolor} + \else + \edef\smc@ymin{\the\dimexpr -\dp0-\FrameSep-\FrameLineWidth}% + \edef\smc@ymax{\the\dimexpr\ht0+\FrameSep+\FrameLineWidth}% + \psset{linewidth=\FrameLineWidth, linecolor=\smc@framelinecolor, + fillstyle=solid, fillcolor=\smc@framebkgcolor} + \def\FrameLineWidth{0pt}% + \fi +% \end{macrocode} +% Avant de commencer le cadre proprement dit, il faut analyser la +% chaîne d'indication des arrondis de coin. On va en fait mémoriser +% les quatre nombres dans les quatre macros |\smc@corner@dl|, +% |\smc@corner@dr|, |\smc@corner@ur| et |\smc@corner@ul|, dans l'ordre +% où les valeurs sont lues. +% \begin{macrocode} + \smc@parse@corner{\smc@framecorner}% +% \end{macrocode} +% Tout est en place pour procéder à la composition proprement dite +% \begin{macrocode} + \begin{pspicture}(0,\smc@ymin)(\linewidth,\smc@ymax) +% \end{macrocode} +% Il n'y a pas besoin de spécifier les paramètres au niveau de la +% commande |\pscustom| puisque ceux-ci ont été déclarés auparavant. +% \begin{macrocode} + \pscustom{% +% \end{macrocode} +% Arc du coin inférieur gauche et ligne du coin inférieur gauche au +% coin inférieur droit. +% \begin{macrocode} + \psarc(\dimexpr \FrameArc/10*\smc@corner@dl, + \dimexpr \smc@ymin+\FrameArc/10*\smc@corner@dl) + {\dimexpr \FrameArc/10*\smc@corner@dl}{180}{270} + \psline(\dimexpr \FrameArc/10*\smc@corner@dl, + \smc@ymin) + (\dimexpr \linewidth-\FrameArc/10*\smc@corner@dr, + \smc@ymin) +% \end{macrocode} +% Arc du coin inférieur droit et ligne du coin inférieur droit au coin +% supérieur droit. +% \begin{macrocode} + \psarc(\dimexpr \linewidth-\FrameArc/10*\smc@corner@dr, + \dimexpr \smc@ymin+\FrameArc/10*\smc@corner@dr) + {\dimexpr \FrameArc/10*\smc@corner@dr}{270}{360} + \psline(\linewidth, + \dimexpr \smc@ymin+\FrameArc/10*\smc@corner@dr) + (\linewidth, + \dimexpr \smc@ymax-\FrameArc/10*\smc@corner@ur) +% \end{macrocode} +% Arc du coin supérieur droit et ligne du coin supérieur droit au +% coin supérieur gauche. +% \begin{macrocode} + \psarc(\dimexpr \linewidth-\FrameArc/10*\smc@corner@ur, + \dimexpr \smc@ymax-\FrameArc/10*\smc@corner@ur) + {\dimexpr \FrameArc/10*\smc@corner@ur}{0}{90} + \psline(\dimexpr \linewidth-\FrameArc/10*\smc@corner@ur, + \smc@ymax) + (\dimexpr \FrameArc/10*\smc@corner@ul, + \smc@ymax) +% \end{macrocode} +% Arc du coin supérieur gauche et ligne du coin supérieur gauche au +% coin inférieur gauche. +% \begin{macrocode} + \psarc(\dimexpr \FrameArc/10*\smc@corner@ul, + \dimexpr \smc@ymax-\FrameArc/10*\smc@corner@ul) + {\dimexpr \FrameArc/10*\smc@corner@dr}{90}{180} + \psline(0, + \dimexpr \smc@ymax-\FrameArc/10*\smc@corner@ul) + (0, + \dimexpr \smc@ymin+\FrameArc/10*\smc@corner@dl) + } +% \end{macrocode} +% Le cadre est terminé, il reste à placer le contenu de +% l'environnement. +% \begin{macrocode} + \rput[Bl](\dimexpr \FrameSep+\FrameLineWidth,0){\box0} + \end{pspicture}% +} +% \end{macrocode} +% On définit maintenant la commande qui analyse les valeurs des coins +% (afin de déterminer l'arrondi). +% \begin{macrocode} +\newcommand*\smc@parse@corner[1]{% +% \end{macrocode} +% On acceptera qu'il y ait moins de quatre argument et qu'un argument +% vide équivaut à zéro. Pour cela, on ajoute quatre valeurs vides à +% la suite de l'argument transmis. +% \begin{macrocode} + \expandafter\smc@@parse@corner#1,,,,\@nil +} +\def\smc@@parse@corner#1,#2,#3,#4,#5\@nil{% +% \end{macrocode} +% L'ordre des arguments est toujours inférieur-gauche, +% inférieur-droite, supérieur-droit, supérieur-gauche. +% \begin{macrocode} + \def\smc@corner@dl{#1}% + \ifx\smc@corner@dl\empty + \def\smc@corner@dl{0}% + \fi + \def\smc@corner@dr{#2}% + \ifx\smc@corner@dr\empty + \def\smc@corner@dr{0}% + \fi + \def\smc@corner@ur{#3}% + \ifx\smc@corner@ur\empty + \def\smc@corner@ur{0}% + \fi + \def\smc@corner@ul{#4}% + \ifx\smc@corner@ul\empty + \def\smc@corner@ul{0}% + \fi +% \end{macrocode} +% Le cinquième argument sert à faire le ménage au niveau des virgules +% inutilisées. +% \begin{macrocode} +} +% \end{macrocode} +% \end{environment} +% \begin{environment}{tableau} +% Rien n'empèche d'utiliser les environnements de tableau de \LaTeX{} +% mais l'environnement |tableau| permet d'automatiser la +% présentation. En particulier, les cellules colorés seront toujours +% de la même couleur, les filets utiliseront un gris particulier et +% les colonnes de type X sont verticalement centrées. +% +% Le principe va être d'avoir un paramètre optionnel +% indiquant le type du tableau et un ou plusieurs paramètres +% obligatoires en fonction du type de tableau choisi. On aura : +% \begin{itemize} +% \item |t| Toutes les colonnes de même largeur, argument 1 $\to$ +% largeur, argument 2 $\to$ nombre de colonnes. +% \item |c| Toutes les colonnes de même largeur, colonne de gauche en +% jaune, argument 1 $\to$ largeur, argument 2 $\to$ nombre de +% colonnes (c'est le type par défaut). +% \item |l| Toutes les colonnes de même largeur, ligne du haut en +% jaune, argument 1 $\to$ largeur, argument 2 $\to$ nombre de +% colonnes. +% \item |cl| Toutes les colonnes de même largeur, ligne du haut et +% colonne de gauche en jaune, argument 1 $\to$ largeur, argument 2 +% $\to$ nombre de colonnes. +% \item |lc| synonyme de |cl|. +% \item |T|, |C| |L|, |CL| |LC| comme précédemment sauf que la +% première colonne aura un motif libre qu'il faudra renseigner avec le +% dernier argument. +% \item |pr| Le tableau prendra la largeur d'empagement, il aura trois +% colonnes avec une colonne centrale environ deux fois plus large que +% les colonnes externes et colorée. La troisième colonne sera centrée. +% \end{itemize} +% +% En revanche, la syntaxe des tableaux sera celle habituelle à +% l'intérieur de l'environnement (utilisation des |&| et des commandes +% |\\|, |\hline|, |\cline|, |\multicolumn|, etc. La classe charge les +% extensions suivantes pour gérer tous ces cas : +% \begin{itemize} +% \item tabularx ; +% \item multirow ; +% \item xcolor avec la l'option table. +% \end{itemize} +% |\tableau| est bien un environnement mais on va le déclarer en tant +% que commande car son code final dépend de l'option choisie et c'est +% donc plus simple de le coder de cette façon. +% \begin{macrocode} +\newcommand{\tableau}[1][c]{% +% \end{macrocode} +% Quel que soit le type de tableau, on indique la couleur des filets +% et les colonnes X sont centrées verticalement et horizontalement. +% \begin{macrocode} + \arrayrulecolor{FiletTableauColor}% + \renewcommand\tabularxcolumn[1]{>{\centering\arraybackslash}m{##1}}% +% \end{macrocode} +% On construit maintenant le code initial et final en fonction de +% l'argument optionnel. Pour cela, on teste si la macro +% |\tableau| existe. Si oui, c'est elle qui sera utilisée, +% sinon, on émet un message d'erreur et on utilise le type c à la place. +% \begin{macrocode} + \ifcsname#1tableau\endcsname + \expandafter\let\expandafter\smc@next\csname#1tableau\endcsname + \expandafter\let\expandafter\endtableau\csname end#1tableau\endcsname + \else + \ClassError{sesamanuel} + {Le type de tableau #1 n'existe pas} + {Les types possibles sont 't', 'c', 'l', 'cl', 'T', 'C', + 'L', 'CL' et 'pr'.}% + \let\smc@next\ctableau + \let\endtableau\endctableau + \fi +% \end{macrocode} +% Il ne reste plus qu'à lancer l'environnement précédemment assigné +% avec un espacement vertical précédent. +% \begin{macrocode} + \par\addvspace{\BeforeTableVSpace} + \smc@next +} +% \end{macrocode} +% On définit maintenant les véritables environnements de travail. +% +% L'environnement |ttableau| demande comme arguments la largeur du +% tableau et le nombre de colonnes. +% \begin{macrocode} +\newenvironment{ttableau}[2] +{\tabularx{#1}{|*{#2}{X|}}} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +% \end{macrocode} +% L'environnement |Ttableau| demande comme arguments la largeur du +% tableau, le nombre de colonnes et le motif de la première colonne. +% \begin{macrocode} +\newenvironment{Ttableau}[3] +{\tabularx{#1}{|#3|*{\numexpr#2-1}{X|}}} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +% \end{macrocode} +% L'environnement |ctableau| demande comme arguments la largeur du +% tableau et le nombre de colonnes. Pour la colonne en couleur, on +% utilise le premier argument optionnel de |\columncolor| pour +% permettre un affichage complet du filet gauche. +% \begin{macrocode} +\newenvironment{ctableau}[2] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}X| + *{\numexpr#2-1}{X|}}% +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +% \end{macrocode} +% L'environnement |Ctableau| demande comme arguments la largeur du +% tableau, le nombre de colonnes et le motif de la première colonne. +% \begin{macrocode} +\newenvironment{Ctableau}[3] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}#3| + *{\numexpr#2-1}{X|}}% +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +% \end{macrocode} +% L'environnement |ltableau| demande comme arguments la largeur du +% tableau et le nombres de colonnes. +% \begin{macrocode} +\newenvironment{ltableau}[2] +{% + \tabularx{#1}{|*{#2}{X|}} + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +% \end{macrocode} +% L'environnement |Ltableau| demande comme arguments la largeur du +% tableau, le nombres de colonnes et le motif de la première colonne. +% \begin{macrocode} +\newenvironment{Ltableau}[3] +{% + \tabularx{#1}{|#3|*{\numexpr#2-1}{X|}} + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +% \end{macrocode} +% L'environnement |cltableau| demande comme arguments la largeur du +% tableau et le nombre de colonnes. Pour la colonne en couleur, on +% utilise le premier argument optionnel de |\columncolor| pour +% permettre un affichage complet du filet gauche. +% \begin{macrocode} +\newenvironment{cltableau}[2] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}X| + *{\numexpr#2-1}{X|}}% + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +% \end{macrocode} +% L'environnement |CLtableau| demande comme arguments la largeur du +% tableau, le nombre de colonnes et le motif de la première colonne. +% \begin{macrocode} +\newenvironment{CLtableau}[3] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}#3| + *{\numexpr#2-1}{X|}}% + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +% \end{macrocode} +% Les environnements |lctableau| et |LCtableau| ne sont que des alias +% de |cltableau| et |CLtableau|. +% \begin{macrocode} +\let\lctableau\cltableau +\let\endlctableau\endcltableau +\let\LCtableau\CLtableau +\let\endLCtableau\endCLtableau +% \end{macrocode} +% Le type |pr| permet de construire le tableau des propriétés dans la +% partie annexe. il ne demande que la largeur de tableau en +% paramètre. Il utilise la couleur |TablePropertyBkgColor| pour le +% fond de la deuxième colonne et les couleurs +% |TablePropertyTitleBkgColor| et |TablePropertyTitleTextColor| pour +% les couleurs de fond et de texte du titre \og propriété \fg{}. +% \begin{macrocode} +\newenvironment{prtableau}[1] +{% +% \end{macrocode} +% On redéfinit la macro |\propriete| à l'intérieur de l'environnement +% \begin{macrocode} + \def\propriete{% + \refstepcounter{propriete}% + \psframebox*[fillcolor=TablePropertyTitleBkgColor]{% + \ProprieteFont + \textcolor{TablePropertyTitleTextColor}{ \MakeUppercase{\StringPropriete}} + \NumProprieteFont + \textcolor{TablePropertyTitleTextColor}{\thepropriete} + } + }% +% \end{macrocode} +% On peut ensuite composer le tableau proprement dit. +% \begin{macrocode} + \longtable{% +% \end{macrocode} +% Après discussions et retouches diverses, on va partager partager +% |#1| avec les facteurs 0.24/0.46/0.30. Il faut également prévoir les +% 6 |\tabcolsep|. +% \begin{macrocode} + >{\leavevmode\endgraf\vspace{-0.3\baselineskip}} + m{0.24\dimexpr#1-6\tabcolsep} + <{\endgraf\vspace{-0.3\baselineskip}} + >{% + \leavevmode\endgraf\vspace{-0.3\baselineskip} + \columncolor{TablePropertyBkgColor} + } + m{0.46\dimexpr#1-6\tabcolsep} + <{\endgraf\vspace{-0.3\baselineskip}} + >{% + \centering\arraybackslash + \leavevmode\endgraf\vspace{-0.3\baselineskip} + } + m{0.30\dimexpr#1-6\tabcolsep} + <{\endgraf\vspace{-0.3\baselineskip}} + }% +} +{\endlongtable\par\addvspace{\AfterTableVSpace}} +% \end{macrocode} +% \end{environment} +% \begin{macro}{\tabX} +% La macro |\tabX| permet d'obtenir des cases avec une croix à +% l'intérieur qui joint les coins opposés. Cette macro admet un +% argument optionnel indiquant la hauteur et la profondeur de la +% cellule (par défaut hauteur et profondeur d'une ligne normale de +% tableau). +% \begin{macrocode} +\newcommand\tabX[1][\ht\@arstrutbox,\dp\@arstrutbox]{% +% \end{macrocode} +% On commence par analyser l'argument optionnel pour placer les deux +% valeurs séparées par une virgule dans les deux macros |\smc@htTabX| +% et |\smc@dpTabX|. +% \begin{macrocode} + \smc@GetVTabX#1,,\@nil +% \end{macrocode} +% On place un strut de la hauteur et profondeur indiquée pour forcer +% effectivement la ligne a avoir ces dimensions verticales. +% \begin{macrocode} + \vrule width0pt height\smc@htTabX depth-\smc@dpTabX +% \end{macrocode} +% On pose d'abord les nœuds gauches (supérieur puis inférieur). +% \begin{macrocode} + \pnode(-\tabcolsep,\smc@htTabX){ul} + \pnode(-\tabcolsep,\smc@dpTabX){dl} +% \end{macrocode} +% On réalise un saut avec un ressort infini pour se placer sur la +% droite de la cellule afin de placer les nœuds droits (supérieur et +% inférieur). +% \begin{macrocode} + \hspace*{\stretch{1}}% + \pnode(\tabcolsep,\smc@htTabX){ur} + \pnode(\tabcolsep,\smc@dpTabX){dr} +% \end{macrocode} +% Il ne reste plus qu'à tracer la croix. +% \begin{macrocode} + \psline(ul)(dr) + \psline(dl)(ur) +} +% \end{macrocode} +% Macro de sauvegarde d'une liste de deuc valeurs séparées par une +% virgule en deux macros |\smc@htTabX| et |\smc@dpTabX|. +% \begin{macrocode} +\def\smc@GetVTabX#1,#2,{% + \edef\smc@htTabX{\the\dimexpr#1}% + \edef\smc@dpTabX{-\the\dimexpr#2}% + \smc@gobblenil +} +\def\smc@gobblenil#1\@nil{} +% \end{macrocode} +% \end{macro} +% \begin{environment}{debordedroite} +% L'environnement |debordedroite| ajoute une marge de +% |\ExtraMarginRight| à droite. +% \begin{macrocode} +\newenvironment{debordedroite}{% + \changemargin{0mm}{-\ExtraMarginRight}% +} +{\par\endchangemargin} +% \end{macrocode} +% \end{environment} +% \begin{macro}{\habillage} +% Cette macro permet d'habiller une image par le texte. Sa syntaxe est +% la suivante :\\ +% |\habillage{
}|\\ +% \begin{macrocode} +\newcommand*\habillage[1]{% +% \end{macrocode} +% Le principe va être de placer la figure en la faisant déborder dans +% la marge droite. Si la figure fait moins de |\ExtraMarginRight| +% de large, elle n'ira pas jusqu'à la fin de cette marge +% supplémentaire sinon, elle est placée pour aller jusqu'à cette marge +% et le texte est composée sur une largeur adéquate de façon +% automatique par la macro |\parpic|. +% +% Pour cela, on va tricher sur la largeur de la figure. Elle sera de +% |-\ExtraMarginRight| si cette quantité est positive ou bien +% nulle sinon. En réalité, il y a un petit bug à ce niveau (de parpic +% je pense) et il ne faut pas que la largeur soit totalement nulle, +% d'où la valeur un peu étrange de |0.1pt|. Pour faire tous ces +% calculs, il faut au préalable mettre le matériel en boîte. +% \begin{macrocode} + \setbox\smc@boxb=\hbox{#1}% + \smc@dimb = \dimexpr\wd\smc@boxb-\ExtraMarginRight\relax + \ifdim \smc@dimb<\z@ + \smc@dimb = 0.1pt + \fi +% \end{macrocode} +% On peut maintenant appeler la macro |\parpic|. +% \begin{macrocode} + \parpic[r]{\makebox[\smc@dimb][l]{{#1}}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\u} +% La classe permet de gérer les unités de façon simple avec des macros +% de type |\uxx| où |xx| indique l'unité choisie. Le nombre est mis en +% forme selon les standards français. +% +% Au départ, on sauvegarde la valeur de la macro |\u| dans |\uori|. Il +% s'agit de la macro d'accent rond inverse. On déclare alors les deux +% macros qui ne demandent aucune unité. +% \begin{macrocode} +\let\uori\u +% \end{macrocode} +% Le |\U| est parfois défini. On le tue. +% \begin{macrocode} +\let\Uori\U +\let\U\relax +\newcommand\U[1]{\ensuremath{#1}} +\renewcommand\u[1]{\ensuremath{\nombre{#1}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\newunit} +% Macro générale de création de macros d'unité. Cette macro demande +% deux paramètres : le nom de la macro et l'unité à afficher (en mode +% texte). +% \begin{macrocode} +\newcommand\newunit[2]{% +% \end{macrocode} +% On commence avec la macro où le nombre est écrit avec la macro +% |\nombre|. Le nom de cette macro est |\u| où || est le +% premier argument de |\newunit|. +% \begin{macrocode} + \expandafter\newcommand\csname u#1\endcsname[1]{% +% \end{macrocode} +% Si le nombre passé est totalement vide, on n'affiche que l'unité. +% \begin{macrocode} + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{\nombre{##1}\,#2}}% + }% +% \end{macrocode} +% On fait exactement la même chose avec la macro |\U|. La +% diiférence est que le nombre est composé directement en mode +% mathématique (sans la macro |\nombre|). Cela permet de passer des +% expressions mathématiques. +% \begin{macrocode} + \expandafter\newcommand\csname U#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{##1\,#2}}% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\renewunit} +% La macro |\renewunit| permet à l'utilisateur de redéfinir des unités +% existantes. C'est exactement le même code que ci-dessus mais avec un +% |\renewcommand| à la place des |\newcommand|. +% \begin{macrocode} +\newcommand\renewunit[2]{% + \expandafter\renewcommand\csname u#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{\nombre{##1}\,#2}}% + }% + \expandafter\renewcommand\csname U#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{##1\,#2}}% + }% +} +% \end{macrocode} +% \end{macro} +% On utilise la macro |\newunit| pour créer des macros d'unités +% de longueur. +% \begin{macrocode} +\newunit{ym}{\text{ym}} +\newunit{zm}{\text{zm}} +\newunit{am}{\text{am}} +\newunit{fm}{\text{fm}} +\newunit{pm}{\text{pm}} +\newunit{nm}{\text{nm}} +\newunit{micron}{\mu\text{m}} +\newunit{mm}{\text{mm}} +\newunit{cm}{\text{cm}} +\newunit{dm}{\text{dm}} +\newunit{m}{\text{m}} +\newunit{dam}{\text{dam}} +\newunit{hm}{\text{hm}} +\newunit{km}{\text{km}} +\newunit{Mm}{\text{Mm}} +\newunit{Gm}{\text{Gm}} +\newunit{Tm}{\text{Tm}} +\newunit{Pm}{\text{Pm}} +\newunit{Em}{\text{Em}} +\newunit{Zm}{\text{Zm}} +\newunit{Ym}{\text{Ym}} +% \end{macrocode} +% Unités de surface. +% \begin{macrocode} +\newunit{mmq}{\text{mm}^2} +\newunit{cmq}{\text{cm}^2} +\newunit{dmq}{\text{dm}^2} +\newunit{mq}{\text{m}^2} +\newunit{damq}{\text{dam}^2} +\newunit{hmq}{\text{hm}^2} +\newunit{kmq}{\text{km}^2} +\newunit{ha}{\text{ha}} +% \end{macrocode} +% Unités de volume. +% \begin{macrocode} +\newunit{mmc}{\text{mm}^3} +\newunit{cmc}{\text{cm}^3} +\newunit{dmc}{\text{dm}^3} +\newunit{mc}{\text{m}^3} +\newunit{damc}{\text{dam}^3} +\newunit{hmc}{\text{hm}^3} +\newunit{kmc}{\text{km}^3} +% \end{macrocode} +% Unités de volume en litre. +% \begin{macrocode} +\newunit{hl}{\text{hl}} +\newunit{dal}{\text{dal}} +\newunit{l}{\text{l}} +\newunit{dl}{\text{dl}} +\newunit{cl}{\text{cl}} +\newunit{ml}{\text{ml}} +% \end{macrocode} +% Unité de volume en litre (avec un joli \og l \fg{}) +% \begin{macrocode} +\newunit{hel}{\text{h$\ell$}} +\newunit{dael}{\text{da$\ell$}} +\newunit{el}{\text{$\ell$}} +\newunit{del}{\text{d$\ell$}} +\newunit{cel}{\text{c$\ell$}} +\newunit{mel}{\text{m$\ell$}} +% \end{macrocode} +% Unité de temps +% \begin{macrocode} +\newunit{s}{\text{s}} +\newunit{min}{\text{min}} +\newunit{h}{\text{h}} +\newunit{ms}{\text{m$\cdot$s}^{-1}} +\newunit{mh}{\text{m$\cdot$h}^{-1}} +\newunit{kms}{\text{km$\cdot$s}^{-1}} +\newunit{kmmin}{\text{km$\cdot$min}^{-1}} +\newunit{kmh}{\text{km$\cdot$h}^{-1}} +% \end{macrocode} +% Unité de débit +% \begin{macrocode} +\newunit{ls}{\text{$\ell\cdot$s}^{-1}} +% \end{macrocode} +% Unités de masses +% \begin{macrocode} +\newunit{mg}{\text{mg}} +\newunit{cg}{\text{cg}} +\newunit{dg}{\text{dg}} +\newunit{g}{\text{g}} +\newunit{dag}{\text{dag}} +\newunit{hg}{\text{hg}} +\newunit{kg}{\text{kg}} +% \end{macrocode} +% Autres unité +% \begin{macrocode} +\newunit{pc}{\%} +\newunit{deg}{\text{\degre}} +\newunit{degc}{\text{\degre C}} +\newunit{euro}{\text{\euro}} +% \end{macrocode} +% \begin{macro}{\algo} +% Quelques cartouches de signalitique sont proposés. On commence avec +% celle indiquant une activité ou un exercice traitant +% d'algorithmique. +% \begin{macrocode} +\newcommand*\algo{% + \psframebox[framesep=1pt,linewidth=\LogoLineWidth, + linecolor=AlgoLineColor, fillstyle=solid, + fillcolor=AlgoBkgColor, framearc=0.6]{% + \AlgoFont + \textcolor{AlgoTextColor}{\StringALGO}% + } +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\tice} +% Le deuxième logo est celui dédié au TICE. Il se construit +% exactement comme le logo Algo. Seul le texte (bien sûr) et les +% couleurs changent. +% \begin{macrocode} +\newcommand*\tice{% + \psframebox[framesep=1pt,linewidth=\LogoLineWidth, + linecolor=TiceLineColor, fillstyle=solid, + fillcolor=TiceBkgColor, framearc=0.6]{% + \TiceFont + \textcolor{TiceTextColor}{\StringTICE}% + } +} +% \end{macrocode} +% \end{macro} +% \begin{environment}{oldalgorithme} +% Dans une première version, l'environnement algorithme consistait +% uniquement à afficher le contenu dans un cadre arrondi avec fond +% coloré en respectant les saut de ligne et les espaces et avec une +% numérotation des lignes. +% +% En fait, dans la deuxième version, toute la structure des +% algorithmes est décrite en terme de macro. Tout l'arsenal de +% traitement verbatim devient donc totalement inutile. On conserve +% quand même l'ancien environnement sous le nom |oldalgorithme|. +% +% Le compteur |smc@line| va servir à numéroter les lignes. +% \begin{macrocode} +\newcounter{smc@line} +\newenvironment{oldalgorithme}{% +% \end{macrocode} +% Les algorithmes sont affichés avec la fonte à chasse fixe. On remet +% ensuite le compteur de ligne à zéro. +% \begin{macrocode} + \ttfamily + \c@smc@line \z@ +% \end{macrocode} +% Avant de rendre la fin de ligne active (et équivalente à |\par|) +% avec la commande |\obeylines|, on redéfinit |\par|. Celle-ci doit +% non seulement passer au paragraphe suivant mais aussi afficher le +% numéro de ligne. On ne peut pas le faire de façion systématique +% sinon, la ligne |\end{oldalgorithme}| provoquerait une ligne vide +% numérotée dans le résultat. Pour cela, on regarde ce qui suit le +% saut de ligne. +% \begin{macrocode} + \def\par{% + \@@par + \afterassignment\smc@displaynum\let\next=% + }% +% \end{macrocode} +% Si ce qui suit le saut de ligne est |\end|, on réinjecte le |\end| +% sans rien faire. +% \begin{macrocode} + \def\smc@displaynum{% + \ifx\next\end + \expandafter\end + \else +% \end{macrocode} +% Sinon, on incrémente le compteur de ligne est on l'affiche dans sa +% boîte. +% \begin{macrocode} + \global\advance\c@smc@line\@ne% + \leavevmode\hb@xt@\AlgorithmeNumWidth{\the\c@smc@line.\hss}% +% \end{macrocode} +% L'unité lexicale lue doit être réinjectée après le numéro de ligne +% et en faisant attention à terminer le développement de |\fi| au +% préalable au cas où l'unité sera une macro à paramètre (par +% exemple). +% \begin{macrocode} + \expandafter\next + \fi% + }% +% \end{macrocode} +% Les ponctuations doubles ne doivent pas gérer seules les +% espacements. +% \begin{macrocode} + \shorthandoff{;:!?}% +% \end{macrocode} +% Tout est prêt pour activer les espaces (avec la commandes +% \LaTeX{} |\@vobeyspaces| qui permet de garder les espaces de début +% de ligne) et les sauts de ligne. +% \begin{macrocode} + \@vobeyspaces + \obeylines +% \end{macrocode} +% Le reste de l'environnement consiste à placer le corps de +% l'environnement dans une boîte dont la largeur doit prévoir les +% marges et les filets. +% \begin{macrocode} + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\AlgorithmeRuleWidth*2-\AlgorithmeSep*2}% +} +{% +% \end{macrocode} +% En fin d'environnement, on ferme la minipage et la boîte. +% \begin{macrocode} + \endminipage + \end{lrbox}% +% \end{macrocode} +% On passe au paragraphe suivant (avec la primitive |\@@par|). +% \begin{macrocode} + \@@par\addvspace{\BeforeAlgorithmeVSpace} +% \end{macrocode} +% On peut alors afficher le cadre et son contenu ! +% \begin{macrocode} + \psframebox[linecolor=AlgorithmeRuleColor, + linewidth=\AlgorithmeRuleWidth, + fillstyle=solid, + fillcolor=AlgorithmeBkgColor, + framesep=\AlgorithmeSep, + cornersize=absolute, + linearc=\AlgorithmeSep]% + {\usebox{\smc@boxa}}% + \@@par\addvspace{\AfterAlgorithmeVSpace} +} +% \end{macrocode} +% \end{environment} +% \begin{environment}{algorithme} +% Le nouvel environnement |algorithme| dispose d'une batterie de +% macros permettant de spécifier le code. +% +% Chaque commande commence une nouvelle ligne et place l'espace de +% retrait constamment tenu à jour dans le compteur |\smc@indent|. Pour +% gérer ce retrait de la façon la plus lisible possible, deux macros +% sont définies pour l'augmenter et le diminuer. +% \begin{macrocode} +\newcount\smc@indent +\newcommand*\smc@inc@indent{% + \advance\smc@indent\@ne +} +\newcommand*\smc@dec@indent{% + \ifnum\smc@indent>\z@ + \advance\smc@indent\m@ne + \fi +} +\newcommand*\smc@write@indent{% + \par + \refstepcounter{smc@line}% + \dimen0 \dimexpr\AlgoIndent*\smc@indent + \leavevmode\hb@xt@\AlgorithmeNumWidth{\texttt{\the\c@smc@line.}\hss}% + \hspace*{\dimen0}% +} +\newcommand*\BlocVariables{% + \smc@dec@indent + \smc@write@indent + \textit{Liste des variables utilis\'ees}% + \smc@inc@indent +} +\newcommand*\BlocEntrees{% + \smc@dec@indent + \smc@write@indent + \textit{Entr\'ees}% + \smc@inc@indent +} +\newcommand*\BlocTraitements{% + \smc@dec@indent + \smc@write@indent + \textit{Traitements} + \smc@inc@indent +} +\newcommand*\BlocAffichage{% + \smc@dec@indent + \smc@write@indent + \textit{Affichage} + \smc@inc@indent +} +\newcommand\BlocTraitementsEtAffichage{% + \smc@dec@indent + \smc@write@indent + \textit{Traitements et affichage} + \smc@inc@indent +} +\newcommand*\DeclareVar[3]{% + \smc@write@indent + \texttt{#1 \string: }% + \textit{#2}\hfill + \textcolor{CouleurAlgoCommentaire}{#3}% +} +\newcommand*\TantQue[2]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Tant que} (\texttt{#1})} + \texttt{\bfseries faire} + \smc@inc@indent + #2 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Fin Tant que}}% +} +\newcommand*\Pour[4]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoPour}{\bfseries Pour}} + \texttt{#1} + \textcolor{CouleurAlgoPour}{\bfseries variant de} + \texttt{#2} + \textcolor{CouleurAlgoPour}{\bfseries \`a} + \texttt{#3} + \texttt{\bfseries faire} + \smc@inc@indent + #4 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Fin Pour}}% +} +\newcommand*\PourAvecPas[5]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoPour}{\bfseries Pour}} + \texttt{#1} + \textcolor{CouleurAlgoPour}{\bfseries variant de} + \texttt{#2} + \textcolor{CouleurAlgoPour}{\bfseries \`a} + \texttt{#3} + \textcolor{CouleurAlgoPour}{\bfseries avec un pas de} + \texttt{#4} + \texttt{faire} + \smc@inc@indent + #5 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Fin Pour}}% +} +\newcommand*\SiAlors[2]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Si}} + {#1} + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Alors}} + \smc@inc@indent + #2 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Fin Si}}% +} +\newcommand*\SiAlorsSinon[3]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Si}} + {#1} + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Alors}} + \smc@inc@indent + #2 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Sinon}} + \smc@inc@indent + #3 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Fin Si}}% +} +\newcommand*\AfficherVar[1]{% + \smc@write@indent + \textcolor{CouleurAlgoAffiche}{Afficher la valeur de} + \texttt{#1}% +} +\newcommand*\Afficher[1]{% + \smc@write@indent + \textcolor{CouleurAlgoAffiche}{Afficher} + #1% +} +\newcommand*\Calculer[1]{% + \smc@write@indent + \textcolor{CouleurAlgoCalcule}{Calculer} + #1% +} +\newcommand*\Demander[1]{% + \smc@write@indent + \textcolor{CouleurAlgoDemander}{Demander} + \texttt{#1}% +} +\newcommand*\Saisir[1]{% + \smc@write@indent + \textcolor{CouleurAlgoSaisir}{Saisir} + \texttt{#1}% +} +\newcommand*\Stocker[1]{% + \smc@write@indent + \textcolor{CouleurAlgoStocker}{Stocker} la r\'eponse dans + \texttt{#1}% +} +\newcommand*\DonnerValeur[2]{% + \smc@write@indent + \textcolor{CouleurAlgoDonnerValeur}{Donner} \`a \texttt{#1} + la valeur de \texttt{#2}% +} +\newcommand*\TitreAlgo[1]{% + \smc@write@indent + \textit{Algorithme \string: }#1 +} +\newcommand*\FinAlgo{% + \smc@dec@indent + \smc@write@indent + \textit{Fin de l'algorithme}% +} +% \end{macrocode} +% L'environnement proprement dit ne fait pas grand chose : il place +% son contenu dans une minipage de la bonne largeur et compose alors +% ce contenu dans un cadre à fond coloré (et arrondi). +% \begin{macrocode} +\newenvironment{algorithme}{% +% \end{macrocode} +% On commence par initialiser le compteur de ligne et on inhibe les +% ponctuations doubles actices. +% \begin{macrocode} + \c@smc@line\z@ + \shorthandoff{;:!?}% +% \end{macrocode} +% On mémorise alors le contenu dans une boîte contenant la minipage à +% la bonne largeur. +% \begin{macrocode} + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\AlgorithmeRuleWidth*2-\AlgorithmeSep*2}% +} +{% +% \end{macrocode} +% En fin d'environnement, on ferme la minipage et la boîte. +% \begin{macrocode} + \endminipage + \end{lrbox}% +% \end{macrocode} +% On passe au paragraphe suivant. +% \begin{macrocode} + \par\addvspace{\BeforeAlgorithmeVSpace} +% \end{macrocode} +% On peut alors afficher le cadre et son contenu ! +% \begin{macrocode} + \psframebox[linecolor=AlgorithmeRuleColor, + linewidth=\AlgorithmeRuleWidth, + fillstyle=solid, + fillcolor=AlgorithmeBkgColor, + framesep=\AlgorithmeSep, + cornersize=absolute, + linearc=\AlgorithmeSep]% + {\usebox{\smc@boxa}}% + \par\addvspace{\AfterAlgorithmeVSpace} +} +% \end{macrocode} +% \end{environment} +% \begin{macro}{\Strut} +% Pour pouvoir régler finement et individuellement l'interlignage, on +% va définir une macro |\Strut| qui sera comme |\strut| mais avec un +% paramètre optionnel indiquant un facteur +% d'agrandissement-réduction. Par défaut, le facteur vaut 1 et la +% macro se comportera comme le |\strut| de \LaTeX{}. +% \begin{macrocode} +\newcommand*\Strut[1][1]{% + \leavevmode + \vrule \@height #1\ht\strutbox + \@depth #1\dp\strutbox + \@width\z@ +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\TopStrut} +% La commande |\TopStrut| se comporte comme |\Strut| mais elle ne +% concerne que la hauteur. +% \begin{macrocode} +\newcommand*\TopStrut[1][1]{% + \leavevmode + \vrule \@height #1\ht\strutbox + \@depth \z@ + \@width \z@ +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BotStrut} +% La commande |\BotStrut| se comporte comme |\Strut| mais elle ne +% concerne que la profondeur. +% \begin{macrocode} +\newcommand*\BotStrut[1][1]{% + \leavevmode + \vrule \@height \z@ + \@depth #1\dp\strutbox + \@width \z@ +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\RefExercice} +% Fait référence à un exercice en plaçant le numéro dans un cadre. Les +% couleurs sont les mêmes que pour les numéros d'exercice réels. +% \begin{macrocode} +\newcommand*\RefExercice{% +% \end{macrocode} +% La couleur du cadre va dépendre du fait que l'exercice ait ou non une +% correction. On se sert d'une version étoilée de cette macro pour +% gérer cela. +% \begin{macrocode} + \@ifstar{\smc@sRefExercice}{\smc@nsRefExercice}% +} +\newcommand*\smc@sRefExercice[1]{% + \psframebox*[linewidth=0pt, fillcolor=ExerciceCorrigeNumFrameColor, + framesep=2pt]{\textcolor{ExerciceNumColor}{\bfseries \ref{#1}}}% +} +\newcommand*\smc@nsRefExercice[1]{% + \psframebox*[linewidth=0pt, fillcolor=ExerciceNumFrameColor, framesep=2pt] + {\textcolor{ExerciceNumColor}{\bfseries \ref{#1}}}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\MethodeRefExercice} +% Cette macro permet d'indiquer une référence à un exercice dans le +% titre d'une méthode. Comme pour la macro précédente, il faut étoiler +% la macro pour faire réference à un exercice corrigé. +% \begin{macrocode} +\newcommand*\MethodeRefExercice{% + \@ifstar{\smc@sMethodeRefExercice}{\smc@nsMethodeRefExercice}% +} +\newcommand\smc@sMethodeRefExercice[1]{% +% \end{macrocode} +% Tout est composé en taille normale et couleur normale. On passe donc +% dans un groupe. +% \begin{macrocode} + \begingroup + \normalcolor + \normalfont + \MethodeRefExerciceFont +% \end{macrocode} +% On trouve d'abord un espace |\quad| puis un triangle de la même +% couleur que le cadre du numéro. +% \begin{macrocode} + \hfill + \begin{pspicture}(0,0)(0.8em,1.2ex) + \pspolygon*[linewidth=0pt, linecolor=MethodeTitleFrameColor] + (0,0)(0,1.2ex)(0.8em,0.6ex) + \end{pspicture}~% +% \end{macrocode} +% On compose alors le texte Ex. p. +% \begin{macrocode} + Ex.~\RefExercice*{#1}~p.~\pageref{#1}% + \endgroup +} +% \end{macrocode} +% La version non étoilée fait exactement la même chose à part la +% couleur du cadre donc l'appel à |\RefExercice| sans étoile. +% \begin{macrocode} +\newcommand\smc@nsMethodeRefExercice[1]{% + \begingroup + \normalcolor + \normalfont + \MethodeRefExerciceFont + \hfill + \begin{pspicture}(0,0)(0.8em,1.2ex) + \pspolygon*[linewidth=0pt, linecolor=MethodeTitleFrameColor] + (0,0)(0,1.2ex)(0.8em,0.6ex) + \end{pspicture}~% + Ex.~\RefExercice{#1}~p.~\pageref{#1}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\RefMethode} +% Façon de faire référence à une méthode. Le numéro est composé avec +% la couleur normalement utilisée pour les cadres de méthodes. +% \begin{macrocode} +\newcommand*\RefMethode[1]{% + \textcolor{MethodeTitleFrameColor}{\bfseries \ref{#1}}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ExerciceRefMethode} +% Façon de faire référence à une méthode dans le titre d'un exercice. +% \begin{macrocode} +\newcommand*\ExerciceRefMethode[1]{% + \begingroup + \quad + \begin{pspicture}(0,0)(0.8em,1.2ex) + \pspolygon*[linewidth=0pt, linecolor=MethodeTitleFrameColor] + (0,0)(0,1.2ex)(0.8em,0.6ex) + \end{pspicture}~% + \psframebox*[fillcolor=ExerciceRefMethodeColor] + {% + \textcolor{Blanc}{% + {% + \ExerciceRefMethodeFont + \StringMETHODE~\ref{#1}% + }% + }% + }% + \textcolor{Noir}{% + {% + \normalfont + \ExercicePageRefMethodeFont + ~p.~\pageref{#1}% + }% + }% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\RefItem} +% Façon de faire référence à un numéro de liste. +% \begin{macrocode} +\newcommand*\RefItem[1]{% + \textcolor{\smc@curr@itemcolor}{\smc@curr@itemcmd\ref{#1}}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\RefQCM} +% Façon de faire référence à un exercice de QCM. On reprend en fait un +% code similaire à celui permettant de composer le numéro des +% exercices de type QCM mais avec une autre taille de caractères. +% \begin{macrocode} +\newcommand*\RefQCM[1]{% + \begingroup + \fboxsep \QCMRefHSep + \colorbox{QCMFrameColor}{\textcolor{QCMTextFrameColor}{\ref{#1}}}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\RefPartie} +% Façon de faire référence à un numéro de partie. +% \begin{macrocode} +\newcommand*\RefPartie[1]{% + \psframebox*[fillcolor=smc@curr@partiebkgcolor] + {\textcolor{smc@curr@partiecolor}{\smc@curr@partiefont \ref{#1}}}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{sudoku} +% La classe prévoit la possibilité de construire des grilles de sudoku +% de façon agréable pour l'utilisateur. La syntaxe est la suivante : +% \begin{verbatim} +% \sudoku[taille]{% +% ......... +% .*.*.*.*. +% 3..1..2.. +% etc. +% } +% \end{verbatim} +% où \key{taille} indique la taille des cases de la grille (5mm par +% défaut) et où l'argument de |\sudoku| indique soit une case vide +% blanche (.) soit une case vide colorée (*) soit un caractère devant +% figurer dans la case (avec des accolades en cas de caractère +% complexe). +% +% En fait, la largeur par défaut est sous le contrôle de la macro +% |\SudokuWidth|. +% \begin{macrocode} +\newcommand*\SudokuWidth{5mm} +\newcommand\sudoku[2][\SudokuWidth]{% + \begingroup +% \end{macrocode} +% Avant même de faire le |\begin{pspicture}|, on fixe l'unité qui sera +% la largeur des cases de la grille. C'est pour cela que tout se +% déroule à l'intérieur d'un groupe. +% \begin{macrocode} + \psset{unit=#1, dimen=middle, linewidth=0.3pt, linecolor=FiletTableauColor} +% \end{macrocode} +% L'environnement \environ{pspicture} prévoit 10 cases au lieu de 9 +% pour pouvoir placer les légendes des lignes et colonnes. +% \begin{macrocode} + \begin{pspicture}(0,0)(10,10) +% \end{macrocode} +% Légende des lignes et colonnes. |96+\n| affiche a\ldots j et |74-\n| +% affiche J\ldots A. +% \begin{macrocode} + \multido{\n=1+1}{9}{% + \rput[B](\n.5,9.25){\symbol{\numexpr 96+\n}} + \rput[B](0.5,\dimexpr\n\psyunit-0.75\psyunit){\symbol{\numexpr 74-\n}} + } +% \end{macrocode} +% Avant de lire l'argument de la macro, c'est-à-dire le contenu des +% cases, on initialise les compteurs de ligne et de colonne. On va +% lire les lignes de haut en bas donc de 8 à 0 du point de vue de +% \environ{pspicture}. +% \begin{macrocode} + \def\x{1}\def\y{8}% +% \end{macrocode} +% La macro de lecture de l'argument (et de l'affichage du contenu des +% cases) est une macro récursive. On initialise la macro |\smc@next| +% avec le nom de cette macro pour préparer les appels récursifs. +% \begin{macrocode} + \let\smc@next\smc@parsesudoku +% \end{macrocode} +% Appel de la macro récursive de lecture. Pour gérer tous les cas +% (plus de 81 indications, moins de 81 indications) on dispose d'une +% double balise de limitation d'argument. +% \begin{macrocode} + \smc@next#2\@nil\@@nil +% \end{macrocode} +% Une fois que les cases sont remplies, on affiche les traits gras des +% triples cases à l'intérieur de la grille générale de sudoku. Pour +% que les jonctions des coins soient propres, on doit faire déborder +% certaines lignes de la moitié de l'épaisseur des lignes. +% \begin{macrocode} + \psset{linewidth=1.2pt} + \multido{\n=0+3,\nn=1+3}{4}{% + \psline(1,\n)(10,\n) + \psline(\nn,-0.5\pslinewidth)(\nn,\dimexpr 9\psyunit+0.5\pslinewidth) + } + \end{pspicture}% + \endgroup +} +% \end{macrocode} +% La macro qui suit est celle qui va lire l'argument de |\sudoku| de +% façon récursive et remplir la case correspondante selon le caractère +% rencontré. +% \begin{macrocode} +\def\smc@parsesudoku#1{% +% \end{macrocode} +% On place le caractère (ou le groupe) lu dans une macro pour tester +% s'il s'agit de la balise |\@nil|. +% \begin{macrocode} + \def\smc@arg{#1}% + \ifx\smc@arg\@nnil +% \end{macrocode} +% Si la balise est atteinte, on passe au traitement final. +% \begin{macrocode} + \let\smc@next\smc@endsudoku + \else +% \end{macrocode} +% Sinon, on place le résultat en |(\x,\y)|. +% \begin{macrocode} + \rput(\x,\y){% + \if#1.% +% \end{macrocode} +% Le point donne une case vide à fond blanc. +% \begin{macrocode} + \psframe(0,0)(1,1) + \else\if#1*% +% \end{macrocode} +% L'étoile donne une case vide à fond coloré. +% \begin{macrocode} + \psframe[fillstyle=solid, fillcolor=FondSudokuColor](0,0)(1,1) + \else +% \end{macrocode} +% Tout autre contenu affiche le contenu centré dans la case. +% \begin{macrocode} + \psframe(0,0)(1,1) + \rput[B](0.5,0.3\psyunit){#1} + \fi\fi + } + \fi +% \end{macrocode} +% On passe à la case suivante. +% \begin{macrocode} + \edef\x{\the\numexpr\x+1}% + \ifnum\x=10 +% \end{macrocode} +% Si la rangée est pleine, on revient au début de la rangée suivante. +% \begin{macrocode} + \def\x{1}% + \edef\y{\the\numexpr\y-1}% + \ifnum\y=-1 +% \end{macrocode} +% Si toutes les rangées ont été traitées, on termine le traitement. +% \begin{macrocode} + \let\smc@next\smc@endsudoku + \fi + \fi + \smc@next +} +% \end{macrocode} +% En fin de lecture récursive, il faut se débarasser des balises de +% délimitation de l'argument. La double balise permet de gérer tous +% les cas (plus de 81 indications, exactement 81 indications, moins de +% 81 indications). +% \begin{macrocode} +\def\smc@endsudoku#1\@@nil{% +% \end{macrocode} +% On regarde s'il y a eu moins de 81 indications. Et si oui, on lance +% la macro récursive de remplissage. +% \begin{macrocode} + \ifnum\y>-1 + \let\smc@next\smc@@endsudoku + \smc@next + \fi +} +% \end{macrocode} +% La dernière macro va s'appeler récursivement pour remplir la fin de +% la grille avec des cases vides. +% \begin{macrocode} +\def\smc@@endsudoku{% + \rput(\x,\y){\psframe(0,0)(1,1)} + \edef\x{\the\numexpr\x+1}% + \ifnum\x=10 +% \end{macrocode} +% Si la rangée est pleine, on revient au début de la rangée suivante. +% \begin{macrocode} + \def\x{1}% + \edef\y{\the\numexpr\y-1}% + \ifnum\y=-1 +% \end{macrocode} +% Si toutes les rangées ont été traitées, on termine le traitement. +% \begin{macrocode} + \let\smc@next\relax + \fi + \fi + \smc@next +} +% \end{macrocode} +% \end{macro} +% \section{En-têtes et pieds de page} +% \begin{macro}{\smc@nobsbs} +% Il est parfois nécessaire que la séquence de contrôle |\\| perde son +% rôle de saut de ligne pour prendre celui d'une espace. On prendra +% garde au fait que cette séquence de contrôle, qu'elle soit ou non +% suivie d'un espace soit équivalente à une seule espace. +% \begin{macrocode} +\newcommand\smc@nobsbs[1]{% + \begingroup + \def\\{\space\ignorespaces}% + \protected@edef\smc@tmp{#1}% + \smc@tmp + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@headeven} +% On gère ici toutes les en-têtes et pieds de page. On commence par +% définir une macro qui servira systématiquement pour les +% en-têtes. Ceux-ci sont constitués d'un cadre avec un titre et un +% dégradé de carrés dans un coin. Il suffit de donner le nom de base +% des couleurs qui seront utilisées (les noms seront construits selon +% le procédé \texttt{Color} où \texttt{} est un nombre +% entre 1 et 5 donnant les cinq couleurs différentes pour +% l'en-tête et un numéro 0 pour la couleur du texte du titre. il +% faudra également passer, en second argument, le titre. +% +% Les en-têtes de page paire et impaire ne sont pas construite de la +% même façon. On commence par celles des pages paires. +% \begin{macrocode} +\newcommand*\smc@headeven[2]{% +% \end{macrocode} +% Sur les pages paires, le cadre est sur la gauche de l'en-tête en +% pleine page : il faudra faire déborder à gauche (et en haut). +% \begin{macrocode} + \begin{pspicture}(0,0)(\HeadFrameWidth,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \psframe[fillcolor=#15Color] + (\dimexpr -\smc@marginleft-\smc@bleed,-\HeadFrameDepth) + (\HeadFrameWidth,\dimexpr \HeadFrameHeight+\smc@bleed) + \smc@diagonal(\HeadFrameWidth-\SquareWidth*3,-\HeadFrameDepth){#1} +% \end{macrocode} +% Pour le titre, il faut d'abord vérifier qu'il loge dans la largeur à +% disposition et, sinon, réaliser une contraction horizontale avant de +% l'afficher. Pour cela on utilise la macro |\psscaleboxto| qui a +% besoin de connaître les nouvelles hauteur totale et largeur. La +% hauteur totale doit rester la même d'où le calcul +% |\ht0+\dp0|. D'autre part, la commande PSTricks |\psscaleboxto| ne +% semble pas fonctionner correctement ici. Enfin, pour que la commande +% |\resizebox| de l'extension \package{graphicx} fonctionne comme il +% faut, il faut que les commandes de changement de fontes soient +% extérieures à l'argument terminal de |\resizebox|. +% \begin{macrocode} + \setbox0=\hbox{\textcolor{#10Color}{\HeadTitleFont #2}}% + \ifdim\wd0>\HeadTitleMaxWidth + \rput[Bl](0,0){% + {% + \HeadTitleFont\color{#10Color}% + \resizebox{\HeadTitleMaxWidth}{\dimexpr\ht0+\dp0}{#2}% + }% + } + \else + \rput[Bl](0,0){\unhbox0} + \fi + \end{pspicture} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@headodd} +% La différence avec les en-têtes de pages paires est que le cadre est +% à droite (donc déborde à droite et en haut) et que le texte est +% cadré à droite. +% \begin{macrocode} +\newcommand\smc@headodd[2]{% + \begin{pspicture}(0,0)(\HeadFrameWidth,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \psframe[fillcolor=#15Color] + (0,-\HeadFrameDepth) + (\dimexpr \HeadFrameWidth+\smc@marginright+\smc@bleed, + \dimexpr \HeadFrameHeight+\smc@bleed) + \smc@antidiagonal(0pt,-\HeadFrameDepth){#1} + \setbox0=\hbox{\textcolor{#10Color}{\HeadTitleFont #2}}% + \ifdim\wd0>\HeadTitleMaxWidth + \rput[Br](\HeadFrameWidth,0){% + {% + \HeadTitleFont\color{#10Color}% + \resizebox{\HeadTitleMaxWidth}{\dimexpr\ht0+\dp0}{#2}% + }% + } + \else + \rput[Br](\HeadFrameWidth,0){\unhbox0} + \fi + \end{pspicture} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@roundheadeven} +% Certaines en-têtes ont un aspect arrondi. Il faudra des macros +% dédiées pour les gérer. Voici celle pour les pages paires. Par +% rapport à la macro précédente, il y a un argument de couleur +% supplémentaire pour pouvoir faire l'arrondi du cadre avec la couleur +% du fond. +% \begin{macrocode} +\newcommand*\smc@roundheadeven[3]{% + \begin{pspicture}(0,0)(\RoundHeadFrameWidth,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \psframe[fillcolor=#15Color] + (\dimexpr -\smc@marginleft-\smc@bleed,-\HeadFrameDepth) + (\RoundHeadFrameWidth,\dimexpr \HeadFrameHeight+\smc@bleed) +% \end{macrocode} +% En fait, l'arrondi sera fait par les disques. Ici, on se contente +% d'effacer un carré correspondant à un quart de disque +% \begin{macrocode} + \psframe[fillcolor=#2] + (\dimexpr \RoundHeadFrameWidth-\SquareWidth/2, + -\HeadFrameDepth) + (\RoundHeadFrameWidth, + \dimexpr -\HeadFrameDepth+\SquareWidth/2) + \smc@rounddiagonal(\RoundHeadFrameWidth-\SquareWidth*3,-\HeadFrameDepth){#1} + \setbox0=\hbox{\textcolor{#10Color}{\HeadTitleFont #3}}% + \ifdim\wd0>\RoundHeadTitleMaxWidth + \rput[Bl](0,0){% + {% + \HeadTitleFont\color{#10Color}% + \resizebox{\RoundHeadTitleMaxWidth}{\dimexpr\ht0+\dp0}{#3}% + }% + } + \else + \rput[Bl](0,0){\unhbox0} + \fi + \end{pspicture} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@roundheadodd} +% Même chose que ci-dessus mais pour les pages impaires. +% \begin{macrocode} +\newcommand\smc@roundheadodd[3]{% + \begin{pspicture}(0,0)(\RoundHeadFrameWidth,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \psframe[fillcolor=#15Color] + (0,-\HeadFrameDepth) + (\dimexpr \RoundHeadFrameWidth+\smc@marginright+\smc@bleed, + \dimexpr \HeadFrameHeight+\smc@bleed) + \psframe[fillcolor=#2] + (0, -\HeadFrameDepth) + (\dimexpr \SquareWidth/2, \dimexpr -\HeadFrameDepth+\SquareWidth/2) + \smc@roundantidiagonal(0pt,-\HeadFrameDepth){#1} + \setbox0=\hbox{\textcolor{#10Color}{\HeadTitleFont #3}}% + \ifdim\wd0>\RoundHeadTitleMaxWidth + \rput[Br](\RoundHeadFrameWidth,0){% + {% + \HeadTitleFont\color{#10Color}% + \resizebox{\RoundHeadTitleMaxWidth}{\dimexpr\ht0+\dp0}{#3}% + }% + } + \else + \rput[Br](\RoundHeadFrameWidth,0){\unhbox0} + \fi + \end{pspicture}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@footpage} +% Le pied de page est toujours constitué du numéro de page avec un +% rectangle coloré au-dessous en pleine page. Comme il n'y a pas +% nécessairement de titre accolé, on commence par définir cette partie +% commune. Ici, il n'y a besoin que de la couleur de fond. +% \begin{macrocode} +\newcommand*\smc@footpage[1]{% + \begin{pspicture}(0,0)(\FootFrameWidth,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \rput[B](.25,0){\FootPageFont \thepage} + \psframe[fillcolor=#1](0,-\FootFrameSep) + (\FootFrameWidth, \dimexpr \smc@footskip+\FootFrameSep + -\smc@marginbottom-\smc@bleed) + \end{pspicture}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@foottitleeven} +% Les pieds de page de pages paires comportent généralement +% l'abréviation du thème courant en capitale suivie du numéro de +% chapitre et du titre de chapitre. Il faut tuer la macro |\\| pour ne +% pas avoir de saut de ligne dans le pied de page. +% \begin{macrocode} +\newcommand*\smc@foottitleeven{% + {% + \space + {% + \color{FootTitleHeadColor}% + \FootTitleHeadFont \@chapapp\space + \MakeUppercase{\smc@thema@init}\thechapter. + }\space + {% + \FootTitleChapterFont \smc@nobsbs{\smc@chaptertitle}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@foottitleodd} +% Les pieds de pages impaires sont généralement comme les pieds de +% pages paires mais cadrés à droite. Il faut quitter le mode vertical +% au début sinon on a un décalage vertical parasite. +% \begin{macrocode} +\newcommand*\smc@foottitleodd{% + {% + \leavevmode + {% + \color{FootTitleHeadColor}% + \FootTitleHeadFont \@chapapp\space + \MakeUppercase{\smc@thema@init}\thechapter. + }\space + {% + \FootTitleChapterFont \smc@nobsbs{\smc@chaptertitle}% + }% + }% + \space +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@bkgeven} +% Les pages en fond colorés sont gérés directement par la classe et au +% niveau des en-têtes. Cela permet de pouvoir avoir la main sur le +% débordement de pleine page. Il faut distinguer les fonds de page +% paire et de page impaire si les marges droite et gauche sont +% différentes (ce n'est pas le cas ici mais autant prévoir). +% +% Il faut que ce soit le premier élément affiché dans une en-tête et +% pour cela, il ne modifiera pas l'emplacement en cours du curseur. Il +% faudra également l'afficher en tant qu'en-tête gauche de la page. +% \begin{macrocode} +\newcommand*\smc@bkgeven[1]{% + \begin{pspicture}(0,0)(0,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \psframe[fillcolor=#1] + (\dimexpr -\smc@marginleft-\smc@bleed, + \dimexpr \smc@margintop-\smc@headsep+\smc@bleed) + (\dimexpr \linewidth+\smc@marginright+\smc@bleed, + \dimexpr -\smc@headsep-\textheight-\smc@marginbottom-\smc@bleed) + \end{pspicture}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@bkgodd} +% La seule chose qui change par rapport à la macro précédente est +% l'inversion de la droite et de la gauche pour les marges. +% \begin{macrocode} +\newcommand*\smc@bkgodd[1]{% + \begin{pspicture}(0,0)(0,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \psframe[fillcolor=#1] + (\dimexpr -\smc@marginright-\smc@bleed, + \dimexpr \smc@margintop-\smc@headsep+\smc@bleed) + (\dimexpr \linewidth+\smc@marginleft+\smc@bleed, + \dimexpr -\smc@headsep-\textheight-\smc@marginbottom-\smc@bleed) + \end{pspicture}% +} +% \end{macrocode} +% \end{macro} +% Pour tous les styles, il n'y aura jamais de filets sur les en-têtes +% et les pieds de page. On les supprime donc de façon globale. +% \begin{macrocode} +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0pt} +% \end{macrocode} +% \begin{macro}{\ps@firstchapter} +% Le style de première page de chapitre est très simple : rien pour +% l'en-tête et numéro de page pour le pied de page. Bien qu'une +% première page de chapitre ne puisse se situer sur une page paire, on +% définit quand même ce style pour les deux parités. +% \begin{macrocode} +\fancypagestyle{firstchapter}{% + \fancyhf{} + \fancyhead[LE]{} + \fancyhead[RO]{} + \fancyfoot[LE]{\smc@footpage{FirstChapterFootColor}} + \fancyfoot[RO]{\smc@footpage{FirstChapterFootColor}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@activites} +% Le style des pages d'activités d'approche suit le cadre général. +% \begin{macrocode} +\fancypagestyle{activites}{% + \fancyhf{} + \fancyhead[LE]{\smc@headeven{ActiviteHeadFrame}{\StringActivitesApproche}} + \fancyhead[RO]{\smc@headodd{ActiviteHeadFrame}{\StringActivitesApproche}} + \fancyfoot[LE]{\smc@footpage{ActiviteFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{ActiviteFootColor}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@cours} +% Le style des pages de Cours et Méthodes suit le cadre général. +% \begin{macrocode} +\fancypagestyle{cours}{% + \fancyhf{} + \fancyhead[LE]{\smc@headeven{CoursHeadFrame}{\StringCoursMethodes}} + \fancyhead[RO]{\smc@headodd{CoursHeadFrame}{\StringCoursMethodes}} + \fancyfoot[LE]{\smc@footpage{CoursFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{CoursFootColor}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@exercicesbase} +% Le style des pages de Exercices de base suit le cadre général. +% \begin{macrocode} +\fancypagestyle{exercicesbase}{% + \fancyhf{} + \fancyhead[LE]{\smc@headeven{ExoBaseHeadFrame}{\StringExercicesBase}} + \fancyhead[RO]{\smc@headodd{ExoBaseHeadFrame}{\StringExercicesBase}} + \fancyfoot[LE]{\smc@footpage{ExoBaseFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{ExoBaseFootColor}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@exercicesappr} +% Le style des pages de Exercices de base suit le cadre général. +% \begin{macrocode} +\fancypagestyle{exercicesappr}{% + \fancyhf{} + \fancyhead[LE]{\smc@headeven{ExoApprHeadFrame}{\StringExercicesAppr}} + \fancyhead[RO]{\smc@headodd{ExoApprHeadFrame}{\StringExercicesAppr}} + \fancyfoot[LE]{\smc@footpage{ExoApprFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{ExoApprFootColor}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@connaissances} +% Le style des pages de Je teste mes connaissances ne suit pas le +% cadre général. Le fond de page en couleur sera géré par les +% en-têtes. En fait, pour des raisons d'économie d'impression pour les +% collègues, on ne fait plus de fond de page en couleur. +% \begin{macrocode} +\fancypagestyle{connaissances}{% + \fancyhf{} + \fancyfoot[LE]{\smc@footpage{ConnFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{ConnFootColor}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@firstconnaissances} +% Le style de la première page de Je teste mes connaissances ne suit +% pas le cadre général. L'en-tête est avec un cadre a coin arrondi et +% des disques au lieu des carrés. +% \begin{macrocode} +\fancypagestyle{firstconnaissances}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@roundheadeven{ConnHeadFrame}{Blanc} + {\StringTestConnaissances}% + } + \fancyhead[RO]{% + \smc@roundheadodd{ConnHeadFrame}{Blanc} + {\StringTestConnaissances}% + } + \fancyfoot[LE]{\smc@footpage{ConnFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{ConnFootColor}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@TP} +% Le style des pages des travaux pratiques suit le cadre général. +% \begin{macrocode} +\fancypagestyle{TP}{% + \fancyhf{} + \fancyhead[LE]{\smc@headeven{TPHeadFrame}{\StringTravauxPratiques}} + \fancyhead[RO]{\smc@headodd{TPHeadFrame}{\StringTravauxPratiques}} + \fancyfoot[LE]{\smc@footpage{TPFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{TPFootColor}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{ps@recreation} +% Le style des pages récréation suit le cadre général. +% \begin{macrocode} +\fancypagestyle{recreation}{% + \fancyhf{} + \fancyhead[LE]{\smc@headeven{RecreationHeadFrame}{\StringRecreation}} + \fancyhead[RO]{\smc@headodd{RecreationHeadFrame}{\StringRecreation}} + \fancyfoot[LE]{\smc@footpage{RecreationFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{RecreationFootColor}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@firstheadevenannexe} +% Les annexes partagent toutes le même type d'en-tête qui est en fait +% des rectangles dans les marges. On définit ici la forme générale de +% ces en-têtes. D'abord pour la première page si elle est +% paire. L'argument est la couleur utilisée. +% \begin{macrocode} +\newcommand*\smc@firstheadevenannexe[1]{% + \begin{pspicture}(0,0)(0,0) + \rput(-\smc@marginleft, \dimexpr \smc@margintop-\smc@headsep){% + \pspolygon[linestyle=none, linewidth=0pt, + fillstyle=solid, fillcolor=#1] + (-\smc@bleed, \smc@bleed) + (-\smc@bleed, \dimexpr -\smc@paperheight-\smc@bleed) + (\CorrigeHeadFrameWidth, \dimexpr -\smc@paperheight-\smc@bleed) + (\CorrigeHeadFrameWidth, -\CorrigeHeadFrameWidth) + (\dimexpr \CorrigeHeadFrameWidth*2, -\CorrigeHeadFrameWidth) + (\dimexpr \CorrigeHeadFrameWidth*2, \smc@bleed) + } + \end{pspicture}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@firstheadoddannexe} +% Même chose que ci-dessus pour les premières pages impaires. +% \begin{macrocode} +\newcommand*\smc@firstheadoddannexe[1]{% + \begin{pspicture}(0,0)(0,0) + \rput(\smc@marginright,\dimexpr \smc@margintop-\smc@headsep){% + \pspolygon[linestyle=none, linewidth=0pt, fillstyle=solid, fillcolor=#1] + (\smc@bleed, \smc@bleed) + (\smc@bleed, \dimexpr -\smc@paperheight-\smc@bleed) + (-\CorrigeHeadFrameWidth, \dimexpr -\smc@paperheight-\smc@bleed) + (-\CorrigeHeadFrameWidth, -\CorrigeHeadFrameWidth) + (\dimexpr -\CorrigeHeadFrameWidth*2, -\CorrigeHeadFrameWidth) + (\dimexpr -\CorrigeHeadFrameWidth*2, \smc@bleed) + } + \end{pspicture}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@headevenannexe} +% Rectangle pour les pages paires des annexes. +% \begin{macrocode} +\newcommand*\smc@headevenannexe[1]{% + \begin{pspicture}(0,0)(0,0) + \rput(-\smc@marginleft, \dimexpr \smc@margintop-\smc@headsep){% + \pspolygon[linestyle=none, linewidth=0pt, fillstyle=solid, fillcolor=#1] + (-\smc@bleed, \smc@bleed) + (-\smc@bleed, \dimexpr -\smc@paperheight-\smc@bleed) + (\CorrigeHeadFrameWidth, \dimexpr -\smc@paperheight-\smc@bleed) + (\CorrigeHeadFrameWidth, \smc@bleed) + } + \end{pspicture}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@headoddannexe} +% Rectangle pour les pages paires des annexes. +% \begin{macrocode} +\newcommand*\smc@headoddannexe[1]{% + \begin{pspicture}(0,0)(0,0) + \rput(\smc@marginright,\dimexpr \smc@margintop-\smc@headsep){% + \pspolygon[linestyle=none, linewidth=0pt, + fillstyle=solid, fillcolor=#1] + (\smc@bleed,\smc@bleed) + (\smc@bleed, \dimexpr -\smc@paperheight-\smc@bleed) + (-\CorrigeHeadFrameWidth, + \dimexpr -\smc@paperheight-\smc@bleed) + (-\CorrigeHeadFrameWidth, \smc@bleed) + } + \end{pspicture}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@firstcorrige} +% Le style pour les pages de corrigé n'a rien à voir avec les autres +% styles. L'en-tête n'est constituée que d'une sorte de rectangle dans +% la marge et le pied de page est beaucoup plus minimal celui des +% autres styles. +% \begin{macrocode} +\fancypagestyle{firstcorrige}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@firstheadevenannexe{CorrigeHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@firstheadoddannexe{CorrigeHeadFrameColor}% + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\StringCorriges}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\StringCorriges}} + {\FootAnnexePageFont \thepage}% + } +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@corrige} +% Les pages suivantes des corrigés se font de la même façon sauf que +% le rectangle de la marge n'a pas d'angle de retour en haut +% \begin{macrocode} +\fancypagestyle{corrige}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@headevenannexe{CorrigeHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@headoddannexe{CorrigeHeadFrameColor} + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\StringCorriges}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\StringCorriges}} + {\FootAnnexePageFont \thepage}% + } +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@firstannexe} +% Style des premières pages des annexes +% \begin{macrocode} +\fancypagestyle{firstannexe}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@firstheadevenannexe{AnnexeHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@firstheadoddannexe{AnnexeHeadFrameColor}% + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\smc@TitleAnnexe}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\smc@TitleAnnexe}} + {\FootAnnexePageFont \thepage}% + } +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@annexe} +% Style des pages suivantes des annexes +% \begin{macrocode} +\fancypagestyle{annexe}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@headevenannexe{AnnexeHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@headoddannexe{AnnexeHeadFrameColor} + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\smc@TitleAnnexe}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\smc@TitleAnnexe}} + {\FootAnnexePageFont \thepage}% + } +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@firstlexique} +% Style des premières pages du lexique +% \begin{macrocode} +\fancypagestyle{firstlexique}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@firstheadevenannexe{LexiqueHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@firstheadoddannexe{LexiqueHeadFrameColor}% + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\StringLexique}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\StringLexique}} + {\FootAnnexePageFont \thepage}% + } +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@lexique} +% Style des pages suivantes du lexique +% \begin{macrocode} +\fancypagestyle{lexique}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@headevenannexe{LexiqueHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@headoddannexe{LexiqueHeadFrameColor} + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\StringLexique}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\StringLexique}} + {\FootAnnexePageFont \thepage}% + } +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{ps@firstaffichemethode} +% Style des premières pages de la liste des méthodes. +% \begin{macrocode} +\fancypagestyle{firstaffichemethode}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@firstheadevenannexe{ListeMethodeHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@firstheadoddannexe{ListeMethodeHeadFrameColor}% + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\StringListeMethode}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\StringListeMethode}} + {\FootAnnexePageFont \thepage}% + } +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@affichemethode} +% Style des pages suivantes de la liste des méthodes +% \begin{macrocode} +\fancypagestyle{affichemethode}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@headevenannexe{ListeMethodeHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@headoddannexe{ListeMethodeHeadFrameColor} + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\StringListeMethode}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\StringListeMethode}} + {\FootAnnexePageFont \thepage}% + } +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@firstlibre} +% Style des premières pages des textes libres. +% \begin{macrocode} +\fancypagestyle{firstlibre}{% + \fancyhf{} + \fancyfoot[LE]{% + {\ifsmc@page\FootLibrePageFont \thepage\fi} + } + \fancyfoot[RO]{% + {\ifsmc@page\FootLibrePageFont \thepage\fi}% + } +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@libre} +% Style des pages suivantes des textes libres. +% \begin{macrocode} +\fancypagestyle{libre}{% + \fancyhf{} + \fancyfoot[LE]{% + {\ifsmc@page\FootLibrePageFont \thepage\fi} + } + \fancyfoot[RO]{% + {\ifsmc@page\FootLibrePageFont \thepage\fi}% + } +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ps@empty} +% Le style pour les pages vides n'est en fait pas totalement vide : il +% reste le pied de page en cours. On détruit donc uniquement +% l'en-tête. +% \begin{macrocode} +\fancypagestyle{empty}{% + \fancyhead{} +} +% \end{macrocode} +% \end{macro} +% \section{Couleurs} +% Couleurs utilisées tout au long du document. On prend la +% nomenclature du fichier tiré de la maquette Indesign (légèrement +% révisée pour éviter les redondances). +% \begin{macrocode} +\definecolor{A1} {cmyk}{1.00, 0.00, 0.00, 0.50} +\definecolor{A2} {cmyk}{0.60, 0.00, 0.00, 0.10} +\definecolor{A3} {cmyk}{0.30, 0.00, 0.00, 0.05} +\definecolor{A4} {cmyk}{0.10, 0.00, 0.00, 0.00} +\definecolor{B1} {cmyk}{0.00, 1.00, 0.60, 0.40} +\definecolor{B2} {cmyk}{0.00, 0.85, 0.60, 0.15} +\definecolor{B3} {cmyk}{0.00, 0.20, 0.15, 0.05} +\definecolor{B4} {cmyk}{0.00, 0.05, 0.05, 0.00} +\definecolor{C1} {cmyk}{0.00, 1.00, 0.00, 0.50} +\definecolor{C2} {cmyk}{0.00, 0.60, 0.00, 0.20} +\definecolor{C3} {cmyk}{0.00, 0.30, 0.00, 0.05} +\definecolor{C4} {cmyk}{0.00, 0.10, 0.00, 0.05} +\definecolor{D1} {cmyk}{0.00, 0.00, 1.00, 0.50} +\definecolor{D2} {cmyk}{0.20, 0.20, 0.80, 0.00} +\definecolor{D3} {cmyk}{0.00, 0.00, 0.20, 0.10} +\definecolor{D4} {cmyk}{0.00, 0.00, 0.20, 0.05} +\definecolor{F1} {cmyk}{0.00, 0.80, 0.50, 0.00} +\definecolor{F2} {cmyk}{0.00, 0.40, 0.30, 0.00} +\definecolor{F3} {cmyk}{0.00, 0.15, 0.10, 0.00} +\definecolor{F4} {cmyk}{0.00, 0.07, 0.05, 0.00} +\definecolor{G1} {cmyk}{1.00, 0.00, 0.50, 0.00} +\definecolor{G2} {cmyk}{0.50, 0.00, 0.20, 0.00} +\definecolor{G3} {cmyk}{0.20, 0.00, 0.10, 0.00} +\definecolor{G4} {cmyk}{0.10, 0.00, 0.05, 0.00} +\definecolor{H1} {cmyk}{0.40, 0.00, 1.00, 0.10} +\definecolor{H2} {cmyk}{0.20, 0.00, 0.50, 0.05} +\definecolor{H3} {cmyk}{0.10, 0.00, 0.20, 0.00} +\definecolor{H4} {cmyk}{0.07, 0.00, 0.15, 0.00} +\definecolor{J1} {cmyk}{0.00, 0.50, 1.00, 0.00} +\definecolor{J2} {cmyk}{0.00, 0.20, 0.50, 0.00} +\definecolor{J3} {cmyk}{0.00, 0.10, 0.20, 0.00} +\definecolor{J4} {cmyk}{0.00, 0.07, 0.15, 0.00} +\definecolor{FondOuv} {cmyk}{0.00, 0.05, 0.10, 0.00} +\definecolor{FondAutoEvaluation}{cmyk}{0.00, 0.03, 0.15, 0.00} +\definecolor{FondTableaux} {cmyk}{0.00, 0.00, 0.20, 0.00} +\definecolor{FondAlgo} {cmyk}{0.07, 0.00, 0.30, 0.00} +\definecolor{BleuOuv} {cmyk}{1.00, 0.00, 0.00, 0.00} +\definecolor{PartieFonction} {cmyk}{1.00, 0.00, 0.00, 0.00} +\definecolor{PartieGeometrie} {cmyk}{0.80, 0.80, 0.00, 0.00} +% \end{macrocode} +% Les couleurs du bandeau de la partie statistique ont souvent bougé. +% \begin{macrocode} +\definecolor{PartieStatistique} {cmyk}{0.60, 0.95, 0.00, 0.20} +\definecolor{PartieStatistiqueOLD}{cmyk}{0.95, 0.60, 0.20, 0.00} +\definecolor{PartieStatistique*}{cmyk}{0.30, 1.00, 0.00, 0.00} +% \end{macrocode} +% Couleurs qui se sont ajoutées après la première version de la +% maquette qui était accompagnée du nuancier. +% \begin{macrocode} +\definecolor{U1} {cmyk}{0.50, 0.10, 0.00, 0.10} +\definecolor{U2} {cmyk}{0.20, 0.15, 0.00, 0.00} +\definecolor{U3} {cmyk}{0.50, 0.00, 1.00, 0.00} +\definecolor{U4} {cmyk}{0.40, 0.00, 0.00, 0.00} +% \end{macrocode} +% On ajoute le noir, le blanc et quelques gris. +% \begin{macrocode} +\definecolor{Blanc} {cmyk}{0.00, 0.00, 0.00, 0.00} +\definecolor{Gris1} {cmyk}{0.00, 0.00, 0.00, 0.20} +\definecolor{Gris2} {cmyk}{0.00, 0.00, 0.00, 0.40} +\definecolor{Gris3} {cmyk}{0.00, 0.00, 0.00, 0.50} +\definecolor{Noir} {cmyk}{0.00, 0.00, 0.00, 1.00} +% \end{macrocode} +% Les couleurs effectives sont définies en termes des couleurs de +% bases ci-dessous. On commence avec les éléments partagés dans tout +% le document. En particulier, la première définition concerne la +% couleur par défaut qui doit être un noir définie en CMYK pour que +% overprint fonctionne correctement +% \begin{macrocode} +\AtBeginDocument{\def\default@color{cmyk 0 0 0 1}\normalcolor} +\colorlet{AlgoLineColor}{F3} +\colorlet{AlgoBkgColor}{F1} +\colorlet{AlgoTextColor}{Blanc} +\colorlet{TiceLineColor}{A3} +\colorlet{TiceBkgColor}{A1} +\colorlet{TiceTextColor}{Blanc} +\colorlet{CadreLineColor}{D3} +\colorlet{CadreBkgColor}{Blanc} +\colorlet{AlgorithmeRuleColor}{D2} +\colorlet{AlgorithmeBkgColor}{FondAlgo} +\colorlet{CouleurAlgoAffiche}{Noir} +\colorlet{CouleurAlgoDemander}{Noir} +\colorlet{CouleurAlgoSaisir}{Noir} +\colorlet{CouleurAlgoStocker}{Noir} +\colorlet{CouleurAlgoSi}{Noir} +\colorlet{CouleurAlgoTantque}{Noir} +\colorlet{CouleurAlgoPour}{Noir} +\colorlet{CouleurAlgoCalcule}{Noir} +\colorlet{CouleurAlgoInitialiser}{Noir} +\colorlet{CouleurAlgoIncrementer}{Noir} +\colorlet{CouleurAlgoCommentaire}{Noir} +\colorlet{CouleurAlgoDonnerValeur}{Noir} +\colorlet{CommentaireItemColor}{Noir} +\colorlet{FiletTableauColor}{Gris3} +\colorlet{FondSudokuColor}{FondTableaux} +% \end{macrocode} +% Couleurs de la première page. +% +% Les couleurs pour les rectangles de pieds de pied de page sont +% calculées à partir de la couleur du bandeau d'en-tête : on divise +% toutes les composantes par deux. +% \begin{macrocode} +\definecolor{FootFonctionColor}{cmyk}{0.50, 0.00, 0.00, 0.00} +\definecolor{FootGeometrieColor}{cmyk}{0.40, 0.40, 0.00, 0.00} +\definecolor{FootStatistiqueColor}{cmyk}{0.30, 0.48, 0.00, 0.10} +\definecolor{FootStatistiqueOLDColor}{cmyk}{0.48, 0.30, 0.10, 0.00} +\definecolor{FootStatistique*Color}{cmyk}{0.20, 0.00, 0.00, 0.00} +\colorlet{ChapterBottomFrameColor}{J4} +\colorlet{ThemaTopFrameColor}{J1} +\colorlet{ThemaBottomFrameColor}{J2} +\colorlet{ThemaTitleColor}{Blanc} +\colorlet{ChapterNumBkgColor}{H2} +\colorlet{ChapterNumSquare0Color}{Blanc} +\colorlet{ChapterNumSquare1Color}{H1} +\colorlet{ChapterNumSquare2Color}{H2} +\colorlet{ChapterNumSquare3Color}{H4} +\colorlet{ChapterTitleColor}{B1} +\colorlet{ChapAppColor}{Blanc} +\colorlet{ChapterNumColor}{Blanc} +\colorlet{PrerequisTitleColor}{B2} +\colorlet{PrerequisBkgColor}{A4} +\colorlet{PrerequisItemColor}{B2} +\colorlet{AEItemColor}{B2} +\colorlet{AETitleFrame0Color}{Blanc} +\colorlet{AETitleFrame1Color}{B2} +\colorlet{AETitleFrame2Color}{B3} +\colorlet{AETitleFrame3Color}{A4} +\colorlet{AETitleFrame4Color}{A3} +\colorlet{AETitleFrame5Color}{A2} +\colorlet{AETitleColor}{Blanc} +\colorlet{AEExoNumColor}{Blanc} +\colorlet{AEExoNumFrameColor}{J1} +\colorlet{AEFrameColor}{FondAutoEvaluation} +\colorlet{AECartoucheCorrBkgColor}{J2} +\colorlet{AECartoucheCorrArrowColor}{G2} +\colorlet{AECartoucheCorrVCPColor}{B2} +% \end{macrocode} +% Couleurs pour la partie \og Activités d'approche \fg{} ainsi que la +% couleur du numéro de chapitre dans les pieds de page. +% \begin{macrocode} +\colorlet{ActiviteHeadFrame0Color}{Blanc} +\colorlet{ActiviteHeadFrame1Color}{C1} +\colorlet{ActiviteHeadFrame2Color}{C2} +\colorlet{ActiviteHeadFrame3Color}{C3} +\colorlet{ActiviteHeadFrame4Color}{D3} +\colorlet{ActiviteHeadFrame5Color}{G1} +\definecolor{ActiviteFootColor}{cmyk}{0.50, 0.00, 0.25, 0.00} +\colorlet{FootChapterNumColor}{U1} +\colorlet{ActiviteSubtitleColor}{H1} +\colorlet{ActiviteNumColor}{Blanc} +\colorlet{ActiviteDebatTopColor}{G4} +\colorlet{ActiviteDebatBottomColor}{D4} +\colorlet{ActiviteActiviteTopColor}{D3} +\colorlet{ActiviteActiviteBottomColor}{G2} +\colorlet{ActiviteTitleColor}{C1} +\colorlet{ActiviteItemColor}{C1} +\colorlet{ActivitePartieColor}{A2} +% \end{macrocode} +% Couleurs pour la partie \og Cours - Méthodes \fg{}. +% \begin{macrocode} +\colorlet{CoursHeadFrame0Color}{Blanc} +\colorlet{CoursHeadFrame1Color}{J1} +\colorlet{CoursHeadFrame2Color}{J2} +\colorlet{CoursHeadFrame3Color}{J4} +\colorlet{CoursHeadFrame4Color}{A3} +\colorlet{CoursHeadFrame5Color}{A2} +\definecolor{CoursFootColor}{cmyk}{0.15, 0.00, 0.00, 0.03} +\colorlet{SectionFrame1Color}{J4} +\colorlet{SectionFrame2Color}{J2} +\colorlet{SectionFrame3Color}{J1} +\colorlet{SectionNumColor}{A1} +\colorlet{SectionTitleColor}{A1} +\colorlet{SubsectionNumColor}{B2} +\colorlet{SubsectionTitleColor}{J1} +\colorlet{DefSquareColor}{B2} +\colorlet{DefTitleColor}{A1} +\colorlet{DefSubtitleColor}{B2} +\colorlet{DefItemColor}{B2} +\colorlet{DefFrameColor}{J3} +\colorlet{RemTitleColor}{H1} +\colorlet{RemItemColor}{H1} +\colorlet{ExempleRuleColor}{J1} +\colorlet{ExempleEdgeFrameColor}{J2} +\colorlet{ExempleBkgFrameColor}{F4} +\colorlet{ExempleTitleColor}{A1} +\colorlet{ExempleItemColor}{J1} +\colorlet{MethodeTitleFrameColor}{A2} +\colorlet{MethodeTitleColor}{Blanc} +\colorlet{MethodeSubtitleColor}{B2} +\colorlet{MethodeIntroBkgFrameColor}{A4} +\colorlet{ExAppEdgeFrameColor}{A2} +\colorlet{ExAppBkgFrameColor}{H1} +\colorlet{ExAppTitleColor}{Blanc} +\colorlet{ExAppCorrEdgeFrameColor}{H1} +\colorlet{ExAppCorrBkgFrameColor}{A2} +\colorlet{ExAppCorrTitleColor}{Blanc} +\colorlet{ExAppItemColor}{A2} +\colorlet{MethodeRuleColor}{A3} +\colorlet{ProofRuleColor}{B1} +\colorlet{ProofTitleColor}{A1} +\colorlet{ProofTopFrameColor}{B4} +\colorlet{ProofBottomFrameColor}{B3} +\colorlet{ProofTriangleFrameColor}{B1} +\colorlet{ProofItemColor}{J2} +% \end{macrocode} +% Couleurs pour la partie \og Exercices de base \fg{}. +% \begin{macrocode} +\colorlet{ExoBaseHeadFrame0Color}{Blanc} +\colorlet{ExoBaseHeadFrame1Color}{G1} +\colorlet{ExoBaseHeadFrame2Color}{G2} +\colorlet{ExoBaseHeadFrame3Color}{G4} +\colorlet{ExoBaseHeadFrame4Color}{J2} +\colorlet{ExoBaseHeadFrame5Color}{J1} +\definecolor{ExoBaseFootColor}{cmyk}{0.00, 0.25, 0.50, 0.00} +\colorlet{ExerciceColumnRuleColor}{J1} +\colorlet{ExercicesTitleColor}{C1} +\colorlet{ExercicesTitleVRuleColor}{G2} +\colorlet{ExercicesTitleSquareColor}{J1} +\colorlet{ExercicesTitleHRuleColor}{C3} +\colorlet{ExerciceNumColor}{Blanc} +\colorlet{ExerciceTitleColor}{F1} +\colorlet{ExerciceNumFrameColor}{G1} +\colorlet{ExerciceCorrigeNumFrameColor}{J1} +\colorlet{ExerciceItemColor}{G1} +\colorlet{ExercicePartieColor}{J1} +\colorlet{ExerciceRefMethodeColor}{A2} +% \end{macrocode} +% Couleurs pour la partie \og Exercices d'approfondissement \fg{}. +% \begin{macrocode} +\colorlet{ExoApprHeadFrame0Color}{Blanc} +\colorlet{ExoApprHeadFrame1Color}{G1} +\colorlet{ExoApprHeadFrame2Color}{G2} +\colorlet{ExoApprHeadFrame3Color}{G4} +\colorlet{ExoApprHeadFrame4Color}{J2} +\colorlet{ExoApprHeadFrame5Color}{J1} +\definecolor{ExoApprFootColor}{cmyk}{0.00, 0.25, 0.50, 0.00} +% \end{macrocode} +% Couleurs pour la partie \og Je teste mes connaissances \fg{}. +% \begin{macrocode} +\colorlet{ConnHeadFrame0Color}{Blanc} +\colorlet{ConnHeadFrame1Color}{A2} +\colorlet{ConnHeadFrame2Color}{A3} +\colorlet{ConnHeadFrame3Color}{J2} +\colorlet{ConnHeadFrame4Color}{J1} +\colorlet{ConnHeadFrame5Color}{F1} +\colorlet{ConnFootColor}{F2} +\colorlet{AcquisTitleColor}{G1} +\colorlet{AcquisBkgColor}{A4} +\colorlet{AcquisItemColor}{F1} +\colorlet{QCMAEFrameColor}{G1} +\colorlet{QCMAETitleCircle1Color}{J1} +\colorlet{QCMAETitleCircle2Color}{J2} +\colorlet{QCMAETitleCircle3Color}{F1} +\colorlet{QCMAETitleColor}{Blanc} +\colorlet{QCMItemNumColor}{G1} +\colorlet{QCMFrameColor}{J1} +\colorlet{QCMTextFrameColor}{Blanc} +\colorlet{QCMExoNumColor}{Blanc} +\colorlet{QCMExoNumFrameColor}{J1} +\colorlet{QCMLineColor}{A4} +% \end{macrocode} +% Couleurs pour la partie \og Travaux pratiques \fg{} et pour la +% partie Récréation, énigmes. +% \begin{macrocode} +\colorlet{TPHeadFrame0Color}{Blanc} +\colorlet{TPHeadFrame1Color}{H1} +\colorlet{TPHeadFrame2Color}{H2} +\colorlet{TPHeadFrame3Color}{H3} +\colorlet{TPHeadFrame4Color}{C3} +\colorlet{TPHeadFrame5Color}{C2} +\definecolor{TPFootColor}{cmyk}{0.00, 0.30, 0.00, 0.10} +\colorlet{TPTopColor}{J3} +\colorlet{TPBottomColor}{C3} +\colorlet{TPTitleColor}{H1} +\colorlet{TPPartieColor}{J1} +\colorlet{TPPartieBkgColor}{C2} +\colorlet{TPPartieNumColor}{Blanc} +\colorlet{RecreationHeadFrame0Color}{Blanc} +\colorlet{RecreationHeadFrame1Color}{J1} +\colorlet{RecreationHeadFrame2Color}{J2} +\colorlet{RecreationHeadFrame3Color}{H4} +\colorlet{RecreationHeadFrame4Color}{H2} +\colorlet{RecreationHeadFrame5Color}{H1} +\definecolor{RecreationFootColor}{cmyk}{0.20, 0.00, 0.50, 0.05} +\colorlet{RecreationTitleColor}{H1} +\colorlet{RecreationItemColor}{U3} +\colorlet{RecreationPartieColor}{J1} +% \end{macrocode} +% Couleurs pour la partie \og corrigés \fg (partie annexe). +% \begin{macrocode} +\colorlet{CorrigeHeadFrameColor}{J2} +\colorlet{CorrigeColumnRuleColor}{J1} +\colorlet{CorrigeAETitleColor}{F1} +\colorlet{CorrigeExercicesBaseTitleColor}{C2} +\colorlet{CorrigeExercicesApprTitleColor}{C2} +\colorlet{CorrigeConnaissancesTitleColor}{G1} +\colorlet{CorrigeQCMItemNumColor}{G1} +% \end{macrocode} +% Couleurs pour la liste des méthodes +% \begin{macrocode} +\colorlet{ListeMethodeHeadFrameColor}{G3} +\colorlet{ListeMethodeColumnRuleColor}{A1} +\colorlet{ListeMethodeTitleColor}{B2} +% \end{macrocode} +% Couleurs pour les annexes générales +% \begin{macrocode} +\colorlet{TablePropertyBkgColor}{J4} +\colorlet{TablePropertyTitleBkgColor}{PartieStatistique} +\colorlet{TablePropertyTitleTextColor}{Blanc} +\colorlet{AnnexePartieColor}{A1} +% \end{macrocode} +% Couleurs pour le lexique +% \begin{macrocode} +\colorlet{LexiqueHeadFrameColor}{F2} +\colorlet{LexiqueColumnRuleColor}{B2} +\colorlet{FirstLetterTxtColor}{B1} +\colorlet{FirstLetterBkgColor}{J3} +\colorlet{LexiqueEntreeColor}{B2} +\colorlet{LexiqueItemColor}{B2} +% \end{macrocode} +% Couleurs pour le texte libre. +% \begin{macrocode} +\colorlet{LibrePartieColor}{A1} +% \end{macrocode} +% \section{Fontes} +% Fontes utilisées tout au long du document. La macro |\selectfont| à +% la suite de |\fontsize| n'est obligatoire que dans la mesure où il +% n'y a pas d'autres commandes \LaTeX{} de modification de fonte. On +% commence avec les fontes partagées pour tout le document. +% \begin{macrocode} +\newcommand*\AlgoFont{\fontsize{9.5}{9.5}\sffamily\bfseries} +\newcommand*\TiceFont{\fontsize{9.5}{9.5}\sffamily\bfseries} +% \end{macrocode} +% Fontes de la page de titre. +% \begin{macrocode} +\newcommand*\ThemaTitleFont{\fontsize{20}{24}\sffamily} +\newcommand*\ChapterTitleFont{\fontsize{40}{40}\sffamily\bfseries} +\newcommand*\ChapAppFont{\fontsize{15}{18}\sffamily} +\newcommand*\ChapterNumFont{\fontsize{88}{106}\sffamily} +\newcommand*\PrerequisTitleFont{\fontsize{14.4}{17.28}\sffamily\bfseries} +\newcommand*\PrerequisTextFont{\fontsize{9.5}{14.4}\sffamily} +\newcommand*\AETitleFont{\fontsize{15}{18}\sffamily\bfseries} +\newcommand*\AEExoNumFont{\fontsize{9.5}{14.4}\sffamily\bfseries} +\newcommand*\AECartoucheCorrArrowFont{\fontsize{12}{14.4}} +\newcommand*\AECartoucheCorrVCPFont{\fontsize{9.5}{14.4}\sffamily} +\newcommand*\AEManuelFont{\fontsize{9.5}{10.5}\sffamily} +\newcommand*\LogoManuelFont{\fontsize{9.5}{10.5}\sffamily\bfseries} +\newcommand*\LogoURLManuelFont{\fontsize{9.5}{10.5}\sffamily\bfseries} +% \end{macrocode} +% Fontes pour les en-têtes et pied de page. +% \begin{macrocode} +\newcommand*\HeadTitleFont{\fontsize{24}{28.8}\sffamily\bfseries} +\newcommand*\RoundHeadTitleFont{\fontsize{24}{28.8}\sffamily\bfseries\itshape} +\newcommand*\FootChapterNumFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\FootTitleHeadFont{\fontsize{9.5}{12}\sffamily\bfseries} +\newcommand*\FootTitleChapterFont{\fontsize{9.5}{12}\sffamily} +\newcommand*\FootPageFont{\fontsize{9.5}{12}\sffamily\bfseries} +% \end{macrocode} +% Fontes pour la partie Activités d'approche +% \begin{macrocode} +\newcommand*\ActiviteTitleFont{\fontsize{15}{18}\sffamily\bfseries} +\newcommand*\ActiviteNumFont{\fontsize{15}{18}\sffamily\bfseries} +\newcommand*\ActiviteSubtitleFont{\fontsize{15}{18}\sffamily\bfseries} +\newcommand*\ActivitePartieFont{\fontsize{12}{14.4}\sffamily\bfseries} +% \end{macrocode} +% Fontes pour la partie Cours - Méthodes. +% \begin{macrocode} +\newcommand*\SectionNumFont{\fontsize{21}{25}\sffamily\bfseries} +\newcommand*\SectionTitleFont{\fontsize{17.28}{21}\sffamily\bfseries} +\newcommand*\SubsectionNumFont{\fontsize{17.28}{21}\sffamily\bfseries} +\newcommand*\SubsectionTitleFont{\fontsize{14.4}{17.28}\sffamily\bfseries} +\newcommand*\DefTitleFont{\fontsize{12}{14.4}\sffamily} +\newcommand*\DefSubtitleFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\RemTitleFont{\fontsize{9.5}{14.4}\scshape\bfseries} +\newcommand*\ExempleTitleFont{\fontsize{9.5}{14.4}\sffamily} +\newcommand*\MethodeTitleFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\MethodeSubtitleFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\MethodeRefExerciceFont{\fontsize{9.5}{14.4}\sffamily} +\newcommand*\ExAppTitleFont{\normalsize\sffamily} +\newcommand*\ExAppCorrTitleFont{\normalsize\sffamily} +\newcommand*\ProofTitleFont{\fontsize{9.5}{14.4}\sffamily} +% \end{macrocode} +% Fontes pour les parties Exercices de base et Exercices +% d'approfondissement. +% \begin{macrocode} +\newcommand*\ExercicesTitleFont{\fontsize{14.4}{17.28}\sffamily\bfseries} +\newcommand*\ExerciceNumFont{\fontsize{10.5}{14.4}\sffamily\bfseries} +\newcommand*\ExerciceTitleFont{\fontsize{10.5}{14.4}\sffamily\bfseries} +\newcommand*\ExercicePartieFont{\fontsize{10.5}{14.4}\bfseries} +\newcommand*\ExerciceRefMethodeFont{\fontsize{9.5}{14.4}\sffamily\bfseries} +\newcommand*\ExercicePageRefMethodeFont{\fontsize{9.5}{14.4}\sffamily} +% \end{macrocode} +% Fontes pour la partie Je teste mes connaissances. +% \begin{macrocode} +\newcommand*\AcquisTitleFont{\fontsize{17.28}{17.28}\sffamily\bfseries} +\newcommand*\AcquisTextFont{\fontsize{9.5}{14.4}\sffamily} +\newcommand*\QCMAETitleFont{\fontsize{20}{20}\sffamily\bfseries} +\newcommand*\QCMAEManuelFont{\fontsize{9.5}{10.5}\sffamily} +\newcommand*\QCMAETextAfterTitleFont{\bfseries} +\newcommand*\QCMExoNumFont{\fontsize{9.5}{14.4}\sffamily\bfseries} +\newcommand*\QCMItemNumFont{\fontsize{9.5}{14.4}\sffamily\bfseries} +% \end{macrocode} +% Fontes pour la partie TP. +% \begin{macrocode} +\newcommand*\TPPartieFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\RecreationFont{\fontsize{20}{20}\scriptfamily\bfseries} +\newcommand*\RecreationTitleFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\RecreationPartieFont{\fontsize{10}{14.4}\scshape\bfseries} +\newcommand*\RecreationPartieTitleFont{\fontsize{10}{14.4}\bfseries} +% \end{macrocode} +% Fontes pour la liste des méthodes. +% \begin{macrocode} +\newcommand*\ListeMethodeChapterFont{\fontsize{40}{40}\sffamily} +\newcommand*\ListeMethodeTitleFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\ListeMethodePageFont{\fontsize{12}{14.4}\sffamily\bfseries} +% \end{macrocode} +% Fontes pour la partie Corrigés (annexe). +% \begin{macrocode} +\newcommand*\CorrigeTitleFont{\fontsize{40}{40}\sffamily} +\newcommand*\CorrigeChapterFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\CorrigePartieFont{\fontsize{11}{14.4}\sffamily\bfseries} +\newcommand*\CorrigeNumExerciceFont{\fontsize{9.5}{14.4}\sffamily\bfseries} +\newcommand*\CorrigeQCMItemNumFont{\fontsize{9.5}{14.4}\sffamily} +% \end{macrocode} +% Fontes pour les annexes générales. +% \begin{macrocode} +\newcommand*\FootAnnexeTxtFont{\fontsize{11}{14.4}\sffamily} +\newcommand*\FootAnnexePageFont{\fontsize{11}{14.4}\sffamily\bfseries} +\newcommand*\AnnexeTitleFont{\fontsize{35}{35}\sffamily} +\newcommand*\AnnexeSectionTitleFont{\fontsize{14.4}{14.4}\sffamily\bfseries} +\newcommand*\ProprieteFont{\fontsize{10}{14.4}\sffamily} +\newcommand*\NumProprieteFont{\fontsize{10}{14.4}\sffamily\bfseries} +\newcommand*\AnnexePartieFont{\fontsize{10.5}{14.4}\bfseries} +% \end{macrocode} +% Fontes pour le lexique. +% \begin{macrocode} +\newcommand*\LexiqueTitleFont{\fontsize{50}{50}\sffamily} +\newcommand*\FirstLetterFont{\fontsize{16}{16}\sffamily\bfseries} +\newcommand*\LexiqueEntreeFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\LexiqueFont{\sffamily\upshape\bfseries} +% \end{macrocode} +% Fontes pour le texte libre. +% \begin{macrocode} +\newcommand*\FootLibrePageFont{\fontsize{11}{14.4}\sffamily\bfseries} +\newcommand*\LibreSectionTitleFont{\fontsize{14.4}{14.4}\sffamily\bfseries} +\newcommand*\LibrePartieFont{\fontsize{10.5}{14.4}\bfseries} +% \end{macrocode} +% \section{Longueurs} +% Longueurs utilisées tout au long du document. Il n'est pas +% nécessaire que ce soit des registres de dimensions. On commence avec +% les longueurs utilisées pour l'ensemble du document. +% +% Longueurs pour les en-têtes et pieds de page de tout le document. +% \begin{macrocode} +\def\SquareWidth{3mm} +\def\ItemRuleWidth{1.5mm} +\def\ItemRuleHeight{1.5mm} +\def\ItemRuleDepth{0mm} +\def\ListLabelWidth{4mm} +\def\EnumerateLabelWidth{5mm} +\def\ListHSep{2mm} +\def\AlgorithmeRuleWidth{1pt} +\def\AlgorithmeSep{2mm} +\def\AlgorithmeNumWidth{6mm} +\def\HeadFrameWidth{11cm} +\def\RoundHeadFrameWidth{12.8cm} +\def\HeadTitleSep{1cm} +\edef\HeadTitleMaxWidth + {\the\dimexpr \HeadFrameWidth-\SquareWidth*3-\HeadTitleSep} +\edef\RoundHeadTitleMaxWidth + {\the\dimexpr \RoundHeadFrameWidth-\SquareWidth*3-\HeadTitleSep} +\edef\HeadFrameHeight{\the\dimexpr \smc@margintop-\smc@headsep} +\def\HeadFrameDepth{3mm} +\def\FootFrameWidth{6mm} +\def\FootFrameSep{1mm} +\def\AlgoIndent{1em} +% \end{macrocode} +% Longueurs pour les différents cadres. +% \begin{macrocode} +\def\CadreSep{2mm} +\def\CadreLineWidth{0.5mm} +\def\FrameSep{3mm} +\def\FrameLineWidth{1pt} +\edef\FrameArc{\the\dimexpr \SquareWidth/2} +\def\RuleWidth{1pt} +\def\BeforeCadreVSpace{1.5mm} +\def\AfterCadreVSpace{1.5mm} +\def\BeforeTableVSpace{1.5mm} +\def\AfterTableVSpace{1.5mm} +\def\HabillageGap{2mm} +\def\LogoLineWidth{1pt} +\def\BeforeAlgorithmeVSpace{1.5mm} +\def\AfterAlgorithmeVSpace{1.5mm} +% \end{macrocode} +% Viennent ensuite les longueurs spécifiques à chaque partie du +% document. +% +% Longueurs pour la page de titre. +% \begin{macrocode} +\edef\ChapterTopFrameHeight{\the\dimexpr 2.1cm+\smc@bleed} +\def\ChapterBottomFrameHeight{6cm} +\edef\ChapterTotalFrameHeight{% + \the\dimexpr\ChapterTopFrameHeight+\ChapterBottomFrameHeight} +\def\ChapterBottomPicture{5.5cm} +\def\ChapterNumLeftFrame{13.4cm} +% \end{macrocode} +% Les longueurs basées sur |\linewidth| ne peuvent être calculées +% qu'au moment du |\begin{document}|. +% \begin{macrocode} +\AtBeginDocument{% + \edef\ChapterTitleThemaWidth{% + \the\dimexpr\linewidth-\ChapterNumLeftFrame-6mm + }% +} +\def\ChapterNumBase{3.6cm} +\def\ChapterNumBottomFrame{2.1cm} +\edef\ChapterNumTopFrame{\the\dimexpr 8.1cm+\smc@bleed} +\def\ChapterTitleBase{2.1cm} +\def\ChapterTitleSep{1cm} +\def\ThemaBottomFrame{5.7cm} +\def\ThemaTopFrame{6.6cm} +\def\PrerequisTitleVSpace{1mm} +\def\AETitleWidth{8cm} +\edef\AETitleHeight{\the\dimexpr \SquareWidth*3} +\def\AEFrameVSep{4mm} +\edef\AEFrameHSep{\SquareWidth} +\edef\AEFrameRuleWidth{\the\dimexpr\SquareWidth/2} +\edef\AEExoFrameWidth{\the\dimexpr \SquareWidth*2} +\def\AEExoFrameTopSep{1mm} +\def\AfterAEExoFrameHSpace{2mm} +\def\AECartoucheCorrSep{4mm} +\def\AECartoucheCorrHeight{6mm} +\def\AECartoucheCorrWidth{50mm} +\def\AEManuelWidth{55mm} +\def\AEManuelRightSpace{1mm} +\def\AELogoManuelWidth{9mm} +\def\AfterAEManuelVSpace{3mm} +% \end{macrocode} +% Longueurs pour la partie Activités d'approche. +% \begin{macrocode} +\def\BeforeActiviteVSpace{5mm} +% \end{macrocode} +% Pour la longueur suivante, comme on fait beaucoup de calcul où +% interviennent une multiplication par $\sqrt{2}$ ou par +% $\frac{\sqrt{2}}{2}$, on va en faire un registre de longueur au lieu +% d'une macro. +% \begin{macrocode} +\newdimen\ActiviteTitleTopHeight +\ActiviteTitleTopHeight 6mm +\def\ActiviteTitleBottomHeight{1.5mm} +\def\ActiviteTitleLeftSpace{2mm} +\def\ActiviteTitleRightSpace{1mm} +\def\AfterActiviteTitleHSpace{2mm} +\def\AfterActiviteTitleVSpace{3mm} +\def\BeforeActivitePartieVSpace{1.5mm} +\def\AfterActivitePartieVSpace{1mm} +% \end{macrocode} +% Longueurs pour la partie Cours - Méthodes. +% \begin{macrocode} +\def\BeforeSectionVSpace{10mm} +\def\AfterSectionVSpace{2mm} +\def\SectionNumTitleHSpace{3mm} +\def\SectionCorrectionChassePoint{-0.25pt} +\def\BeforeSubsectionVSpace{4mm} +\def\AfterSubsectionVSpace{1mm} +\def\BeforeDefVSpace{3mm} +\def\AfterDefVSpace{1.5mm} +\def\DefFrameHSep{3mm} +\def\DefFrameVSep{1mm} +\def\DefTitleFrameVSep{1mm} +\def\BeforeRemVSpace{3mm} +\def\AfterRemVSpace{1.5mm} +\def\BeforeExempleVSpace{4mm} +\def\ExempleVRuleWidthFrame{1.25mm} +\def\ExempleHRuleWidthFrame{0.75mm} +\def\ExempleWidthFrame{15mm} +\def\ExempleHeightFrame{3mm} +\def\BeforeMethodeVSpace{3mm} +\edef\MethodeTitleLeftSpace{\SquareWidth} +\edef\MethodeTitleRightSpace{\SquareWidth} +\def\MethodeSubtitleLeftSpace{2mm} +\def\AfterMethodeTitleVspace{1.5mm} +\def\MethodeFrameHSep{3mm} +\def\MethodeFrameTopSep{2mm} +\def\MethodeFrameBottomSep{1mm} +\def\ExAppWidthFrame{30mm} +\def\ExAppHeightFrame{3mm} +\def\ExAppDepthFrame{0.75mm} +\def\ExAppCorrWidthFrame{15mm} +\def\ExAppCorrHeightFrame{3mm} +\def\ExAppCorrDepthFrame{0.75mm} +\def\AfterCartoucheHSpace{1.5mm} +\def\AfterExAppMethodeVSpace{3mm} +\def\BeforeProofVSpace{3mm} +\def\AfterProofVSpace{1.5mm} +\def\ProofHeightFrame{3mm} +\def\ProofDepthFrame{0.75mm} +\def\ProofLeftSpace{1mm} +\def\ProofRightSpace{1.5mm} +\def\AfterProofTitleHSpace{1.5mm} +% \end{macrocode} +% Longueurs pour les parties Exercices de base et Exercices +% d'approfondissement. +% \begin{macrocode} +\def\BeforeExercicesTitleVSpace{3mm} +\def\AfterExercicesTitleVSpace{1.5mm} +\def\ExercicesTitleHSep{3mm} +\def\ExercicesTitleVSep{2mm} +\def\BeforeExerciceVSpace{1.5mm} +\def\ExerciceNumFrameWidth{6mm} +\def\ExerciceNumFrameHeight{3.25mm} +\def\ExerciceNumFrameDepth{0.75mm} +\def\ExerciceTextHSep{2mm} +\def\BeforeExercicePartieVSpace{1.5mm} +\def\AfterExercicePartieVSpace{1mm} +% \end{macrocode} +% Longueurs pour la partie Je teste mes connaissances. +% \begin{macrocode} +\def\AcquisTitleVSpace{1mm} +\def\BeforeQCMAEVSpace{6mm plus2mm minus2mm} +\def\QCMAETitleHeight{9mm} +\def\QCMAETitleWidth{110mm} +\def\QCMAETitleLeftSpace{17mm} +\def\QCMAEManuelWidth{40mm} +\def\QCMAEManuelRightSpace{1mm} +\def\QCMAELogoManuelWidth{9mm} +\def\AfterQCMAEManuelVSpace{0mm} +\def\AfterQCMAETitleVSpace{5mm plus2mm minus1mm} +\def\AfterQCMAETextVSpace{3mm plus1mm minus1mm} +\def\QCMRefHSep{1pt} +\edef\QCMExoFrameWidth{\the\dimexpr \SquareWidth*2} +\def\QCMExoFrameTopSep{1mm} +\def\AfterQCMExoFrameHSpace{2mm} +\def\QCMLabelWidth{6mm} +\def\BeforeQCMVSpace{2mm plus1mm minus1mm} +\def\AfterQCMVSpace{0mm plus1mm} +\def\QCMLineWidth{2mm} +\def\QCMFrameSep{1mm} +\edef\QCMLineArc{\SquareWidth} +% \end{macrocode} +% Longueurs pour la partie TP +% \begin{macrocode} +\def\BeforeTPPartieVSpace{3mm plus1mm minus1mm} +\def\AfterTPPartieVSpace{0mm plus1mm} +\def\TPPartieHSep{2mm} +\def\BeforeRecreationVSpace{6mm} +\def\AfterRecreationVSpace{3mm} +\def\BeforeRecreationPartieVSpace{1.5mm minus 1mm} +\def\AfterRecreationPartieVSpace{1mm minus 0.5mm} +% \end{macrocode} +% Longueurs pour la liste des méthodes. +% \begin{macrocode} +\def\ListeMethodeRuleWidth{0.2pt} +\def\AfterMethodeVSpace{3pt} +\def\TriangleMethodeSize{1ex} +% \end{macrocode} +% Longueurs pour la partie corrigés (annexe). +% \begin{macrocode} +\def\CorrigeRuleWidth{0.2pt} +\def\CorrigeHeadFrameWidth{9mm} +\def\CorrigeChapterFrameHeight{5mm} +\def\BeforeCorrigePartieTitleVSpace{1mm minus 0.5mm} +\def\BeforeCorrigeChapterVspace{3mm plus1mm minus1mm} +\def\QCMHSep{1mm} +% \end{macrocode} +% Longueurs pour les annexes générales. +% \begin{macrocode} +\def\BeforeAnnexeTitleVSpace{-20mm} +\def\AfterAnnexeTitleVSpace{0mm plus0.5mm} +\edef\AnnexeSectionRuleWidth{\SquareWidth} +\def\AnnexeSectionRuleHSpace{1mm} +\def\BeforeAnnexeSectionVSpace{5mm} +\def\AfterAnnexeSectionVSpace{2mm} +\def\BeforeAnnexePartieVSpace{1.5mm} +\def\AfterAnnexePartieVSpace{1mm} +% \end{macrocode} +% Longueurs pour le lexique. +% \begin{macrocode} +\def\LexiqueRuleWidth{0.2pt} +\def\AfterFirstLetterVSpace{2mm} +\def\BeforeFirstLetterVSpace{2mm} +\def\FirstLetterFrameHSep{1mm} +\def\AfterEntreeVSpace{5mm} +% \end{macrocode} +% Longueurs pour les textes libres. +% \begin{macrocode} +\edef\LibreSectionRuleWidth{\SquareWidth} +\def\LibreSectionRuleHSpace{1mm} +\def\BeforeLibreSectionVSpace{5mm} +\def\AfterLibreSectionVSpace{2mm} +\def\BeforeLibrePartieVSpace{1.5mm} +\def\AfterLibrePartieVSpace{1mm} +% \end{macrocode} +% \section{Textes fixes} +% La classe propose un certain nombre de textes fixes qui vont être +% définis ici. Les macros sont rendus publiques pour pouvoir les +% modifier facilement si besoin. +% +% Attention, en cas d'utilisation de codage autre que UTF-8 ainsi que +% pour éviter des erreurs lors de développement précoce de macros, +% toutes les diacritiques seront codées \og à la \TeX{} \fg{}. +% \begin{macrocode} +\newcommand*\StringColitemize{colitemize} +\newcommand*\StringColenumerate{colenumerate} +\newcommand*\StringPrerequis{Connaissances du coll\`ege + n\'ecessaires \`a ce chapitre} +\newcommand*\StringActivitesApproche{Activit\'es d'approche} +\newcommand*\StringCoursMethodes{Cours~-~M\'ethodes} +\newcommand*\StringExercicesBase{S'entra\^iner} +\newcommand*\StringExercicesAppr{Approfondir} +\newcommand*\StringTestConnaissances{Je teste mes connaissances} +\newcommand*\StringConnaissances{Auto-\'evaluation QCM} +\newcommand*\StringTravauxPratiques{Travaux pratiques} +\newcommand*\StringAE{Auto-\'evaluation} +\newcommand*\StringVoirCorriges{Voir solutions p.} +\newcommand*\StringManuel{Des ressources num\'eriques pour pr\'eparer + le chapitre sur + \textcolor{U4}{\LogoURLManuelFont manuel.sesamath.net}} +\newcommand*\StringALGO{ALGO} +\newcommand*\StringTICE{INFO} +\newcommand*\StringRecreation{R\'ecr\'eation, \'enigmes} +\newcommand*\StringAcquisTitle{\`A la fin de ce chapitre, je dois + \^etre capable de\,:} +\newcommand*\StringQCMAE{QCM d'auto-\'evaluation} +% \end{macrocode} +% La chaîne |\StringQCM| ne doit pas être modifiée. +% \begin{macrocode} +\newcommand*\StringQCM{QCM} +\newcommand*\StringChapitre{Chapitre} +\newcommand*\StringEnigme{\'Enigme} +\newcommand*\StringPropriete{Propri\'et\'e} +\newcommand*\StringPROPRIETE{PROPRI\'ET\'E} +\newcommand*\StringDEFINITION{D\'EFINITION} +\newcommand*\StringTHEOREME{TH\'EOR\`EME} +\newcommand*\StringLexique{Lexique} +% \end{macrocode} +% Le logo utilisé pour indiquer que le manuel se trouve sur internet +% n'est pas à proprement parler une chaîne de caractères mais on va +% tout de même le définir ici. En revanche, il faut tous les +% renseignements inclus dans la macro. +% \begin{macrocode} +\newcommand*\LogoManuel{\textcolor{U4}{\LogoManuelFont @}} +\newcommand\StringDEBAT{D\'EBAT} +\newcommand\StringACTIVITE{ACTIVIT\'E} +\newcommand\StringTP{TP} +\newcommand*\StringExemple{Exemple} +\newcommand*\StringCorrection{Correction} +\newcommand*\StringMETHODE{M\'ETHODE} +\newcommand*\StringPREUVE{PREUVE} +\newcommand*\StringMethode{M\'ethode} +\newcommand*\StringExApp{Exercice d'application} +\newcommand*\StringPartie{Partie} +\newcommand*\StringListeMethode{Liste des m\'ethodes} +\newcommand*\StringCorriges{Solutions} +\newcommand*\StringListeMethodeF{Fonctions} +\newcommand*\StringListeMethodeG{G\'eom\'etrie} +\newcommand*\StringListeMethodeSP{Stat. et probabilit\'es} +% \end{macrocode} +% \section{Éléments graphiques particuliers} +% \begin{macro}{\smc@diagonal} +% Plusieurs éléments graphiques utilisent des carrés disposés en +% diagonale avec des couleurs dégradées, cette commande permet de +% construire l'ensemble de ces carrés de façon automatique. Le +% principe est que les coordonnées indiquent le coin inférieur gauche +% du carré inférieur gauche et que le second paramètre indique le nom +% de base \texttt{} pour retrouver les couleurs. Les noms des +% couleurs sont construits selon le principe \texttt{Color} +% où \texttt{} est un nombre de 1 à 5. Il aurait été plus simple de +% le faire avec un |\rput| mais bizarrement \XeLaTeX{} semble ne pas +% bien gérer la situation (il y a un petit décalage que je ne +% m'explique pas : très peu vers le haut et un peu plus vers la +% gauche). +% \begin{macrocode} +\def\smc@diagonal(#1,#2)#3{% + \psframe[linewidth=0pt, linestyle=none, fillcolor=#33Color] + (\dimexpr #1, \dimexpr #2) + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#32Color] + (\dimexpr #1+\SquareWidth, \dimexpr #2) + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#31Color] + (\dimexpr #1+\SquareWidth*2, \dimexpr #2) + (\dimexpr #1+\SquareWidth*3, \dimexpr #2+\SquareWidth) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#34Color] + (\dimexpr #1, \dimexpr #2+\SquareWidth) + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth*2) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#33Color] + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth) + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth*2) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#32Color] + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth) + (\dimexpr #1+\SquareWidth*3, \dimexpr #2+\SquareWidth*2) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#35Color] + (\dimexpr #1, \dimexpr #2+\SquareWidth*2) + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth*3) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#34Color] + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth*2) + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth*3) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#33Color] + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth*2) + (\dimexpr #1+\SquareWidth*3, \dimexpr #2+\SquareWidth*3) + \ignorespaces +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@antidiagonal} +% C'est exactement la même chose que la macro précédente mais +% l'orientation se fait selon la diagonale non principale. +% \begin{macrocode} +\def\smc@antidiagonal(#1,#2)#3{% + \psframe[linewidth=0pt, linestyle=none, fillcolor=#31Color] + (\dimexpr #1, \dimexpr #2) + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#32Color] + (\dimexpr #1+\SquareWidth, \dimexpr #2) + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#33Color] + (\dimexpr #1+\SquareWidth*2, \dimexpr #2) + (\dimexpr #1+\SquareWidth*3, \dimexpr #2+\SquareWidth) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#32Color] + (\dimexpr #1, \dimexpr #2+\SquareWidth) + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth*2) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#33Color] + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth) + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth*2) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#34Color] + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth) + (\dimexpr #1+\SquareWidth*3, \dimexpr #2+\SquareWidth*2) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#33Color] + (\dimexpr #1, \dimexpr #2+\SquareWidth*2) + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth*3) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#34Color] + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth*2) + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth*3) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#35Color] + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth*2) + (\dimexpr #1+\SquareWidth*3, \dimexpr #2+\SquareWidth*3) + \ignorespaces +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@rounddiagonal} +% Même chose que les carrés en diagonal mais avec des disques en diagonal +% \begin{macrocode} +\def\smc@rounddiagonal(#1,#2)#3{% + \pscircle*[linecolor=#33Color] + (\dimexpr #1+\SquareWidth/2, + \dimexpr #2+\SquareWidth/2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#32Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth, + \dimexpr #2+\SquareWidth/2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#31Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth*2, + \dimexpr #2+\SquareWidth/2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#34Color] + (\dimexpr #1+\SquareWidth/2, + \dimexpr #2+\SquareWidth/2+\SquareWidth) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#33Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth, + \dimexpr #2+\SquareWidth/2+\SquareWidth) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#32Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth*2, + \dimexpr #2+\SquareWidth/2+\SquareWidth) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#35Color] + (\dimexpr #1+\SquareWidth/2, + \dimexpr #2+\SquareWidth/2+\SquareWidth*2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#34Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth, + \dimexpr #2+\SquareWidth/2+\SquareWidth*2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#33Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth*2, + \dimexpr #2+\SquareWidth/2+\SquareWidth*2) + {\dimexpr \SquareWidth/2} + \ignorespaces +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@roundantidiagonal} +% C'est exactement la même chose que la macro précédente mais +% l'orientation se fait selon la diagonale non principale. +% \begin{macrocode} +\def\smc@roundantidiagonal(#1,#2)#3{% + \pscircle*[linecolor=#31Color] + (\dimexpr #1+\SquareWidth/2, + \dimexpr #2+\SquareWidth/2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#32Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth, + \dimexpr #2+\SquareWidth/2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#33Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth*2, + \dimexpr #2+\SquareWidth/2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#32Color] + (\dimexpr #1+\SquareWidth/2, + \dimexpr #2+\SquareWidth/2+\SquareWidth) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#33Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth, + \dimexpr #2+\SquareWidth/2+\SquareWidth) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#34Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth*2, + \dimexpr #2+\SquareWidth/2+\SquareWidth) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#33Color] + (\dimexpr #1+\SquareWidth/2, + \dimexpr #2+\SquareWidth/2+\SquareWidth*2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#34Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth, + \dimexpr #2+\SquareWidth/2+\SquareWidth*2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#35Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth*2, + \dimexpr #2+\SquareWidth/2+\SquareWidth*2) + {\dimexpr \SquareWidth/2} + \ignorespaces +} +% \end{macrocode} +% \end{macro} +% \section{Commandes de sectionnement} +% \subsection{Thème} +% \begin{macro}{\thema} +% Les macros |\thema| permet de spécifier le thème en cours. Pour +% l'instant, la classe n'en prévoit que quatre : +% \begin{itemize} +% \item fonction ; +% \item géométrie ; +% \item statistiques probabilité ; +% \item libre (pour les pages sans thème) +% \end{itemize} +% La macro mémorise le titre du thème, son abréviation et un certain +% nombre de couleurs spécifiques. +% \begin{macrocode} +\newcommand*\themaF{% + \cleardoubleoddpage + \def\smc@thema{fonctions}% + \def\smc@themacap{FONCTIONS}% + \def\smc@thema@init{f}% + \def\smc@thema@initcap{F}% + \smc@themaFColor +% \end{macrocode} +% À chaque début de thème, on remet le compteur de chapitre à zéro. +% \begin{macrocode} + \setcounter{chapter}{0}% +} +% \end{macrocode} +% Pour les couleurs, comme on en a besoin à plusieurs endroits, on les +% définis séparément. +% \begin{macrocode} +\newcommand*\smc@themaFColor{% + \def\CorrigeChapterFrameColor{PartieFonction}% + \def\CorrigeChapterTextColor{Blanc}% + \colorlet{ChapterNumFrameColor}{PartieFonction}% + \colorlet{FootTitleHeadColor}{PartieFonction}% + \colorlet{ChapterTopFrameColor}{A3}% + \colorlet{ChapterNumSquare4Color}{A3}% + \colorlet{ChapterNumSquare5Color}{PartieFonction}% + \colorlet{FirstChapterFootColor}{FootFonctionColor}% +} +% \end{macrocode} +% Même chose pour la partie Géométrie +% \begin{macrocode} +\newcommand*\themaG{% + \cleardoubleoddpage + \def\smc@thema{g\'eom\'etrie}% + \def\smc@themacap{G\'EOM\'ETRIE}% + \def\smc@thema@init{g}% + \def\smc@thema@initcap{G}% + \smc@themaGColor + \setcounter{chapter}{0}% +} +\newcommand*\smc@themaGColor{% + \def\CorrigeChapterFrameColor{PartieGeometrie}% + \def\CorrigeChapterTextColor{Blanc}% + \colorlet{ChapterNumFrameColor}{PartieGeometrie}% + \colorlet{FootTitleHeadColor}{PartieGeometrie}% + \colorlet{ChapterTopFrameColor}{G3}% + \colorlet{ChapterNumSquare4Color}{G3}% + \colorlet{ChapterNumSquare5Color}{PartieGeometrie}% + \colorlet{FirstChapterFootColor}{FootGeometrieColor}% +} +% \end{macrocode} +% Même chose pour la partie Statistiques et probabilités. +% \begin{macrocode} +\newcommand*\themaS{% + \cleardoubleoddpage + \def\smc@thema{statistiques\\probabilit\'es}% + \def\smc@themacap{STATISTIQUES\\PROBABILIT\'ES}% + \def\smc@thema@init{sp}% + \def\smc@thema@initcap{SP}% + \smc@themaSColor + \setcounter{chapter}{0}% +} +\newcommand*\smc@themaSColor{% + \def\CorrigeChapterFrameColor{PartieStatistique}% + \def\CorrigeChapterTextColor{Blanc}% + \colorlet{ChapterNumFrameColor}{PartieStatistique}% + \colorlet{FootTitleHeadColor}{PartieStatistique}% + \colorlet{ChapterTopFrameColor}{U2}% + \colorlet{ChapterNumSquare4Color}{U2}% + \colorlet{ChapterNumSquare5Color}{PartieStatistique}% + \colorlet{FirstChapterFootColor}{FootStatistiqueColor}% +} +% \end{macrocode} +% Même chose pour la partie libre. Il n'y a pas de saut de page pour +% ce thème. +% \begin{macrocode} +\newcommand*\themaL{% + \def\smc@thema{}% + \def\smc@themacap{}% + \def\smc@thema@init{l}% + \def\smc@thema@initcap{L}% + \smc@themaLColor + \setcounter{chapter}{0}% +} +\newcommand*\smc@themaLColor{% + \def\CorrigeChapterFrameColor{Blanc}% + \def\CorrigeChapterTextColor{Blanc}% + \colorlet{ChapterNumFrameColor}{Blanc}% + \colorlet{FootTitleHeadColor}{Blanc}% + \colorlet{ChapterTopFrameColor}{Blanc}% + \colorlet{ChapterNumSquare4Color}{Blanc}% + \colorlet{ChapterNumSquare5Color}{Blanc}% + \colorlet{FirstChapterFootColor}{Blanc}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\NewThema} +% La classe va proposer également la commande |\NewThema| pour pouvoir +% définir d'autres thèmes que les quatre initiaux de la maquette. Cette +% commande demande 7 arguments qui sont (dans l'ordre) : +% \begin{itemize} +% \item la lettre ou les lettres après |\thema| (normalement en +% capitale) ; +% \item la lettre ou les lettres correspondantes en minuscule ; +% \item le titre du thème en minuscule ; +% \item le titre du thème avec initiale en capitale ; +% \item le titre du thème entèrement en capitale ; +% \item la couleur du cadre pour le rectangle vertical de chapitre ; +% \item la couleur de l'avant-dernier carré en bas à gauche du +% rectangle vertical de chapitre. +% \end{itemize} +% \begin{macrocode} +\newcommand*\NewThema[7]{% +% \end{macrocode} +% Il est interdit de redéfinir un thème +% \begin{macrocode} + \ifcsname thema#1\endcsname + \ClassError{sesamanuel} + {le theme \string\thema#1 existe deja} + {Vous ne pouvez pas creer un theme deja existant.}% + \else +% \end{macrocode} +% Déclaration du booléen pour la présence de méthodes dans ce thème. +% \begin{macrocode} + \protected@write\@auxout{} + {% + \protect\expandafter + \protect\newif \protect\csname ifsmc@lom#2\protect\endcsname + }% + \expandafter \newif \csname ifsmc@lom#2\endcsname +% \end{macrocode} +% Déclaration des couleurs pour la liste des méthodes. +% \begin{macrocode} + \@namedef{smc@thema#1Color}{% + \def\CorrigeChapterFrameColor{#6}% + \def\CorrigeChapterTextColor{Blanc}% + \colorlet{ChapterNumFrameColor}{#6}% + \colorlet{FootTitleHeadColor}{#6}% + \colorlet{ChapterTopFrameColor}{#7}% + \colorlet{ChapterNumSquare4Color}{#7}% + \colorlet{ChapterNumSquare5Color}{#6}% + \colorlet{FirstChapterFootColor}{#7}% + }% +% \end{macrocode} +% Définition du thème proprement dit avec sa commande d'appel. +% \begin{macrocode} + \expandafter\def\csname thema#1\endcsname{% + \cleardoubleoddpage + \def\smc@thema{#3}% + \edef\smc@themacap{#5}% + \def\smc@thema@init{#2}% + \def\smc@thema@initcap{#1}% + \def\CorrigeChapterFrameColor{#6}% + \expandafter\def\csname StringListeMethode#1\endcsname{#4}% + \def\CorrigeChapterTextColor{Blanc}% + \colorlet{ChapterNumFrameColor}{#6}% + \colorlet{FootTitleHeadColor}{#6}% + \colorlet{ChapterTopFrameColor}{#7}% + \colorlet{ChapterNumSquare4Color}{#7}% + \colorlet{ChapterNumSquare5Color}{#6}% + \colorlet{FirstChapterFootColor}{#7}% + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \subsection{Composants d'un chapitre} +% \begin{macro}{\smc@fixwidth} +% On va avoir besoin d'une macro composant son contenu dans une +% largeur déterminée et qui accepte les coupures de lignes avec +% |\\|. Le premier argument est la largeur imposée, la seconde est le +% texte. +% \begin{macrocode} +\newcommand\smc@fixwidth[2]{% + \smc@dima=0pt + \expandafter\smc@@width#2\\\@nil\\% + \setbox0=\hbox{% + \minipage[b]{\smc@dima} + #2% + \endminipage + }% + \smc@dima=\dimexpr\ht0+\dp0\relax + \psscaleboxto(#1,\the\smc@dima){% + \unhbox0 + }% + \ignorespaces +} +\def\smc@@width#1\\{% + \def\smc@arg{#1}% + \unless\ifx\smc@arg\@nnil + \setbox0=\hbox{#1}% + \ifdim\wd0>\smc@dima + \smc@dima=\wd0\relax + \fi + \expandafter\smc@@width + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@fixwidthcenter} +% Même chose que précédemment mais le contenu est centré. +% \begin{macrocode} +\newcommand\smc@fixwidthcenter[2]{% + \smc@dima=0pt + \expandafter\smc@@width#2\\\@nil\\% + \setbox0=\hbox{% + \minipage[b]{\smc@dima} + \centering + #2% + \endminipage + }% + \smc@dima=\dimexpr\ht0+\dp0\relax + \psscaleboxto(#1,\the\smc@dima){% + \unhbox0 + }% + \ignorespaces +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@makechapterhead} +% La commande de chapitre est à reprendre entièrement en ce qui +% concerne la mise en page. On gardera tout le mécanisme de la +% commande |\chapter| même si tout ne servira pas vraiment et c'est la +% commande |\@makechapterhead| qui va être redéfinie. +% \begin{macrocode} +\renewcommand*\@makechapterhead[1]{% +% \end{macrocode} +% Avant de commencer, on mémorise le titre dans une variable qui +% servira dans les pieds de page. On écrit également le titre du +% chapitre dans le fichier de correction. +% \begin{macrocode} + \def\smc@chaptertitle{#1}% + \addtocontents{cor}{% + \protect\smc@corrigechapter{% + \StringChapitre{} + \smc@thema@initcap\the\c@chapter} + {\smc@chaptertitle}% + {\CorrigeChapterFrameColor}% + {\CorrigeChapterTextColor}% + }% + \begin{pspicture}(0,0)(\linewidth,\ChapterBottomPicture) + \psset{linewidth=0pt,linestyle=none,fillstyle=solid} +% \end{macrocode} +% Cadre haut. +% \begin{macrocode} + \psframe[fillcolor=ChapterTopFrameColor] + (\dimexpr-\smc@bleed-\smc@marginleft,\ChapterBottomFrameHeight) + (\dimexpr\linewidth+\smc@marginright+\smc@bleed, + \ChapterTotalFrameHeight) +% \end{macrocode} +% Cadre bas. +% \begin{macrocode} + \psframe[fillcolor=ChapterBottomFrameColor] + (\dimexpr-\smc@bleed-\smc@marginleft,0) + (\dimexpr\linewidth+\smc@marginright+\smc@bleed, + \ChapterBottomFrameHeight) +% \end{macrocode} +% Cadre vert de fond du numéro de chapitre. +% \begin{macrocode} + \psframe[fillcolor=ChapterNumBkgColor] + (\ChapterNumLeftFrame,0) + (\linewidth,\ChapterTotalFrameHeight) +% \end{macrocode} +% Cadre de fond du numéro de chapitre. +% \begin{macrocode} + \psframe[fillcolor=ChapterNumFrameColor] + (\ChapterNumLeftFrame,\ChapterNumBottomFrame) + (\linewidth,\ChapterNumTopFrame) +% \end{macrocode} +% Carrés dégradés. +% \begin{macrocode} + \smc@antidiagonal(\ChapterNumLeftFrame,\ChapterNumBottomFrame) + {ChapterNumSquare} +% \end{macrocode} +% thème et numéro de chapitre. +% \begin{macrocode} + \rput[B](\dimexpr \linewidth/2+\ChapterNumLeftFrame/2, + \ChapterBottomFrameHeight) + {\textcolor{ThemaTitleColor} + {% + \ChapAppFont + \smc@fixwidthcenter{\ChapterTitleThemaWidth} + {\smc@themacap}% + }% + } + \rput[B](\dimexpr \linewidth/2+\ChapterNumLeftFrame/2, + \ChapterNumBase) + {\textcolor{ChapterNumColor} + {\ChapterNumFont \thechapter}} +% \end{macrocode} +% Titre du chapitre. +% \begin{macrocode} + \rput[Bl](0,\ChapterTitleBase){% + \begin{minipage}[b]{\dimexpr\ChapterNumLeftFrame-\ChapterTitleSep} + \ChapterTitleFont \color{ChapterTitleColor}#1% + \end{minipage} + } + \end{pspicture} +% \end{macrocode} +% Le style de page est défini dans la macro |\chapter| comme étant le +% style \texttt{plain}. On aurait pu redéfinir |\chapter| pour +% modifier ce point mais autant ne pas surcharger la classe et +% redéfinir le style de page en fin de macro d'affichage. +% \begin{macrocode} + \thispagestyle{firstchapter} +} +% \end{macrocode} +% \end{macro} +% \begin{environment}{prerecquis} +% Cet environnement liste les connaissances antérieures nécessaires au +% chapitre en cours. +% +% Pour un livre de seconde, ce sera les \og Connaissances du collège +% nécessaires à ce chapitre \fg{} mais ce titre étant susceptible de +% varier, on le passe en paramètre à l'environnement. Pour faciliter +% la vie de l'utilisateur, on le fournit sous forme d'un argument +% optionnel, la valeur par défaut étant contenu dans la macro +% |\StringPrerequis|. Pour commencer, cette macro est +% initialisée avec le titre pour les secondes mais on pourra prévoir +% un mécanisme plus général où il suffira d'indiquer le niveau du +% livre en début de compilation. +% +% L'environnement |prerequis| compose son contenu en sans empattement, +% dans un cadre bleu en deux colonnes. +% \begin{macrocode} +\newenvironment{prerequis}[1][\StringPrerequis] +{% +% \end{macrocode} +% Si la première page de chapitre doit être calibrée pour faire +% effectivement une seule page, alors, pour l'instant, je place un +% ressort vertical infini entre chaque élément de la page. +% \begin{macrocode} + \par\vspace*{\stretch{1}} +% \end{macrocode} +% Redéfinition locale des listes et autres. +% \begin{macrocode} + \let\itemize\smc@prerequisitemize + \let\enditemize\endsmc@prerequisitemize + \let\colitemize\smc@prerequiscolitemize + \let\endcolitemize\endsmc@prerequiscolitemize + \let\enumerate\smc@prerequisenumerate + \let\endenumerate\endsmc@prerequisenumerate + \let\colenumerate\smc@prerequiscolenumerate + \let\endcolenumerate\endsmc@prerequiscolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Prerequis}% +% \end{macrocode} +% Titre du prérequis. +% \begin{macrocode} + {% + \PrerequisTitleFont + \textcolor{PrerequisTitleColor}{#1}% + \par\vspace{\PrerequisTitleVSpace}% + }% +% \end{macrocode} +% Avant d'appeler l'environnement de cadre, on explicite l'espace vide +% entre le bord du cadre et le texte. +% \begin{macrocode} + \edef\FrameSep{\SquareWidth}% + \smc@cadre{PrerequisBkgColor} +% \end{macrocode} +% L'environnement \environ{multicols} ajoute un espace vertical +% au-dessus. Ce n'est pas lié à la longueur |\multicolsep| qui n'a +% visiblement pas d'action à l'intérieur d'un environnement +% \environ{minipage}. Pour équilibrer la présentation il faut placer +% un saut négatif ad hoc. +% \begin{macrocode} + \vspace*{-4.5pt} + \begin{multicols}{2} + \PrerequisTextFont +} +{% + \end{multicols}% + \endsmc@cadre + \par +} +% \end{macrocode} +% \end{environment} +% \begin{environment}{autoeval} +% L'environnement \environ{autoeval} gère la partie \og +% Auto-évaluation \fg{} de la première page de chapitre. Celle-ci se +% compose d'un cartouche avec le titre (immuable ?) \og +% Auto-évaluation \fg{} puis d'un cadre avec l'énoncé des exercices +% comprenant (en bas à droite ?) un cartouche indiquant la page de +% correction. +% +% L'environnement \environ{autoeval} ne demande aucun paramètre. +% \begin{macrocode} +\newenvironment{autoeval} +{% +% \end{macrocode} +% On commence par placer une balise dans le fichier de correction +% \begin{macrocode} + \addtocontents{cor}{\protect\smc@corrigeautoeval}% +% \end{macrocode} +% Comme pour l'environnement précédent, on équilibre les blancs +% verticaux de la page. +% \begin{macrocode} + \par\vspace{\stretch{1}} +% \end{macrocode} +% Le cartouche de titre peut être affiché avant de connaître le +% contenu de l'environnement. On le fait donc dans la partie +% initiale. Pour obtenir une hauteur de exactement 3 diamètres de +% disque et une largeur de |\AETitleWidth|, on va tricher en demandant +% une séparation nulle avec le texte et une construction de texte +% ayant exactement les dimensions voulues. On va également tricher sur +% la largeur d'empagement puisque l'environnement |cadre| est +% normalement prévu pour des cadres occupant tout cet empagement. +% \begin{macrocode} + \begingroup + \linewidth=\AETitleWidth + \def\FrameSep{0pt}% + \edef\FrameArc{\the\dimexpr \SquareWidth/2}% + \def\FrameLineWidth{0pt}% + \begin{smc@cadre}[0,0,10,10]{AETitleFrame1Color}% + \minipage[b][\AETitleHeight]{\AETitleWidth}% + \begin{pspicture}(0,0)(\dimexpr\SquareWidth*3,\dimexpr\SquareWidth*2) + \smc@rounddiagonal(0mm,0mm){AETitleFrame}% + \end{pspicture}% + \hspace*{\stretch{1}}% + \AETitleFont + \raisebox{\dimexpr\SquareWidth*3/4}{\textcolor{AETitleColor}{\StringAE}}% + \hspace*{\stretch{1}}% + \endminipage + \end{smc@cadre} + \endgroup +% \end{macrocode} +% On affiche ensuite le texte de référence au site manuel.sesamath.net +% \begin{macrocode} + \hspace*{\stretch{1}}% + \begin{minipage}[b]{\AEManuelWidth} + \raggedright + \AEManuelFont + \StringManuel + \par\vspace*{\AfterAEManuelVSpace} + \end{minipage}% +% \end{macrocode} +% On affiche enfin le logo. +% \begin{macrocode} + \hspace{\AEManuelRightSpace}% + \raisebox{\AfterAEManuelVSpace} + {\psscaleboxto(\AELogoManuelWidth,0){\LogoManuel}}% + \\[-1pt] +% \end{macrocode} +% On redéfinit les listes et la macro d'exercice. +% \begin{macrocode} + \let\itemize\smc@AEitemize + \let\enditemize\endsmc@AEitemize + \let\colitemize\smc@AEcolitemize + \let\endcolitemize\endsmc@AEcolitemize + \let\enumerate\smc@AEenumerate + \let\endenumerate\endsmc@AEenumerate + \let\colenumerate\smc@AEcolenumerate + \let\endcolenumerate\endsmc@AEcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@AEexercice + \let\endexercice\endsmc@AEexercice + \let\corrige\smc@AEcorrige + \let\endcorrige\endsmc@AEcorrige + \def\smc@currpart{AE}% +% \end{macrocode} +% On peut alors mémoriser l'intérieur de l'environnement. On utilise +% une minipage de la largeur d'empagement moins |\AEFrameHSep*2| +% \begin{macrocode} + \begin{lrbox}{\smc@boxa} + \minipage[b]{\dimexpr\linewidth-\AEFrameHSep*2}% + \ignorespaces +} +{% +% \end{macrocode} +% En fin d'environnement, on ferme la minipage et la lrbox. Avant +% cela, on ajoute un espace vertical pour placer le cartouche de la +% correction. +% \begin{macrocode} + \par + \vspace*{\dimexpr\AECartoucheCorrSep+\AECartoucheCorrHeight-\SquareWidth} + \hspace*{\stretch{1}}% + \endminipage + \end{lrbox}% +% \end{macrocode} +% On va alors afficher la boîte dans un cadre. +% \begin{macrocode} + \psframebox[framesep=\the\dimexpr\AEFrameHSep-\AEFrameRuleWidth, + linewidth=\AEFrameRuleWidth, linecolor=AEFrameColor]{\box\smc@boxa}% +% \end{macrocode} +% Le point de référence est alors positionné sur le coin inférieur +% droit du cadre. On va placer le cartouche en revenant en arrière. On +% va également tricher sur la hauteur pour que le cartouche se place à +% l'intérieur du cadre. +% \begin{macrocode} + \hspace*{-\AECartoucheCorrWidth}% + \raisebox{-\SquareWidth}{% + \begin{pspicture}(0,0)(\AECartoucheCorrWidth,0) + \psframe*[linecolor=AECartoucheCorrBkgColor, + cornersize=absolute, linearc=\dimexpr\SquareWidth/2] + (0,0)(\AECartoucheCorrWidth,\AECartoucheCorrHeight) + \psframe*[linecolor=AECartoucheCorrBkgColor] + (0,0)(\AECartoucheCorrWidth,3mm) + \psframe*[linecolor=AECartoucheCorrBkgColor] + (3mm,0)(\AECartoucheCorrWidth,\AECartoucheCorrHeight) + \rput(\dimexpr\AECartoucheCorrWidth/2,\dimexpr\AECartoucheCorrHeight/2) + {% +% \end{macrocode} +% Affichage du texte du cartouche de correction. +% \begin{macrocode} + \AECartoucheCorrArrowFont + \textcolor{AECartoucheCorrArrowColor} + {\ding{228}\ding{228}\ding{228}} + \AECartoucheCorrVCPFont + \textcolor{AECartoucheCorrVCPColor} + {\StringVoirCorriges\space\pageref{toutes-solutions}}% + }% + \end{pspicture}% + }% +} +% \end{macrocode} +% On définit maintenant l'environnement exercice pour +% l'auto-évaluation. +% \begin{macrocode} +\newcounter{AEexo}[chapter] +\newenvironment{smc@AEexercice}{% + \par + \refstepcounter{AEexo}% +% \end{macrocode} +% On place un cadre avec le numéro d'exercice dedans. Et c'est tout ! +% \begin{macrocode} + \psframebox*[linestyle=none, linewidth=0pt, + fillcolor=AEExoNumFrameColor, framesep=\AEExoFrameTopSep]{% + \hbox to\dimexpr\AEExoFrameWidth-\AEExoFrameTopSep*2{% + \hss + \AEExoNumFont + \textcolor{AEExoNumColor}{\theAEexo}% + \hss + }% + }% + \hspace{\AfterAEExoFrameHSpace}% + \ignorespaces +} +% \end{macrocode} +% Pour l'instant, il n'y a rien à faire de spécial pour le code +% final. Uniquement un saut de paragraphe. +% \begin{macrocode} +{\par} +% \end{macrocode} +% \end{environment} +% \subsection{Activités} +% \begin{macro}{\activites} +% Cette macro introduit la partie \og Activités d'approche \fg{} dans +% un chapitre. Elle interdit l'utilisation des listes et des macros +% |\exercice|, |\correction| et |\partie| en dehors des environnements. +% \begin{macrocode} +\newcommand*\activites{% + \clearpage + \pagestyle{activites} + \addtocontents{cor}{\protect\smc@corrigeactivite}% + \let\itemize\smc@noitemize + \let\enditemize\endsmc@noitemize + \let\colitemize\smc@nocolitemize + \let\endcolitemize\endsmc@nocolitemize + \let\enumerate\smc@noenumerate + \let\endenumerate\endsmc@noenumerate + \let\colenumerate\smc@nocolenumerate + \let\endcolenumerate\endsmc@nocolenumerate + \let\exercice\smc@noexercice + \let\correction\smc@nocorrection + \let\partie\smc@activite@partie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@activitecorrige + \let\endcorrige\endsmc@activitecorrige + \def\smc@currpart{Activite}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\DeclareActivityLike} +% Les environnements d'activités d'approche propose au moins deux +% types d'activités qui partagent le même aspect général. On les +% déclare avec la macro |\DeclareActivityLike|. Celle-ci demande +% quatre arguments : +% \begin{enumerate} +% \item le nom de l'environnement ; +% \item le titre affiché ; +% \item la couleur de la partie supérieure du cartouche ; +% \item la couleur de la partie inférieure du cartouche ; +% \item la couleur du titre et du losange de numéro. +% \end{enumerate} +% \begin{macrocode} +\newcounter{activite}[chapter] +\newcounter{partie}[activite] +\newcommand*\DeclareActivityLike[5]{% +% \end{macrocode} +% Les environnements ont un argument optionnel pour le titre et un +% deuxième pour le logo. On est donc obligé de les définir avec des +% macros au lieu d'environnements. +% \begin{macrocode} + \expandafter\newcommand\csname#1\endcsname[1][]{% +% \end{macrocode} +% On sauvegarde le titre et on appelle la macro auxiliaire pour le +% deuxième paramètre optionnel. +% \begin{macrocode} + \def\smc@activite@title{##1}% + \csname#1@aux\endcsname + }% + \expandafter\newcommand\csname#1@aux\endcsname[1][]{% +% \end{macrocode} +% L'environnement commence par placer un espacement vertical avant de +% composer son titre et son sous-titre. +% \begin{macrocode} + \par + \addvspace{\BeforeActiviteVSpace} + \refstepcounter{activite} +% \end{macrocode} +% On commence avec le titre. Pour pouvoir le composer correctement, il +% va d'abord falloir le mettre dans une boîte. +% \begin{macrocode} + \setbox\smc@boxa=\hbox{% + \ActiviteTitleFont + #2% + }% +% \end{macrocode} +% On peut maintenant composer réellement le titre en tenant commpte de +% la longueur |\wd\smc@boxa|. On réalise le cartouche en faisant +% croire que la frontière entre le cadre du bas et celui du haut est +% la ligne de base. Le calcul de la largeur compte également la +% diagonale d'un carré de côté |\ActiviteTitleTopHeight|, c'est-à-dire +% cette longueur multipliée par $\sqrt{2}\approx1.4142$. +% \begin{macrocode} + \begin{pspicture}(0,0) + (\dimexpr \ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace+1.4142\ActiviteTitleTopHeight,\ActiviteTitleTopHeight) +% \end{macrocode} +% On commence par afficher les deux parties du fond. La largeur est ce +% qui a été calculé pour l'image complète sauf qu'on ne prend qu'une +% demi-diagonale au lieu d'une diagonale entière. +% \begin{macrocode} + \psframe*[linewidth=0, linecolor= #3] + (0,0)(\dimexpr\ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace+0.7071\ActiviteTitleTopHeight, + \ActiviteTitleTopHeight) +% \end{macrocode} +% Même chose pour la partie du bas en sachant qu'elle déborde de la +% boîte englobante. +% \begin{macrocode} + \psframe*[linewidth=0, linecolor= #4] + (0,0)(\dimexpr\ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace+0.7071\ActiviteTitleTopHeight, + -\ActiviteTitleBottomHeight) +% \end{macrocode} +% On peut maintenant placer le titre. +% \begin{macrocode} + \rput[l](\ActiviteTitleLeftSpace, + 0.5\dimexpr\ActiviteTitleTopHeight-\ActiviteTitleBottomHeight){% + \ActiviteTitleFont + \textcolor{#5}{#2}% + } +% \end{macrocode} +% Il reste à placer la carré avec le numéro d'activité. Le carré est +% placé verticalement au centre du cartouche. On place également le +% numéro de l'activité. +% \begin{macrocode} + \rput + (\dimexpr\ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace, + 0.5\dimexpr\ActiviteTitleTopHeight-\ActiviteTitleBottomHeight) + {% + \pspolygon*[linewidth=0, linecolor=#5] + (0,0) + (0.7071\ActiviteTitleTopHeight,0.7071\ActiviteTitleTopHeight) + (1.4142\ActiviteTitleTopHeight,0) + (0.7071\ActiviteTitleTopHeight,-0.7071\ActiviteTitleTopHeight) + \rput(0.7071\ActiviteTitleTopHeight,0){% + \ActiviteNumFont + \textcolor{ActiviteNumColor}{\theactivite}% + } + } + \end{pspicture}% +% \end{macrocode} +% Le cartouche est totalement réalisé. On va maintenant afficher le +% sous-titre. Ce n'est pas la peine de tester si il est vide : on ne +% modifie rien s'il y a ou non un sous titre. +% \begin{macrocode} + \hspace*{\AfterActiviteTitleHSpace}% +% \end{macrocode} +% Pour permettre un titre sur plusieurs lignes, on place le sous-titre +% dans une minipage dont la largeur doit être égale au reste de +% l'empagement qui existe à ce moment précis, c'est-à-dire la largeur +% du cartouche plus l'espace qu'on vient de placer auquel il faut +% soustraire l'espace du à un éventuel logo. C'est pour cela qu'on +% commence par tester la présence d'un tel élément. +% \begin{macrocode} + \@ifmtarg{##1} + {\setbox0=\hbox{}} + {\setbox0=\hbox{##1\ }}% + \minipage[t]{\dimexpr\linewidth-\ActiviteTitleLeftSpace-\wd\smc@boxa-\ActiviteTitleRightSpace-1.4142\ActiviteTitleTopHeight-\AfterActiviteTitleHSpace-\wd0} + \ActiviteSubtitleFont + \textcolor{ActiviteSubtitleColor}{\smc@activite@title}% + \endminipage + \@ifnotmtarg{##1}{\hfill##1}% + \par\vspace{\AfterActiviteTitleVSpace} +% \end{macrocode} +% On règle les listes pour les activités. +% \begin{macrocode} + \let\itemize\smc@activiteitemize + \let\enditemize\endsmc@activiteitemize + \let\colitemize\smc@activitecolitemize + \let\endcolitemize\endsmc@activitecolitemize + \let\enumerate\smc@activiteenumerate + \let\endenumerate\endsmc@activiteenumerate + \let\colenumerate\smc@activitecolenumerate + \let\endcolenumerate\endsmc@activitecolenumerate + \let\partie\smc@activite@partie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Activite}% +% \end{macrocode} +% On peut maintenant composer le contenu de l'environnement. Celui-ci +% sera placé dans un empagement réduit. +% \begin{macrocode} + \begin{changemargin}{\dimexpr\SquareWidth*4}{\ExtraMarginRight} + }% +% \end{macrocode} +% Le code terminal est défini par la macro |\end|. +% Attention, comme le nom commence par |\end|, on ne peut pas utiliser +% |\newcommand|. +% \begin{macrocode} + \expandafter\def\csname end#1\endcsname{% + \end{changemargin} + }% +} +% \end{macrocode} +% \end{macro} +% \begin{environment}{debat} +% On va maintenant utiliser la macro |\DeclareActivityLike| pour créer +% l'environnement |debat|. Il y a juste à préciser le nom de +% l'environnement, le titre, la couleur du haut du cartouche et la +% couleur du bas du cartouche. +% \begin{macrocode} +\DeclareActivityLike{debat}{\StringDEBAT} + {ActiviteDebatTopColor} + {ActiviteDebatBottomColor} + {ActiviteTitleColor} +% \end{macrocode} +% \end{environment} +% \begin{environment}{activite} +% On procède de la même façon pour l'environnement |activite|. +% \begin{macrocode} +\DeclareActivityLike{activite}{\StringACTIVITE} + {ActiviteActiviteTopColor} + {ActiviteActiviteBottomColor} + {ActiviteTitleColor} +% \end{macrocode} +% \end{environment} +% \subsection{Cours} +% \begin{macro}{\cours} +% Cette macro introduit la partie \og Cours - Méthodes \fg{} dans un +% chapitre. Elle interdit l'utilisation des listes et des macros +% |\exercice|, |\correction| et |\partie| en dehors des environnements. +% \begin{macrocode} +\newcommand*\cours{% + \clearpage + \pagestyle{cours} + \let\itemize\smc@noitemize + \let\enditemize\endsmc@noitemize + \let\colitemize\smc@nocolitemize + \let\endcolitemize\endsmc@nocolitemize + \let\enumerate\smc@noenumerate + \let\endenumerate\endsmc@noenumerate + \let\colenumerate\smc@nocolenumerate + \let\endcolenumerate\endsmc@nocolenumerate + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \let\correction\smc@nocorrection + \let\partie\smc@nopartie + \def\smc@currpart{Cours}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\section} +% Les macros de sectionnement vont garder leur nom habituel. On +% gardera également la syntaxe avec l'argument optionnel et l'étoile +% mais cette dernière ne servira strictement à rien ! Le numéro de +% section ne fait pas référence au numéro de chapitre. +% \begin{macrocode} +\renewcommand\thesection{\arabic{section}} +\renewcommand*\section{\@ifstar{\smc@sec}{\smc@sec}} +\newcommand*\smc@sec[2][]{% +% \end{macrocode} +% On commence par regarder si l'argument optionnel est vide. Si oui, +% le titre court sera égal au titre long. +% \begin{macrocode} + \ifx\relax#1\relax + \smc@@sec{#2}{#2}% + \else + \smc@@sec{#1}{#2}% + \fi +} +% \end{macrocode} +% À ce stade, on a un titre court en premier argument et un titre long +% en deuxième argument. Le travail effectif peut commencer. +% \begin{macrocode} +\newcommand*\smc@@sec[2]{% + \par\goodbreak\addvspace{\BeforeSectionVSpace}% + \refstepcounter{section}% +% \end{macrocode} +% Le titre court sera éventuellement utilisé pour une TDM. Ce sera à +% voir plus tard. +% \begin{macrocode} + \relax +% \end{macrocode} +% On compose ensuite le numéro et le titre de la section. On commence +% avec le numéro composé dans un environnement |pspicture| avec un +% décalage vers la bas pour aligner les lignes de base du numéro avec +% celui de la première ligne du titre. +% +% L'ensemble du titre est placé dans une boîte pour pouvoir régler sa +% hauteur ultérieurement : la boîte crée est trop haute sur la ligne +% de base. +% \begin{macrocode} + \setbox\smc@boxa=\hbox{% + \begin{pspicture}[shift=-\SquareWidth] + (0,0)(\dimexpr\SquareWidth*3,\dimexpr\SquareWidth*3) + \psframe*[linecolor=SectionFrame1Color,linewidth=0pt] + (0,0)(\dimexpr\SquareWidth*3,\dimexpr\SquareWidth*3) + \psframe*[linecolor=SectionFrame2Color,linewidth=0pt] + (0,0)(\SquareWidth,\dimexpr\SquareWidth*3) + \psframe*[linecolor=SectionFrame2Color,linewidth=0pt] + (0,0)(\dimexpr\SquareWidth*3,\SquareWidth) + \psframe*[linecolor=SectionFrame3Color,linewidth=0pt] + (0,0)(\SquareWidth,\SquareWidth) + \rput[Br](\dimexpr\SquareWidth*3,\SquareWidth){% + \SectionNumFont + \textcolor{SectionNumColor}{\thesection}% +% \end{macrocode} +% Pour le point, on passe à la fonte de titre ou on garde la fonte du +% numéro (en fonction du choix de fontes) pour avoir un point carré +% comme ceux présents sur les \og i \fg{}. Il y a également une +% correction horizontale pour que le point soit exactement sur la +% frontière droite du cadre. Cette correction est sensible aux fontes +% utilisées. +% \begin{macrocode} + \SectionNumFont + \textcolor{SectionNumColor}{.}% + \hspace*{\SectionCorrectionChassePoint}% + } + \end{pspicture}% +% \end{macrocode} +% On affiche le titre après un certain décalage horizontal. Le titre +% sera placé dans une minipage alilgné en haut pour que ce soit la +% première ligne du titre qui soit alignée avec le numéro. +% \begin{macrocode} + \hspace{\SectionNumTitleHSpace}% + \begin{minipage}[t]{\dimexpr\linewidth-\SectionNumTitleHSpace-\SquareWidth*3} + \SectionTitleFont + \textcolor{SectionTitleColor}{#2}% + \end{minipage}% + }% +% \end{macrocode} +% Avant d'afficher le contenu de la boîte |\smc@boxa|, on diminue sa +% hauteur afin de l'afficher avec sa ligne de base correctement +% placé. La longueur |\BeforeSectionVSpace| corrigera ce manque. +% \begin{macrocode} + \smc@dima=\dimexpr \ht\smc@boxa-\SquareWidth + \ht\smc@boxa \smc@dima + \leavevmode\box\smc@boxa +% \end{macrocode} +% On termine en plaçant un espacement vertical donné et une +% interdiction de coupe. Il n'y a pas besoin de s'occuper du retrait +% d'alinéa puisqu'il n'y en a pas ! +% \begin{macrocode} + \par\nobreak\addvspace{\AfterSectionVSpace} +} +% \end{macrocode} +% On définit également la commande |\smc@normalsection| pour permettre +% de restaurer les sections \og normales \fg{} avec la commande +% |\RestoreSection|. +% \begin{macrocode} +\let\smc@normalsection\section +\newcommand*\RestoreSection{\let\section\smc@normalsection} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\subsection} +% La syntaxe est la même que pour |\section|. La composition du titre +% est bien plus simple. On gardera quand même la possibilité d'avoir +% un titre sur plusieurs lignes en l'alignant à gauche avec un retrait +% tenant compte de celui de la lettre +% \begin{macrocode} +\renewcommand{\thesubsection}{\Alph{subsection}} +\renewcommand\subsection{\@ifstar{\smc@subsec}{\smc@subsec}} +\newcommand*\smc@subsec[2][]{% + \ifx\relax#1\relax + \smc@@subsec{#2}{#2}% + \else + \smc@@subsec{#1}{#2}% + \fi +} +\newcommand*\smc@@subsec[2]{% +% \end{macrocode} +% On teste si le dernier saut était celui d'une section. Si oui, on +% garde un espace insécable sinon, on réalise un saut avec une +% préférence pour la coupure de page. +% \begin{macrocode} + \ifdim\lastskip=\AfterSectionVSpace + \par\nobreak + \else + \par\goodbreak\addvspace{\BeforeSubsectionVSpace} + \fi + \refstepcounter{subsection}% +% \end{macrocode} +% Le titre court sera éventuellement utilisé pour une TDM. Ce sera à +% voir plus tard. +% \begin{macrocode} + \relax +% \end{macrocode} +% On compose ensuite le numéro et le titre de la section. On commence +% avec le numéro composé dans une boîte pour en connaître la largeur. +% \begin{macrocode} + \setbox\smc@boxa=\hbox{% + \SubsectionNumFont + \textcolor{SubsectionNumColor}{\thesubsection.~}% + }% +% \end{macrocode} +% On affiche alors la boîte (sans la détruire et on compose le titre +% dans une minipage de largeur l'empagement moins la largeur du numéro. +% \begin{macrocode} + \leavevmode\copy\smc@boxa + \begin{minipage}[t]{\dimexpr\linewidth-\wd\smc@boxa} + \SubsectionTitleFont + \textcolor{SubsectionTitleColor}{#2}% + \end{minipage} + \par\nobreak\addvspace{\AfterSubsectionVSpace} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\subsubsection} +% La classe n'accepte pas les commandes de sectionnement à partir de +% ce niveau ni la commande |\part|. On redéfinit ces commandes pour +% qu'elles déclenchent une erreur de compilation. +% \begin{macrocode} +\newcommand*\smc@error@section[1]{% + \ClassError{sesamanuel}{La commande \string#1 n'existe pas}{Les seules + commandes disponibles sont \string\chapter\space + \string\section\space et \string\subsection.}% +} +\renewcommand\part{% + \@ifstar{\smc@part}{\smc@part}% +} +\newcommand\smc@part[2][]{% + \smc@error@section{\part}% +} +\renewcommand\subsubsection{% + \@ifstar{\smc@subsubsection}{\smc@subsubsection}% +} +\newcommand\smc@subsubsection[2][]{% + \smc@error@section{\subsubsection}% +} +\renewcommand\paragraph{% + \@ifstar{\smc@paragraph}{\smc@paragraph}% +} +\newcommand\smc@paragraph[2][]{% + \smc@error@section{\paragraph}% +} +\renewcommand\subparagraph{% + \@ifstar{\smc@subparagraph}{\smc@subparagraph}% +} +\newcommand\smc@subparagraph[2][]{% + \smc@error@section{\subparagraph}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\DeclareDefLike} +% Les cadres de type définition vont partager la même façon de se +% faire composer et la même syntaxe d'appel : +% \begin{center} +% |\begin{def}[sous-titre]| +% \end{center} +% où |sous-titre| est un sous-titre optionnel. +% +% On les déclare avec la macro |\DeclareDefLike| en donnant dans +% l'ordre le nom de l'environnement et le mot à afficher comme titre. +% \begin{macrocode} +\newcommand*\DeclareDefLike[2]{% + \newenvironment{#1}[1][]{% + \par\addvspace{\BeforeDefVSpace} +% \end{macrocode} +% On redéfinit les listes avant de composer quoi que ce soit. +% \begin{macrocode} + \let\itemize\smc@defitemize + \let\enditemize\endsmc@defitemize + \let\colitemize\smc@defcolitemize + \let\endcolitemize\endsmc@defcolitemize + \let\enumerate\smc@defenumerate + \let\endenumerate\endsmc@defenumerate + \let\colenumerate\smc@defcolenumerate + \let\endcolenumerate\endsmc@defcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{#1}% +% \end{macrocode} +% Le carré est composé avec un retrait de 2|\SquareWidth| pour que son +% côté droit soit aligné avec celui des sections. +% \begin{macrocode} + \hspace*{\dimexpr\SquareWidth*2}% + \textcolor{DefSquareColor}{\rule{\SquareWidth}{\SquareWidth}}% + \space +% \end{macrocode} +% Après le carré, on affiche le titre de l'environnement. Celui qui a +% été passé en deuxième argument de |\DeclareDefLike|. +% \begin{macrocode} +% \end{macrocode} +% S'il y a un argument optionnel, c'est-à-dire un sous-titre, on +% compoosera un caractère deux points à la suite du titre suivi du +% sous titre sinon, le titre sans les deux points. +% \begin{macrocode} + \ifx\relax##1\relax + {% + \DefTitleFont + \textcolor{DefTitleColor}{#2}% + }% + \else + {% + \DefTitleFont + \textcolor{DefTitleColor}{#2 : }% + }% + {% + \DefSubtitleFont + \textcolor{DefSubtitleColor}{##1}% + }% + \fi + \par\nobreak\addvspace{\DefTitleFrameVSep} +% \end{macrocode} +% La ligne de titre est maintenant composée, il reste à composer +% l'intérieur du cadre. Le texte est sauvegardé dans une minipage dont +% la largeur tient compte des retraits gauche +% (3|\SquareWidth|+|\DefFrameHSep|) et droit +% (|\ExtraMarginRight|+|\DefFrameHSep|). Il y a aussi un +% |\ignorespaces| pour supprimer l'espace automatique créé après le +% |\begin{definition}|. +% \begin{macrocode} + \begin{lrbox}{\smc@boxa} + \minipage{\dimexpr\linewidth-\SquareWidth*3-\DefFrameHSep*2-\ExtraMarginRight} + \par\vspace{\DefFrameVSep} + \ignorespaces + } +% \end{macrocode} +% Partie terminale de l'environnement. On commence par placer l'espace +% vertical adéquat puis on ferme la minipage et la boîte. +% \begin{macrocode} + {% + \par\vspace{\DefFrameVSep} + \endminipage + \end{lrbox} +% \end{macrocode} +% Le contenu de l'environnement est sauvegardé dans la boîte +% |\smc@boxa|, il reste à la placer avec les espacements corrects dans +% le cadre coloré. Pour controler les espaces pour chaque côté du +% cadre, on annule les espacements globaux avant d'utiliser la +% commande |\colorbox|. +% \begin{macrocode} + {% + \setlength{\fboxsep}{0pt}% + \hspace*{\dimexpr\SquareWidth*3}% + \colorbox{DefFrameColor}{% + \hspace*{\DefFrameHSep}% + \usebox{\smc@boxa}% + \hspace*{\DefFrameHSep}% + } + }% + \par + } +} +% \end{macrocode} +% \end{macro} +% \begin{environment}{definition} +% On se sert maintenant de la macro |\DeclareDefLike| pour déclarer +% l'environnement de définition. +% \begin{macrocode} +\DeclareDefLike{definition}{\StringDEFINITION} +% \end{macrocode} +% \end{environment} +% \begin{environment}{propriete} +% L'environnement |propriete| suit les mêmes règles que |definition| +% \begin{macrocode} +\DeclareDefLike{propriete}{\StringPROPRIETE} +% \end{macrocode} +% \end{environment} +% \begin{environment}{theoreme} +% L'environnement |theoreme|. +% \begin{macrocode} +\DeclareDefLike{theoreme}{\StringTHEOREME} +% \end{macrocode} +% \end{environment} +% \begin{macro}{\DeclareRemLike} +% La déclaration des environnements de type remarque se fait comme +% pour les environnements de type définition. C'est le contenu de +% l'environnement qui n'est pas du tout le même. +% \begin{macrocode} +\newcommand*\DeclareRemLike[2]{% +% \end{macrocode} +% Cela commence dès le début où il n'y a pas de paramètre optionnel, +% le texte pouvant commencer directement après le titre. En fait, les +% choses sont beaucoup plus simples : l'environnement fait que +% l'ensemble du texte traité l'est dans un empagement réduit (y +% compris le titre). Il s'agit du même empagement que celui des +% définitions d'où le même calcul de largeur de la minipage et le même +% retrait initial. +% \begin{macrocode} + \newenvironment{#1}{% + \par\addvspace{\BeforeRemVSpace} + \hspace*{\dimexpr\SquareWidth*3+\DefFrameHSep}% +% \end{macrocode} +% On redéfinit aussi les listes avant d'appeler la minipage. +% \begin{macrocode} + \let\itemize\smc@remitemize + \let\enditemize\endsmc@remitemize + \let\colitemize\smc@remcolitemize + \let\endcolitemize\endsmc@remcolitemize + \let\enumerate\smc@remenumerate + \let\endenumerate\endsmc@remenumerate + \let\colenumerate\smc@remcolenumerate + \let\endcolenumerate\endsmc@remcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{#1}% + \minipage{\dimexpr\linewidth-\SquareWidth*3-\DefFrameHSep*2-\ExtraMarginRight} + \strut + {\RemTitleFont \textcolor{RemTitleColor}{#2 : }}% + \ignorespaces + } +% \end{macrocode} +% La partie terminale de l'environnement ferme la minipage et passe au +% paragraphe suivant. +% \begin{macrocode} + {% + \endminipage + \par\addvspace{\AfterRemVSpace} + } +} +% \end{macrocode} +% \end{macro} +% \begin{environment}{remarque} +% On se sert maintenant de la macro |\DeclareRemLike| pour créer les +% environnements de type remarque. +% \begin{macrocode} +\DeclareRemLike{remarque}{Remarque} +% \end{macrocode} +% \end{environment} +% \begin{environment}{remarques} +% \begin{macrocode} +\DeclareRemLike{remarques}{Remarques} +% \end{macrocode} +% \end{environment} +% \begin{environment}{notation} +% \begin{macrocode} +\DeclareRemLike{notation}{Notation} +% \end{macrocode} +% \end{environment} +% \begin{environment}{notations} +% \begin{macrocode} +\DeclareRemLike{notations}{Notations} +% \end{macrocode} +% \end{environment} +% \begin{environment}{vocabulaire} +% \begin{macrocode} +\DeclareRemLike{vocabulaire}{Vocabulaire} +% \end{macrocode} +% \end{environment} +% \begin{macro}{\DeclareProofLike} +% On a également des environnements de type |preuve| qui seront créés +% par la macro |\DeclareProofLike|. Le premier argument est le nom de +% l'environnement et le deuxième et le titre. +% \begin{macrocode} +\newcommand*\DeclareProofLike[2]{% + \newenvironment{#1} + {% +% \end{macrocode} +% Au début, on place un espacement vertical puis un espacement +% horizontal; le filet et un autre espacement horizontal. +% \begin{macrocode} + \par\addvspace{\BeforeProofVSpace} + \hspace*{\dimexpr\SquareWidth*3}% + {% + \color{ProofRuleColor}% + \vrule width \RuleWidth + } + \hspace*{\dimexpr \SquareWidth-\RuleWidth}% +% \end{macrocode} +% On redéfinit aussi les listes avant d'appeler la minipage. +% \begin{macrocode} + \let\itemize\smc@proofitemize + \let\enditemize\endsmc@proofitemize + \let\colitemize\smc@proofcolitemize + \let\endcolitemize\endsmc@proofcolitemize + \let\enumerate\smc@proofenumerate + \let\endenumerate\endsmc@proofenumerate + \let\colenumerate\smc@proofcolenumerate + \let\endcolenumerate\endsmc@proofcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{#1}% + \minipage{\dimexpr\linewidth-\SquareWidth*4-\ExtraMarginRight} +% \end{macrocode} +% Le titre est placé dans un boîte avec les espacements adéquat afin +% de pouvoir le placer sur le cartouche adéquat au niveau de la +% largeur. +% \begin{macrocode} + \setbox\smc@boxa=\hbox{% + \hspace*{\dimexpr\ProofHeightFrame+\ProofLeftSpace}% + \ProofTitleFont + \textcolor{ProofTitleColor}{#2}% + \hspace*{\ProofRightSpace}% + }% +% \end{macrocode} +% Maintenant que le titre complet est dans une boîte, on peut +% construire le cartouche suivi d'une espace. +% \begin{macrocode} + \begin{pspicture}(0,0)(\wd\smc@boxa,\ProofHeightFrame) + \psframe*[linestyle=none,linecolor=ProofBottomFrameColor] + (0,-\ProofDepthFrame)(\wd\smc@boxa,0) + \psframe*[linestyle=none,linecolor=ProofTopFrameColor] + (0,0)(\wd\smc@boxa,\ProofHeightFrame) + \pspolygon*[linestyle=none,linecolor=ProofTriangleFrameColor] + (0,0)(0,\ProofHeightFrame)(\ProofHeightFrame,\ProofHeightFrame) + \rput[Bl](\dimexpr\ProofHeightFrame+\ProofLeftSpace,0){% + \ProofTitleFont + \textcolor{ProofTitleColor}{#2}% + } + \end{pspicture}% + \hspace{\AfterProofTitleHSpace}% + \ignorespaces + } +% \end{macrocode} +% La partie terminale de l'environnement ferme la minipage et passe au +% paragraphe suivant. +% \begin{macrocode} + {% + \endminipage + \par\addvspace{\AfterProofVSpace} + } +} +% \end{macrocode} +% \end{macro} +% \begin{environment}{preuve} +% On utilise la macro précédente pour déclarer l'environnement +% |preuve|. +% \begin{macrocode} +\DeclareProofLike{preuve}{\StringPREUVE} +% \end{macrocode} +% \end{environment} +% \begin{environment}{exemple} +% Comme il y a plusieurs environnements de type exemple, on va +% regrouper dans des macros séparés les parties communes. À savoir les +% affichages des cartouches. +% \begin{macrocode} +\newcommand*\smc@cartoucheexemple{% + \begin{pspicture}(-\ExempleVRuleWidthFrame,0) + (\ExempleWidthFrame,\ExempleHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExempleEdgeFrameColor] + (-\ExempleVRuleWidthFrame,-\ExempleHRuleWidthFrame) + (\ExempleWidthFrame,\ExempleHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExempleBkgFrameColor] + (0mm,-0mm)(\ExempleWidthFrame,\ExempleHeightFrame) + \rput[B](\dimexpr\ExempleWidthFrame/2,0){% + \ExempleTitleFont + \textcolor{ExempleTitleColor}{\StringExemple}% + } + \end{pspicture}% +} +\newcommand*\smc@cartouchecorrection{% + \begin{pspicture}(-\ExempleVRuleWidthFrame,0) + (\ExempleWidthFrame,\ExempleHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExempleEdgeFrameColor] + (-\ExempleVRuleWidthFrame,-\ExempleHRuleWidthFrame) + (\ExempleWidthFrame,\ExempleHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExempleBkgFrameColor] + (0mm,-0mm)(\ExempleWidthFrame,\ExempleHeightFrame) + \rput[B](\dimexpr\ExempleWidthFrame/2,0){% + \ExempleTitleFont + \textcolor{ExempleTitleColor}{\StringCorrection}% + } + \end{pspicture}% +} +% \end{macrocode} +% Le premier environnement de type exemple compose un exemple et sa +% correction dans deux colonnes. La syntaxe est : +% +% |\begin{exemple}[ratio]|\\ +% \quad texte de l'exemple\\ +% |\correction|\\ +% \quad texte de la correction\\ +% |\end{exemple}| +% +% où |ratio| est un argument optionnel indiquant la proportion de la +% largeur disponible réservée au texte d'énoncé (valeur par défaut de +% 0,4 correspondant au $\frac{2}{5}$ de la place. +% +% On commence par placer le bon espacement vertical et à initialiser +% la macro |\correction| valable pour cet environnement. +% \begin{macrocode} +\newenvironment{exemple}[1][0.4]{% + \par\addvspace{\BeforeExempleVSpace} + \let\correction\smc@exemplecorrection +% \end{macrocode} +% On redéfinit ensuite la liste à puce. +% \begin{macrocode} + \let\itemize\smc@exempleitemize + \let\enditemize\endsmc@exempleitemize + \let\colitemize\smc@exemplecolitemize + \let\endcolitemize\endsmc@exemplecolitemize + \let\enumerate\smc@exempleenumerate + \let\endenumerate\endsmc@exempleenumerate + \let\colenumerate\smc@exemplecolenumerate + \let\endcolenumerate\endsmc@exemplecolenumerate + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Exemple}% + \let\partie\smc@nopartie +% \end{macrocode} +% Enfin, on mémorise la valeur du ratio. +% \begin{macrocode} + \def\smc@ratio{#1}% +% \end{macrocode} +% On doit afficher dans l'ordre : +% \begin{itemize} +% \item un espace de 3|\SquareWidth| ; +% \item un filet vertical avec un espace le tout faisant +% |\SquareWidth| de large ; +% \item le texte de l'exemple ; +% \item un espace de |\SquareWidth| ; +% \item un filet vertical avec un espace le tout faisant +% |\SquareWidth| de large ; +% \item le texte de la correction. +% \end{itemize} +% \begin{macrocode} + \hspace*{\dimexpr \SquareWidth*3}% + \color{ExempleRuleColor}% + \vrule width \RuleWidth + \hspace*{\dimexpr \SquareWidth-\RuleWidth}% +% \end{macrocode} +% Le texte de l'exemple fait |\smc@ratio| de l'espace a disposition, +% les $(1-|\smc@ratio|)$ restant étant pour la correction. La largeur +% à se partager fait |\linewidth|-6|\SquareWidth|. Les deux minipages +% sont alignées sur le haut. +% \begin{macrocode} + \minipage[t]{\smc@ratio\dimexpr\linewidth-\SquareWidth*6} +% \end{macrocode} +% Dans la colonne d'exemple, on commence par placer le mot \og exemple +% \fg{} avec son cadre. +% \begin{macrocode} + \smc@cartoucheexemple + \par + \color{Noir}% + \ignorespaces +} +{% + \endminipage + \par +} +% \end{macrocode} +% \end{environment} +% \begin{environment}{exemple*1} +% Le deuxième environnement de type exemple permet une composition sur +% une seule colonne. +% +% Le début du code est identique à celui de l'environnement +% |exemple|. On indiquera les différences. On laisse un argument +% optionnel mais celui-ci est inutile. +% \begin{macrocode} +\newenvironment{exemple*1}[1][]{% + \par\addvspace{\BeforeExempleVSpace} +% \end{macrocode} +% La macro |\correction| appelle une autre macro. +% \begin{macrocode} + \let\correction\smc@one@exemplecorrection + \let\itemize\smc@exempleitemize + \let\enditemize\endsmc@exempleitemize + \let\colitemize\smc@exemplecolitemize + \let\endcolitemize\endsmc@exemplecolitemize + \let\enumerate\smc@exempleenumerate + \let\endenumerate\endsmc@exempleenumerate + \let\colenumerate\smc@exemplecolenumerate + \let\endcolenumerate\endsmc@exemplecolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Exemple}% +% \end{macrocode} +% On ne mémorise pas la valeur de l'argument optionnel puisqu'il n'y a +% plus de répartition entre deux colonnes. +% \begin{macrocode} + \hspace*{\dimexpr \SquareWidth*3}% + \color{ExempleRuleColor}% + \vrule width \RuleWidth + \hspace*{\dimexpr \SquareWidth-\RuleWidth}% +% \end{macrocode} +% La composition se fait dans une minipage qui prend l'empagement +% réduit moins |\SquareWidth*4|. +% \begin{macrocode} + \minipage[t]{\dimexpr\linewidth-\SquareWidth*4-\ExtraMarginRight} + \smc@cartoucheexemple +% \end{macrocode} +% Dans l'exemple sur une colonne, on permet au texte de suivre +% immédiatement le cartouche. +% \begin{macrocode} + \space + \color{Noir}% + \ignorespaces +} +{% + \strut + \endminipage + \par +} +% \end{macrocode} +% \end{environment} +% Pour que les environnements d'exemples soient complets, il faut +% également la macro |\correction|. Or, celle-ci sera appelée dans +% plusieurs environnements, il faut donc en déclarer \og plusieurs +% \fg{}. On commence avec celle qui est interdite (en-dehors des +% environnements). +% \begin{macrocode} +\newcommand*\smc@nocorrection{% + \ClassError{sesamanuel}{Vous ne pouvez pas utilisez la macro + \string\correction\space ici}{Reportez-vous à la documentation + pour l'utilisation de la macro \string\correction.}% +} +% \end{macrocode} +% Vient ensuite la macro pour l'environnement d'exemple sur deux +% colonnes. Elle reprend le code de l'environnement exemple mais en +% donnant $(1-|\smc@ratio|)$ de l'espace à la deuxième colonne au lieu +% de |\smc@ratio| ce qui oblige à un peu plus de travail. +% \begin{macrocode} +\newcommand*\smc@exemplecorrection{% + \endminipage + \hspace{\SquareWidth}% + \color{ExempleRuleColor}% + \vrule width \RuleWidth + \hspace*{\dimexpr \SquareWidth-\RuleWidth}% + \dimen0=\dimexpr\linewidth-\SquareWidth*6 + \minipage[t]{\dimen0-\smc@ratio\dimen0}% + \smc@cartouchecorrection + \par + \color{Noir}% + \ignorespaces +} +% \end{macrocode} +% On a ensuite la macro pour l'environnement d'exemple sur une seule +% colonne. Le code est beaucoup plus simple puisqu'il consiste à +% passer au paragraphe suivant et à afficher le cartouche de +% correction. +% \begin{macrocode} +\newcommand*\smc@one@exemplecorrection{% + \par + \smc@cartouchecorrection + \space +} +% \end{macrocode} +% \begin{environment}{methode} +% Il y a quatre environnements methodes. Le premier compose un seul +% exercice d'application avec sa correction un peu comme on composait +% l'exemple avec sa correction sur deux colonnes. Le deuxième compose +% l'exemple et sa correction sur une seule colonne. Le troisième +% compose deux exercices et leurs corrections sur deux colonnes. Le +% troisième compose autant d'exercices et de correction que l'on veut +% sur une véritable double colonne. +% +% Ces quatre environnements partagent la façon d'afficher un grand +% filet épais à gauche avec le titre \og MÉTHODE \fg{} suivi d'un +% éventuel sous-titre, ainsi que les cartouches \og Exercice +% d'application \fg{} et \og Correction \fg{}. On commence par définir +% tous ces éléments communs. +% +% Le premier est le titre. Il permet un paramètre optionnel donnant le +% sous-titre. Ce titre a besoin d'un compteur. Ce dernier est +% initialisé à chaque chapitre. +% \begin{macrocode} +\newcounter{methode}[chapter] +\newcommand*\smc@titremethode[1][]{% +% \end{macrocode} +% On écrit le titre dans le fichier de liste des méthodes +% correspondant au thème en cours. +% \begin{macrocode} + \smc@addtolom{#1}% +% \end{macrocode} +% On incrémente ensuite le compteur des méthodes avant de construire +% le titre proprement dit. +% \begin{macrocode} + \refstepcounter{methode}% + {% + \setlength{\fboxsep}{0pt}% + \colorbox{MethodeTitleFrameColor}{% + \hspace*{\MethodeTitleLeftSpace}% + \textcolor{MethodeTitleColor}{% + \MethodeTitleFont + \vrule width0pt height\ht\strutbox depth 1pt + \StringMETHODE\space \themethode + }% + \hspace*{\MethodeTitleRightSpace}% + }% + }% + \ifx\relax#1\relax + \else + \hspace{\MethodeSubtitleLeftSpace}% + \textcolor{MethodeSubtitleColor}{\MethodeSubtitleFont #1}% + \fi + \par\vspace{\AfterMethodeTitleVspace} +} +% \end{macrocode} +% La macro qui suit permet de composer \og Exercice d'application +% \fg{} dans son cartouche. +% \begin{macrocode} +\newcommand*\smc@cartoucheexapp{% + \begin{pspicture}(0,-\ExAppDepthFrame) + (\ExAppWidthFrame,\ExAppHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExAppEdgeFrameColor] + (0,-\ExAppDepthFrame) + (\ExAppWidthFrame,\ExAppHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExAppBkgFrameColor] + (0mm,-0mm)(\ExAppWidthFrame,\ExAppHeightFrame) + \rput[B](\dimexpr\ExAppWidthFrame/2,0){% + \ExAppTitleFont + \textcolor{ExAppTitleColor}{\StringExApp}% + } + \end{pspicture}% +} +% \end{macrocode} +% On a presque la même chose pour le cartouche \og Correction \fg{}. +% \begin{macrocode} +\newcommand*\smc@cartouchecorr{% + \begin{pspicture}(0,-\ExAppCorrDepthFrame) + (\ExAppCorrWidthFrame,\ExAppCorrHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExAppCorrEdgeFrameColor] + (0,-\ExAppCorrDepthFrame) + (\ExAppCorrWidthFrame,\ExAppCorrHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExAppCorrBkgFrameColor] + (0mm,-0mm)(\ExAppCorrWidthFrame,\ExAppCorrHeightFrame) + \rput[B](\dimexpr\ExAppCorrWidthFrame/2,0){% + \ExAppCorrTitleFont + \textcolor{ExAppCorrTitleColor}{\StringCorrection}% + } + \end{pspicture}% +} +% \end{macrocode} +% On peut maintenant écrire le code des quatre environnements +% méthode. L'environnement donnant un seul exemple avec sa correction +% en vis à vis s'appelle |methode| et sa syntaxe est :\\ +% |\begin{methode}[sous-titre]|\\ +% \quad texte introductif dans le cadre bleu\\ +% |\exercice|\\ +% \quad texte de l'exercice d'application\\ +% |\correction|\\ +% \quad texte de la correction\\ +% |\end{methode}| +% +% On commence par placer l'espace avant le bloc et à redéfinir les +% macros |\exercice| et |\correction| ainsi que la liste à puce. +% \begin{macrocode} +\newenvironment{methode}[1][]{% + \par\addvspace{\BeforeMethodeVSpace} + \let\itemize\smc@exappitemize + \let\enditemize\endsmc@exappitemize + \let\colitemize\smc@exappcolitemize + \let\endcolitemize\endsmc@exappcolitemize + \let\enumerate\smc@exappenumerate + \let\endenumerate\endsmc@exappenumerate + \let\colenumerate\smc@exappcolenumerate + \let\endcolenumerate\endsmc@exappcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@exappexercice + \let\correction\smc@exappcorrection + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Methode}% +% \end{macrocode} +% On doit afficher dans l'ordre : +% \begin{itemize} +% \item un espacement horizontal ; +% \item le grand filet gauche ; +% \item un espacement horizontal ; +% \item une grande minipage qui contiendra tout, à savoir : +% \begin{itemize} +% \item le titre en le décalant suffisament sur la gauche pour qu'il +% écrase le filet gauche, +% \item un saut de ligne, +% \item un cadre bleu qui touche au filet gauche avec un texte sur +% un empagement réduit, +% \item une minipage de 1/3 de la place restante hors espacement et +% filet, c'est-à-dire empagement - 6|\SquareWidth|-|\RuleWidth|, +% \item un espacement horizontal de |\SquareWidth|, +% \item un filet vertical de |\RuleWidth| d'épaisseur, +% \item un espacement horizontal de |\SquareWidth|, +% \item une minipage de 2/3 de la place restante hors espacement et +% filet. +% \end{itemize} +% \end{itemize} +% +% On commence par l'espace à gauche et le filet gauche principal +% \begin{macrocode} + \hspace*{\dimexpr\SquareWidth*2}% + {% + \color{MethodeRuleColor}% + \vrule width \SquareWidth + }% +% \end{macrocode} +% Ensuite, on place l'espace et la minipage qui contient tout. +% \begin{macrocode} + \hspace{\SquareWidth}% + \minipage{\dimexpr\linewidth-\SquareWidth*4}% +% \end{macrocode} +% Affichage du titre (avec son sous-titre éventuel). +% \begin{macrocode} + \hspace*{\dimexpr-\SquareWidth*2}% + \smc@titremethode[#1]% + \par +% \end{macrocode} +% À partir de maintenant, il faut tenir compte du contenu de +% l'environnement. Le premier contenu est, potentiellement, le texte +% introductif. Pour tester sa présence ou non, on le place dans une +% boîte qu'on analysera plus tard. +% \begin{macrocode} + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\SquareWidth*5-\MethodeFrameHSep*2}% + \ignorespaces +} +% \end{macrocode} +% En partie terminale, on a uniquement à fermer la dernière minipage +% ouverte ainsi que la minipage principale et à passer au paragraphe suivant. +% \begin{macrocode} +{% + \endminipage + \endminipage + \par +} +% \end{macrocode} +% On définit la macro |\exercice| réelle pour cet environnement. Elle +% accepte un argument optionnel indiquant la proportion de +% l'empagement occupé par cette partie. +% \begin{macrocode} +\newcommand*\smc@exappexercice[1][0.4]{% + \endminipage + \end{lrbox}% + \def\smc@ratio{#1}% +% \end{macrocode} +% Il faut détecter si la boîte est vide. Pour cela, on va se fonder +% sur sa hauteur et sa profondeur. Les valeurs pour un texte +% totalement vide sont respectivement |2.375pt| et |0pt|. Le +% test se fera sur une hauteur totale de plus de |2.4pt|. +% \begin{macrocode} + \ifdim\dimexpr\ht\smc@boxa+\dp\smc@boxa > 2.4pt +% \end{macrocode} +% On est dans le cas où il y a une partie introductive. On va placer +% le tout dans un |\colorbox| en ayant pris soin de contrôler +% totalement les espacements. Les marges gauche et droite de la boîte +% sont assurés par des |\hspace*|. Les marges haute et basse par une +% manipulation des dimensions de la boîte +% \begin{macrocode} + {% + \setlength{\fboxsep}{0pt}% + \ht\smc@boxa=\dimexpr\ht\smc@boxa+\MethodeFrameTopSep + \dp\smc@boxa=\dimexpr\dp\smc@boxa+\MethodeFrameBottomSep + \hspace*{-\SquareWidth}% + \colorbox{MethodeIntroBkgFrameColor}{% + \hspace*{\MethodeFrameHSep}% + \usebox{\smc@boxa}% + \hspace*{\MethodeFrameHSep}% + }% + \par\vspace{5mm} + }% + \fi +% \end{macrocode} +% On ouvre maintenant la minipage pour l'exercice d'application. Avant +% de regarder son contenu, on place le cartouche. La largeur de la +% minipage est de 0.4 (par défaut) de la place restante. Comme on est +% dans une minipage, cela donne +% |(\linewidth-2*\SquareWidth-\RuleWidth)*\smc@ratio| +% \begin{macrocode} + \minipage[t]{\smc@ratio\dimexpr\linewidth-\SquareWidth*2-\RuleWidth}% + \smc@cartoucheexapp + \par +} +% \end{macrocode} +% On définit la macro |\correction| réelle pour cet +% environnement. Elle commence à fermer la minipage précédemment +% ouverte avant de passer à la ligne et d'ouvrir sa propre +% minipage. Entre les deux minipages, il y a les espacements et le +% filet. +% \begin{macrocode} +\newcommand*\smc@exappcorrection{% + \endminipage + \hspace{\SquareWidth}% + {% + \color{MethodeRuleColor}% + \vrule width \RuleWidth + }% + \hspace{\SquareWidth}% +% \end{macrocode} +% La largeur de la minipage est la même que celle pour l'énoncé de +% l'exercice sauf que c'est |1-\smc@ratio| au lieu de |\smc@ratio|. Cela +% oblige à un calcul externe. +% \begin{macrocode} + \dimen0=\dimexpr\linewidth-\SquareWidth*2-\RuleWidth + \minipage[t]{\dimen0-\smc@ratio\dimen0}% + \smc@cartouchecorr + \par +} +% \end{macrocode} +% \end{environment} +% \begin{environment}{methode*1} +% Le deuxième environnement méthode fonctionne comme le premier mais +% compose les exercices et les corrections sur une seule colonne. La +% syntaxe de cet environnement est :\\ +% |\begin{methode*1}[sous-titre]|\\ +% \quad texte introductif dans le cadre bleu\\ +% |\exercice|\\ +% \quad texte de l'exercice d'application\\ +% |\correction|\\ +% \quad texte de la correction\\ +% |\end{methode*1}|\\ +% En sachant qu'en fait, on peut répéter autant de fois que l'on veut +% les exercices et le corrections. +% \begin{macrocode} +\newenvironment{methode*1}[1][]{% + \par\addvspace{\BeforeMethodeVSpace} +% \end{macrocode} +% Seules les deux lignes suivantes diffèrent. +% \begin{macrocode} + \let\itemize\smc@exappitemize + \let\enditemize\endsmc@exappitemize + \let\colitemize\smc@exappcolitemize + \let\endcolitemize\endsmc@exappcolitemize + \let\enumerate\smc@exappenumerate + \let\endenumerate\endsmc@exappenumerate + \let\colenumerate\smc@exappcolenumerate + \let\endcolenumerate\endsmc@exappcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@one@exappexercice + \let\correction\smc@one@exappcorrection + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Methode}% + \hspace*{\dimexpr\SquareWidth*2}% + {% + \color{MethodeRuleColor}% + \vrule width \SquareWidth + }% + \hspace{\SquareWidth}% + \minipage{\dimexpr\linewidth-\SquareWidth*4}% + \hspace*{\dimexpr-\SquareWidth*2}% + \smc@titremethode[#1]% + \par + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\SquareWidth*5-\MethodeFrameHSep*2}% + \ignorespaces +} +{% + \end{changemargin} + \endminipage + \par +} +% \end{macrocode} +% On définit maintenant les macros qui deviendront les macros +% |\exercice| et |\correction| de l'environnement |methode*1|. +% +% On commence par le code de |\exercice|. Le début du code est +% similaire à celui de |\smc@exappexercice|, on indiquera uniquement +% les différences. Cela commence immédiatement avec une absence de +% paramètre optionnel puisqu'il n'y a qu'une seule colonne. En +% réalité, on acceptera un argument optionnel sans utilité (cela +% pourra servir lors de copier-coller). +% \begin{macrocode} +\newcommand*\smc@one@exappexercice[1][]{% + \endminipage + \end{lrbox}% + \ifdim\dimexpr\ht\smc@boxa+\dp\smc@boxa > 2.4pt + {% + \setlength{\fboxsep}{0pt}% + \ht\smc@boxa=\dimexpr\ht\smc@boxa+\MethodeFrameTopSep + \dp\smc@boxa=\dimexpr\dp\smc@boxa+\MethodeFrameBottomSep + \hspace*{-\SquareWidth}% + \colorbox{MethodeIntroBkgFrameColor}{% + \hspace*{\MethodeFrameHSep}% + \usebox{\smc@boxa}% + \hspace*{\MethodeFrameHSep}% + }% + \par\vspace{5mm} + }% + \fi +% \end{macrocode} +% On redéfinit la macro |\exercice| pour permettre plusieurs exercices +% dans le même environnement. +% \begin{macrocode} + \let\exercice\smc@one@@exappexercice +% \end{macrocode} +% Le code est maintenant beaucoup plus simple : il n'y a pas de début +% de minipage. On ne fait que composer le cartouche avec son espace +% après. Cela dit on doit revenir à une composition dans un empagement +% réduit. +% \begin{macrocode} + \begin{changemargin}{0mm}{\dimexpr\ExtraMarginRight}% + \smc@cartoucheexapp + \hspace{\AfterCartoucheHSpace}% +} +% \end{macrocode} +% Le code pour |\correction| est encore plus simple, il faut juste +% passer au paragraphe suivant et afficher le cartouche avec son +% espace après. +% \begin{macrocode} +\newcommand*\smc@one@exappcorrection{% + \par\vspace{\AfterExAppMethodeVSpace} + \smc@cartouchecorr + \hspace{\AfterCartoucheHSpace}% +} +% \end{macrocode} +% Les autres exercices sont comme |\correction| : très simples ! +% \begin{macrocode} +\newcommand\smc@one@@exappexercice[1][]{% + \par\vspace{\AfterExAppMethodeVSpace} + \smc@cartoucheexapp + \hspace{\AfterCartoucheHSpace}% +} +% \end{macrocode} +% \end{environment} +% \begin{environment}{methode*2*2} +% Le troisième environnement méthode fonctionne comme les deux +% premiers mais compose deux exercices d'application avec leurs +% corrections sur deux colonnes séparées par un filet aussi large que +% le filet gauche. +% +% La syntaxe de cet environnement est :\\ +% |\begin{methode*2*2}[sous-titre]|\\ +% \quad texte introductif dans le cadre bleu\\ +% |\exercice|\\ +% \quad texte du 1\ier{} exercice d'application\\ +% |\correction|\\ +% \quad texte de la 1\iere{} correction\\ +% |\exercice|\\ +% \quad texte du 2\ieme{} exercice d'application\\ +% |\correction|\\ +% \quad texte de la 2\ieme{} correction\\ +% |\end{methode*2}| +% +% Le code est quasiment identique à l'environnement |methode|, seule +% les assignations des macros |\exercice| et |\correction| sont +% différentes. +% \begin{macrocode} +\newenvironment{methode*2*2}[1][]{% + \par\addvspace{\BeforeMethodeVSpace} +% \end{macrocode} +% Les deux lignes suivantes sont la seule différence (appels de +% |\smc@@xxx| au lieu de |\smc@xxx|). +% \begin{macrocode} + \let\itemize\smc@exappitemize + \let\enditemize\endsmc@exappitemize + \let\colitemize\smc@exappcolitemize + \let\endcolitemize\endsmc@exappcolitemize + \let\enumerate\smc@exappenumerate + \let\endenumerate\endsmc@exappenumerate + \let\colenumerate\smc@exappcolenumerate + \let\endcolenumerate\endsmc@exappcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@@exappexercice + \let\correction\smc@@exappcorrection + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Methode}% + \hspace*{\dimexpr\SquareWidth*2}% + {% + \color{MethodeRuleColor}% + \vrule width \SquareWidth + }% + \hspace{\SquareWidth}% + \minipage{\dimexpr\linewidth-\SquareWidth*4}% + \hspace*{\dimexpr-\SquareWidth*2}% + \smc@titremethode[#1]% + \par + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\SquareWidth*5-\MethodeFrameHSep*2}% + \ignorespaces +} +{% + \endminipage + \endminipage + \par +} +% \end{macrocode} +% Il faut maintenant indiquer le code des macros qui deviendront les +% |\exercice| et |\correction| de l'environnement |methode*2*2|. +% +% On commence par le code de |\exercice|. Le code est très similaire +% à celui de |\smc@exappexercice|, on indiquera uniquement les +% différences. Cela commence immédiatement avec la valeur par défaut +% de la proportion de l'empagement pris : ce sera 0.5. +% \begin{macrocode} +\newcommand*\smc@@exappexercice[1][0.5]{% + \endminipage + \end{lrbox}% + \def\smc@ratio{#1}% + \ifdim\dimexpr\ht\smc@boxa+\dp\smc@boxa > 2.4pt + {% + \setlength{\fboxsep}{0pt}% + \ht\smc@boxa=\dimexpr\ht\smc@boxa+\MethodeFrameTopSep + \dp\smc@boxa=\dimexpr\dp\smc@boxa+\MethodeFrameBottomSep + \hspace*{-\SquareWidth}% + \colorbox{MethodeIntroBkgFrameColor}{% + \hspace*{\MethodeFrameHSep}% + \usebox{\smc@boxa}% + \hspace*{\MethodeFrameHSep}% + }% + \par\vspace{5mm} + }% + \fi +% \end{macrocode} +% La différence la plus importante et que le prochain appel de +% |\exercice| n'aura pas du tout le même rôle et pour cela, on modifie +% la signification de cette macro. +% \begin{macrocode} + \let\exercice\smc@@@exappexercice +% \end{macrocode} +% La largeur de la minipage n'est pas calculée exactement de la même +% façon et il n'y a pas de saut de paragraphe après le cartouche +% (seulement un espace). +% \begin{macrocode} + \minipage[t]{\smc@ratio\dimexpr\linewidth-\SquareWidth*3}% + \smc@cartoucheexapp + \hspace{\AfterCartoucheHSpace}% +} +% \end{macrocode} +% La macro de correction est beaucoup plus simple (encore que là +% aussi, il va falloir en prévoir deux). Elle ne fait que passer à la +% ligne, afficher le cartouche et l'espace horizontale. +% \begin{macrocode} +\newcommand\smc@@exappcorrection{% + \par\vspace{\AfterExAppMethodeVSpace} + \smc@cartouchecorr + \hspace{\AfterCartoucheHSpace}% +% \end{macrocode} +% En revanche, il faut prévoir que le prochain appel à |\correction| +% ne sera pas identique. D'où la redéfinition suivante. +% \begin{macrocode} + \let\correction\smc@@@exappcorrection +} +% \end{macrocode} +% On arrive maintenant dans l'appel de |\exercice| au moment où on +% commence la colonne de droite. +% \begin{macrocode} +\newcommand\smc@@@exappexercice{% +% \end{macrocode} +% On commence par fermer la minipage de la colonne de gauche puis à +% placer l'espacement, le filet large et l'espacement. +% \begin{macrocode} + \endminipage + \hspace{\SquareWidth}% + {% + \color{MethodeRuleColor}% + \vrule width \SquareWidth + }% + \hspace{\SquareWidth}% +% \end{macrocode} +% On peut alors ouvrir la deuxième minipage (colonne de droite). Il +% faut calculer sa largeur avec le ratio |1-\smc@ratio| +% \begin{macrocode} + \dimen0=\dimexpr\linewidth-\SquareWidth*3 + \minipage[t]{\dimen0-\smc@ratio\dimen0}% +% \end{macrocode} +% On termine comme précédemment en affichant le cartouche et +% l'espace. +% \begin{macrocode} + \smc@cartoucheexapp + \hspace{\AfterCartoucheHSpace}% +} +% \end{macrocode} +% Le code de la macro |\correction| de la deuxième colonne est +% exactement celle de la première mais sans avoir besoin de redéfinir +% cette macro. +% \begin{macrocode} +\newcommand\smc@@@exappcorrection{% + \par\vspace{\AfterExAppMethodeVSpace} + \smc@cartouchecorr + \hspace{\AfterCartoucheHSpace}% +} +% \end{macrocode} +% \end{environment} +% \begin{environment}{methode*2} +% Le quatrième environnement méthode fonctionne comme les trois +% premiers au niveau de la syntaxe mais compose les deux colonnes en +% mode effectivement double colonne. C'est-à-dire que ce n'est pas le +% début de la correction qui déterminera le début de la colonne de +% droite. +% +% La syntaxe de cet environnement est :\\ +% |\begin{methode*2}[sous-titre]|\\ +% \quad texte introductif dans le cadre bleu\\ +% |\exercice|\\ +% \quad texte du 1\ier{} exercice d'application\\ +% |\correction|\\ +% \quad texte de la 1\iere{} correction\\ +% |\end{methode*2}| +% +% Tout le début du code ne change pas (sauf pour la définition de +% |\exercice|. +% \begin{macrocode} +\newenvironment{methode*2}[1][]{% + \par\addvspace{\BeforeMethodeVSpace} + \let\itemize\smc@exappitemize + \let\enditemize\endsmc@exappitemize + \let\colitemize\smc@exappcolitemize + \let\endcolitemize\endsmc@exappcolitemize + \let\enumerate\smc@exappenumerate + \let\endenumerate\endsmc@exappenumerate + \let\colenumerate\smc@exappcolenumerate + \let\endcolenumerate\endsmc@exappcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@@@@exappexercice +% \end{macrocode} +% La définition précédente de |\correction| est celle qui convient ici. +% \begin{macrocode} + \let\correction\smc@@@exappcorrection + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Methode}% + \hspace*{\dimexpr\SquareWidth*2}% + {% + \color{MethodeRuleColor}% + \vrule width \SquareWidth + }% + \hspace{\SquareWidth}% + \minipage{\dimexpr\linewidth-\SquareWidth*4}% + \hspace*{\dimexpr-\SquareWidth*2}% + \smc@titremethode[#1]% + \par + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\SquareWidth*5-\MethodeFrameHSep*2}% + \ignorespaces +} +{% +% \end{macrocode} +% En fin d'environnement, on termine la boîte verticale. +% \begin{macrocode} + \egroup +% \end{macrocode} +% On coupe cette boîte en deux boîtes de hauteur approximativement +% égale. Et on place ces deux boîtes côte à côte après avoir restauré +% l'empagement. +% \begin{macrocode} + \dimen0=\dimexpr (\ht\smc@boxa+\dp\smc@boxa)/2 + \setbox\smc@boxb = \vsplit\smc@boxa to \dimen0 +% \end{macrocode} +% On restaure alors l'empagement et on affiche les deux boîtes côte à +% côte. +% \begin{macrocode} + \hsize \smc@hsize + \linewidth \smc@linewidth + \usebox{\smc@boxb} + \hspace{\SquareWidth}% + {% + \color{MethodeRuleColor}% + \vrule width \RuleWidth + }% + \hspace{\SquareWidth}% + \usebox{\smc@boxa} + \endminipage + \par +} +% \end{macrocode} +% On définit maintenant le code pour la macro |\exercice| de +% l'environnement |methode*1|. Le début du code sert à gérer +% l'éventuel texte préliminaire et ne présente pas de différence avec +% les codes des autres environnements de méthode. +% \begin{macrocode} +\newcommand*\smc@@@@exappexercice{% + \endminipage + \end{lrbox}% + \ifdim\dimexpr\ht\smc@boxa+\dp\smc@boxa > 2.4pt + {% + \setlength{\fboxsep}{0pt}% + \ht\smc@boxa=\dimexpr\ht\smc@boxa+\MethodeFrameTopSep + \dp\smc@boxa=\dimexpr\dp\smc@boxa+\MethodeFrameBottomSep + \hspace*{-\SquareWidth}% + \colorbox{MethodeIntroBkgFrameColor}{% + \hspace*{\MethodeFrameHSep}% + \usebox{\smc@boxa}% + \hspace*{\MethodeFrameHSep}% + }% + \par\vspace{5mm} + }% + \fi +% \end{macrocode} +% En revanche, la suite est nettement différente. Il va falloir +% remplir une boîte verticale avec le reste du corps de +% l'environnement (en commençant par le cartouche exercice). Cette +% boîte verticale se construit avec un |\hsize| et |\linewidth| +% particuliers. On sauvegarde donc leurs valeurs. +% \begin{macrocode} + \edef\smc@hsize{\the\hsize}% + \edef\smc@linewidth{\the\linewidth}% + \hsize = \dimexpr (\linewidth-\SquareWidth*3-\RuleWidth)/2 + \linewidth = \hsize + \setbox\smc@boxa = \vbox\bgroup +% \end{macrocode} +% On commence par placer le cartouche +% \begin{macrocode} + \smc@cartoucheexapp + \hspace{\AfterCartoucheHSpace}% +} +% \end{macrocode} +% \end{environment} +% \begin{environment}{commentaire} +% L'environnement |commentaire| permet d'avoir un texte libre ayant le +% même empagement que le texte de définition. +% \begin{macrocode} +\newenvironment{commentaire}{% + \let\itemize\smc@commentaireitemize + \let\enditemize\endsmc@commentaireitemize + \let\colitemize\smc@commentairecolitemize + \let\endcolitemize\endsmc@commentairecolitemize + \let\enumerate\smc@commentaireenumerate + \let\endenumerate\endsmc@commentaireenumerate + \let\colenumerate\smc@commentairecolenumerate + \let\endcolenumerate\endsmc@commentairecolenumerate + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \begin{changemargin}{\dimexpr\SquareWidth*4} + {\dimexpr\ExtraMarginRight+\SquareWidth} +} +{\end{changemargin}} +% \end{macrocode} +% \end{environment} +% \subsection{Exercices de base} +% \begin{macro}{\exercicesbase} +% Cette macro introduit la partie \og Exercices de base \fg{} dans un +% chapitre. Elle autorise l'utilisation des listes et des macros +% |\exercice| et |\correction| en dehors de tout environnement ainsi +% que de la macro |\partie|. +% \begin{macrocode} +\newcommand*\exercicesbase{% + \clearpage + \pagestyle{exercicesbase} + \addtocontents{cor}{\protect\smc@corrigeexercicesbase}% + \let\itemize\smc@exerciceitemize + \let\enditemize\endsmc@exerciceitemize + \let\colitemize\smc@exercicecolitemize + \let\endcolitemize\endsmc@exercicecolitemize + \let\enumerate\smc@exerciceenumerate + \let\endenumerate\endsmc@exerciceenumerate + \let\colenumerate\smc@exercicecolenumerate + \let\endcolenumerate\endsmc@exercicecolenumerate + \let\exercice\smc@exobaseexercice + \let\endexercice\endsmc@exobaseexercice + \let\corrige\smc@exobasecorrige + \let\endcorrige\endsmc@exobasecorrige + \let\correction\smc@nocorrection + \let\partie\smc@exercice@partie + \def\smc@currpart{ExoBase}% +} +% \end{macrocode} +% \end{macro} +% \begin{environment}{colonne*exercice} +% Il faut un environnement particulier pour composer les exercices sur +% deux colonnes. Cet environnement sera le même pour les exercices de +% base et les exercices d'approfondissement. +% \begin{macrocode} +\newenvironment{colonne*exercice}{% +% \end{macrocode} +% Cet environnement ne fait que composer le matériel en double colonne +% avec un séparation faite d'un filet vertical et de deux espacements +% horizontaux d'un |\Squarewidth| chacun. +% \begin{macrocode} + \columnsep \dimexpr \SquareWidth*2 + \columnseprule \RuleWidth + \def\columnseprulecolor{\color{ExerciceColumnRuleColor}}% + \begin{multicols}{2}% + \ignorespaces +} +{\end{multicols}} +% \end{macrocode} +% \end{environment} +% \begin{macro}{\serie} +% Cette macro permet de composer un titre pour un groupement +% d'exercices. L'argument est le titre. +% \begin{macrocode} +\newcommand*\serie[1]{% + \par\addvspace{\BeforeExercicesTitleVSpace} + \begin{pspicture}(0,-\SquareWidth) + (\linewidth,\dimexpr\SquareWidth*2) + \psframe*[linewidth=0pt,linecolor=ExercicesTitleHRuleColor] + (0,-\SquareWidth)(\linewidth,0) + \psframe*[linewidth=0pt,linecolor=ExercicesTitleVRuleColor] + (0,-\SquareWidth)(\SquareWidth,\dimexpr \SquareWidth*2) + \psframe*[linewidth=0pt,linecolor=ExercicesTitleSquareColor] + (0,-\SquareWidth)(\SquareWidth,0) + \rput[Bl](\dimexpr \SquareWidth+\ExercicesTitleHSep, + \ExercicesTitleVSep) + {\ExercicesTitleFont \textcolor{ExercicesTitleColor}{#1}} + \end{pspicture}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\exercice} +% Chaque exercice est indiqué par la macro |\exercice|. Celle-ci admet +% deux arguments optionnels qui donnent dans l'ordre le titre et un +% logo pour l'exercice. Pour gérer les endroits où on peut ou non +% utiliser la macro |\exercice|. On procède en deux temps. On définit +% une macro |\smc@exercice| et une macro |\smc@noexercice|. +% +% La macro |\smc@noexercice| est très simple : elle ne fait que lever +% une erreur. +% \begin{macrocode} +\newcommand\smc@noexercice{% + \ClassError{sesamanuel}{Vous ne pouvez pas utiliser la macro + \string\exercice\space ici}{Reportez-vous à la documentation pour + l'utilisation de la macro \string\exercice.} +} +% \end{macrocode} +% Par défaut, ce sont les macros |\smc@noexercice| et +% |\smc@nocorrection| qui sont actives. +% \begin{macrocode} +\let\exercice\smc@noexercice +\let\correction\smc@nocorrection +% \end{macrocode} +% On définit maintenant la macro |\smc@exobaseexercice| qui indiquera la +% façon de composer les exercices dans la partie dédiée aux +% exercices d'entrainement. +% +% Cette macro a deux arguments optionnels. Le premier est le titre, le +% second est le logo. Elle propose également une version étoilée qui +% indique que la correction sera affichée dans l'ouvrage. +% \begin{macrocode} +\newif\ifsmc@exercicecorrige +\newcounter{exercice}[chapter] +% \end{macrocode} +% On regarde s'il y a ou non une étoile. Selon le cas, on met le +% booléen |\ifsmc@exercicecorrige| à la bonne valeur. +% \begin{macrocode} +\newcommand*\smc@exobaseexercice{% + \@ifstar + {% + \smc@exercicecorrigetrue + \smc@@exercice + } + {% + \smc@exercicecorrigefalse + \smc@@exercice + } +} +% \end{macrocode} +% On lit ensuite le premier argument optionnel +% \begin{macrocode} +\newcommand*\smc@@exercice[1][]{% +% \end{macrocode} +% On sauvegarde le texte du titre est on appelle la macro auxiliaire +% pour lire le deuxième argument optionnel. +% \begin{macrocode} + \def\smc@exercicetitle{#1}% + \smc@@@exercice +} +\newcommand*\smc@@@exercice[1][]{% +% \end{macrocode} +% On commence par passer au paragraphe suivant et réinitialiser le compteur +% partie. +% \begin{macrocode} + \par\addvspace{\BeforeExerciceVSpace} + \setcounter{partie}{0} +% \end{macrocode} +% La présence d'un logo va faire qu'on ne composera pas le titre (ou +% le texte) de la même façon. S'il y a un logo, on utilise la commande +% |\parpic| pour habiller le logo. Sinon on ne fait rien de spécial. +% \begin{macrocode} + \@ifnotmtarg{#1}{% + \setbox0=\hbox{#1}% + \parpic[r]{\makebox[\wd0][l]{{#1}}} + }% +% \end{macrocode} +% On compose le numéro de l'exercice. La couleur du cadre dépend du +% fait que l'exercice est corrigé ou non. +% \begin{macrocode} + \refstepcounter{exercice}% + \begin{pspicture}(0,0)(\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \ifsmc@exercicecorrige + \psframe*[linewidth=0pt, linecolor=ExerciceCorrigeNumFrameColor] + (0,-\ExerciceNumFrameDepth) + (\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \else + \psframe*[linewidth=0pt, linecolor=ExerciceNumFrameColor] + (0,-\ExerciceNumFrameDepth) + (\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \fi + \rput[B](\dimexpr\ExerciceNumFrameWidth/2,0){% + \textcolor{ExerciceNumColor}{\ExerciceNumFont \theexercice}% + } + \end{pspicture}% +% \end{macrocode} +% Y a-t-il un titre d'exercice ? +% \begin{macrocode} + \ifx\smc@exercicetitle\empty +% \end{macrocode} +% S'il n'y a pas de titre, on commence le texte de l'exercice (après +% un certain espacement horizontal). +% \begin{macrocode} + \hspace{\ExerciceTextHSep}% + \else +% \end{macrocode} +% S'il y a un titre, on le compose et on passe au paragraphe suivant. +% \begin{macrocode} + \hspace{\ExerciceTextHSep}% + \textcolor{ExerciceTitleColor} + {\ExerciceTitleFont \smc@exercicetitle}% + \par\nobreak + \fi +} +% \end{macrocode} +% En fait, on utilisera plutôt la forme d'environnement pour entrer +% les exercices. Le code terminal ne fait que placer un |\par| (cela +% peut être utile pour activer un éventuel |\centering| en fin de +% code. +% \begin{macrocode} +\def\endsmc@exercice{\par} +% \end{macrocode} +% Pour la forme en environnement, on doit définir l'environnement +% |exercice*|. Cet environnement fait le travail initial de la macro +% étoilée et revient immédiatement sur la partie commune. +% \begin{macrocode} +\newenvironment{exercice*} +{% + \smc@exercicecorrigetrue + \smc@@exercice +} +{\par} +% \end{macrocode} +% On définit l'environnement |smc@exoapprexercice| comme étant un +% alias de |smc@exobaseexercice|. +% \begin{macrocode} +\let\smc@exoapprexercice\smc@exobaseexercice +\let\endsmc@exoapprexercice\endsmc@exobaseexercice +% \end{macrocode} +% \end{macro} +% \begin{environment}{corrige} +% L'environnement |corrige| va enregistrer la correction d'un exercice +% dont l'énoncé vient d'être fourni. Le principe général va être de +% sauvegarder les corrigés dans des fichiers |.tex| séparés. +% +% \begin{macro}{\killienc} +% Pour utiliser \package{fancyvrb} même en UTF-8, il faut désactiver +% tous les codes de caractère supérieurs à 127. La commande +% |\killienc| va automatiquement construire la suite de commande :\\ +% |\catcode=12|\\ +% où || ira de 128 à 255. +% \begin{macrocode} +\newcommand\killienc{} +\count@128 +\@whilenum\count@<\@cclvi\do{% + \edef\killienc{\killienc\catcode\the\count@=12}% + \advance\count@\@ne} +% \end{macrocode} +% \end{macro} +% La macro |\killienc| étant en place, on peut définir l'environnement +% |corrige|. En réalité, comme pour plusieurs éléments de la classe, +% il y aura plusieurs types d'environnement |corrige|, la sélection se +% faisant au moment des besoins. On commence par définir +% l'environnement qui indique qu'on n'a pas le droit d'utiliser cet +% environnement ! +% \begin{macrocode} +\newenvironment{smc@nocorrige} +{% + \ClassError{sesamanuel}{Il est interdit d'utiliser corrige ici} + {Consultez la documentation pour plus de renseignements.}% +} +{} +% \end{macrocode} +% En réalité, il y a de multiples environnements qui auront pour nom +% |corrige|. On définit d'abord celui pour l'auto-évaluation. +% \begin{macrocode} +\newenvironment{smc@AEcorrige} +{% +% \end{macrocode} +% On écrit dans le fichier de correction général l'ordre de chargement +% du corrigé en cours. +% \begin{macrocode} + \addtocontents{cor}{% + \protect\inputcor{\smc@currpart}{\smc@thema@initcap\thechapter} + {\the\c@AEexo}% + }% +% \end{macrocode} +% On utilise ensuite |killienc| pour tuer les caractères actifs. +% \begin{macrocode} + \killienc +% \end{macrocode} +% Vient ensuite la commande magique du package \package{fancyvrb} pour +% permettre de créer soi-même des environnements verbatim. +% \begin{macrocode} + \VerbatimEnvironment +% \end{macrocode} +% Attention, cette ligne doit être la dernière et il ne doit même pas +% y avoir de saut de ligne avant l'accolade fermante de la partie +% initiale de l'environnent. +% \begin{macrocode} + \begin{VerbatimOut}{\PrefixeCorrection corr-\smc@currpart-\smc@thema@initcap\thechapter-\the\c@AEexo}} +{% + \end{VerbatimOut} +} +% \end{macrocode} +% Le corrigé pour les exercices de base se comporte de la même façon +% (sauf pour le compteur d'exercice). +% \begin{macrocode} +\newenvironment{smc@exobasecorrige} +{% + \addtocontents{cor}{% + \protect\inputcor{\smc@currpart}{\smc@thema@initcap\thechapter} + {\the\c@exercice}% + }% + \killienc + \VerbatimEnvironment + \begin{VerbatimOut}{\PrefixeCorrection corr-\smc@currpart-\smc@thema@initcap\thechapter-\the\c@exercice}} +{% + \end{VerbatimOut} +} +% \end{macrocode} +% Un certain nombre d'environnements de correction se comportent +% exactement comme le précédent. On les définit en tant qu'alias. +% \begin{macrocode} +\let\smc@exoapprcorrige\smc@exobasecorrige +\let\endsmc@exoapprcorrige\endsmc@exobasecorrige +\let\smc@recreationcorrige\smc@exobasecorrige +\let\endsmc@recreationcorrige\endsmc@exobasecorrige +\let\smc@QCMcorrige\smc@exobasecorrige +\let\endsmc@QCMcorrige\endsmc@exobasecorrige +\let\smc@librecorrige\smc@exobasecorrige +\let\endsmc@librecorrige\endsmc@exobasecorrige +% \end{macrocode} +% La correction des énigmes ne peut pas se faire strictement de la +% même façon puisqu'il n'y a pas de numéro d'exercice. C'est le seul +% point qui diffère. +% \begin{macrocode} +\newenvironment{smc@enigmecorrige} +{% + \addtocontents{cor}{% + \protect\inputcor{\smc@currpart}{\smc@thema@initcap\thechapter}{}% + }% + \killienc + \VerbatimEnvironment + \begin{VerbatimOut}{\PrefixeCorrection corr-\smc@currpart-\smc@thema@initcap\thechapter}} +{% + \end{VerbatimOut} +} +% \end{macrocode} +% La correction des TP se fait avec le numéro de TP +% \begin{macrocode} +\newenvironment{smc@TPcorrige} +{% + \addtocontents{cor}{% + \protect\inputcor{\smc@currpart}{\smc@thema@initcap\thechapter} + {\the\c@activite}% + }% + \killienc + \VerbatimEnvironment + \begin{VerbatimOut}{\PrefixeCorrection corr-\smc@currpart-\smc@thema@initcap\thechapter-\the\c@activite}} +{% + \end{VerbatimOut} +} +% \end{macrocode} +% \end{environment} +% \subsection{Exercices d'approfondissement} +% \begin{macro}{\exercicesappr} +% Cette macro introduit la partie \og Exercices d'approfondissement +% \fg{} dans un chapitre. Elle autorise l'utilisation des listes et +% des macros |\exercice| et |\correction| en dehors de tout +% environnement. +% \begin{macrocode} +\newcommand*\exercicesappr{% + \clearpage + \pagestyle{exercicesappr} + \addtocontents{cor}{\protect\smc@corrigeexercicesappr}% + \let\itemize\smc@exerciceitemize + \let\enditemize\endsmc@exerciceitemize + \let\colitemize\smc@exercicecolitemize + \let\endcolitemize\endsmc@exercicecolitemize + \let\enumerate\smc@exerciceenumerate + \let\endenumerate\endsmc@exerciceenumerate + \let\colenumerate\smc@exercicecolenumerate + \let\endcolenumerate\endsmc@exercicecolenumerate + \let\exercice\smc@exoapprexercice + \let\endexercice\endsmc@exoapprexercice + \let\corrige\smc@exoapprcorrige + \let\endcorrige\endsmc@exoapprcorrige + \let\correction\smc@nocorrection + \let\partie\smc@exercice@partie + \def\smc@currpart{ExoAppr}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\recreation} +% Cette macro introduit la partie \og Récréation, énigme \fg{} avec +% son bandeau. +% \begin{macrocode} +\newcommand*\recreation{% + \par\addvspace{\BeforeRecreationVSpace} + \begin{pspicture}(0,0)(\linewidth,\dimexpr\SquareWidth*3) + \psframe*[linewidth=0pt,linecolor=RecreationHeadFrame5Color] + (0,0)(\linewidth,\dimexpr\SquareWidth*3) + \psset{fillstyle=solid} + \smc@antidiagonal(0mm,0mm){RecreationHeadFrame} + \rput[Bl](\dimexpr \SquareWidth*4,\SquareWidth){% + \textcolor{RecreationHeadFrame0Color}{\RecreationFont \StringRecreation}% + } + \psset{linewidth=0pt} + \smc@putsquare(32,2){J1} + \smc@putsquare(33,0){H4} + \smc@putsquare(34,1){H2} + \smc@putsquare(37,1){F3} + \smc@putsquare(39,0){H2} + \smc@putsquare(42,2){J2} + \smc@putsquare(46,1){H4} + \end{pspicture} + \par\addvspace{\AfterRecreationVSpace} +} +% \end{macrocode} +% La macro suivante permet de limiter le code dans la macro +% précédente. Elle place un carré de la couleur indiquée en troisième +% argument à la position indiquée en unité |\SquareWidth| +% \begin{macrocode} +\def\smc@putsquare(#1,#2)#3{% + \rput(\dimexpr \SquareWidth*#1,\dimexpr \SquareWidth*#2) + {\psframe*[linecolor=#3](0,0)(\SquareWidth,\SquareWidth)} + \ignorespaces +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Recreation} +% Cette macro propose une présentation avec les en-tête de page. Elle +% va fonctionner comme toutes les autres commandes de parties. +% \begin{macrocode} +\newcommand*\Recreation{% + \clearpage +% \end{macrocode} +% On modifie l'en-tête de page. +% \begin{macrocode} + \pagestyle{recreation} +% \end{macrocode} +% Contrairement aux autres parties, on ne redéfinit pas les listes et +% les exercices. Il s'agit en fait d'une parti fictive qui va prendre +% les valeurs de la partie en cours. On ne va même pas redéfinir la +% macro |\smc@currpart|. +% \begin{macrocode} +} +% \end{macrocode} +% \end{macro} +% \subsection{Je teste mes connaissances} +% \begin{macro}{\connaissances} +% Cette macro introduit la partie \og Je teste mes connaissances \fg{} +% dans un chapitre. Elle ne se comporte pas comme les autres parties +% de chapitre. Elle interdit l'utilisation des listes et des macros +% |\exercice| et |\correction| en dehors des environnements. +% \begin{macrocode} +\newcommand*\connaissances{% + \clearpage +% \end{macrocode} +% Les en-têtes et pieds de page sont spéciales (voire définition de +% |\ps@connaissances| et |\ps@firstconnaissances|). +% \begin{macrocode} + \pagestyle{connaissances} + \thispagestyle{firstconnaissances} + \addtocontents{cor}{\protect\smc@corrigeconnaissances}% + \let\itemize\smc@noitemize + \let\enditemize\endsmc@noitemize + \let\colitemize\smc@nocolitemize + \let\endcolitemize\endsmc@nocolitemize + \let\enumerate\smc@noenumerate + \let\endenumerate\endsmc@noenumerate + \let\colenumerate\smc@nocolenumerate + \let\endcolenumerate\endsmc@nocolenumerate +% \end{macrocode} +% Les exercices ne seront accessibles qu'une fois la macro +% |\QCMautoevaluation| appelée. Avant cette macro, il faut +% effectivement que les exercices soient interdits. +% \begin{macrocode} + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \let\correction\smc@nocorrection + \let\partie\smc@nopartie + \def\smc@currpart{Connaissances}% +} +% \end{macrocode} +% \end{macro} +% \begin{environment}{acquis} +% L'environnement |acquis| permet de composer la liste des capacités +% que l'élève doit avoir en fin de chapitre. Il se compose d'une +% phrase introductive suivi d'un cadre en double colonne où on compose +% la liste des capacités attendues. +% \begin{macrocode} +\newenvironment{acquis}{% + \par +% \end{macrocode} +% On commence par redéfinir les listes à puces. En théorie, cela ne +% sert à rien mais on va également définir les listes numérotées. +% \begin{macrocode} + \let\itemize\smc@acquisitemize + \let\enditemize\endsmc@acquisitemize + \let\colitemize\smc@acquiscolitemize + \let\endcolitemize\endsmc@acquiscolitemize + \let\enumerate\smc@acquisenumerate + \let\endenumerate\endsmc@acquisenumerate + \let\colenumerate\smc@acquiscolenumerate + \let\endcolenumerate\endsmc@acquiscolenumerate + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \let\correction\smc@nocorrection + \let\partie\smc@nopartie + \def\smc@currpart{Acquis}% +% \end{macrocode} +% Titre du cadre. +% \begin{macrocode} + {% + \AcquisTitleFont + \textcolor{AcquisTitleColor}{\StringAcquisTitle}% + \par\vspace{\AcquisTitleVSpace}% + }% +% \end{macrocode} +% Cadre lui même. L'environnement \environ{multicols} oblige à ajouter +% un espace vertical négatif. +% \begin{macrocode} + \smc@cadre{AcquisBkgColor} + \vspace*{-4.5pt} + \begin{multicols}{2} + \AcquisTextFont +} +{% + \end{multicols}% + \endsmc@cadre + \par +} +% \end{macrocode} +% \end{environment} +% \begin{macro}{\QCMautoevaluation} +% Macro d'introduction à la partie des QCM. Cela consiste à afficher +% le cartouche avec le texte \og QCM d'auto-évaluation \fg{} ainsi +% qu'un éventuel texte en gras au-dessous (passé en paramètre). +% \begin{macrocode} +\newcommand*\QCMautoevaluation[1]{% + \def\smc@currpart{QCM}% + \par\addvspace{\BeforeQCMAEVSpace} +% \end{macrocode} +% Le cadre est placé dans une minipage de la bonne largeur. On +% supprime tous les espacements entre les bords du cadre et on +% redéfinit |\FrameArc| pour que les arrondis du cadre se définissent +% avec 10/2 pour épouser les disques. +% \begin{macrocode} + \begingroup + \def\FrameSep{0pt}% + \edef\FrameArc{\QCMAETitleHeight}% + \minipage[b][\QCMAETitleHeight]{\QCMAETitleWidth}% + \begin{smc@cadre}[5,0,5,5]{QCMAEFrameColor}% + \minipage[b][\QCMAETitleHeight]{\QCMAETitleWidth}% +% \end{macrocode} +% Il reste un mini débord du cadre qu'on supprime en commençant +% l'image à |1pt| au lieu de |0| à gauche. +% \begin{macrocode} + \begin{pspicture}(1pt,0)(\QCMAETitleHeight,\QCMAETitleHeight) +% \end{macrocode} +% Les trois disques concentriques. Le plus grand faisant toute la +% hauteur, le plus petit deux tiers de la hauteur et celui du milieu à +% mi-chemin. +% \begin{macrocode} + \pscircle*[linecolor=QCMAETitleCircle1Color] + (\dimexpr\QCMAETitleHeight/2, + \dimexpr\QCMAETitleHeight/2) + {\dimexpr\QCMAETitleHeight/2} + \pscircle*[linecolor=QCMAETitleCircle2Color] + (\dimexpr\QCMAETitleHeight*5/12, + \dimexpr\QCMAETitleHeight*7/12) + {\dimexpr\QCMAETitleHeight*5/12} + \pscircle*[linecolor=QCMAETitleCircle3Color] + (\dimexpr\QCMAETitleHeight/3, + \dimexpr\QCMAETitleHeight*2/3) + {\dimexpr\QCMAETitleHeight/3} +% \end{macrocode} +% Le titre. +% \begin{macrocode} + \rput[Bl](\QCMAETitleLeftSpace,\dimexpr\QCMAETitleHeight/6) + {\textcolor{QCMAETitleColor}{\QCMAETitleFont\StringQCMAE}} + \end{pspicture}% + \endminipage + \end{smc@cadre} + \endminipage + \endgroup +% \end{macrocode} +% À la suite du cartouche, on place les lignes de référence au manuel +% numérique. +% \begin{macrocode} + \hspace*{\stretch{1}}% + \begin{minipage}[b]{\QCMAEManuelWidth} + \raggedright + \QCMAEManuelFont + \StringManuel + \par\vspace*{\AfterQCMAEManuelVSpace} + \end{minipage}% +% \end{macrocode} +% On affiche ensuite le logo. +% \begin{macrocode} + \hspace{\QCMAEManuelRightSpace}% + \raisebox{\AfterQCMAEManuelVSpace} + {\psscaleboxto(\AELogoManuelWidth,0){\LogoManuel}}% +% \end{macrocode} +% Il reste à placer un espace vertical, à afficher le texte en +% argument puis à placer un dernier espace vertical. +% \begin{macrocode} + \par\nobreak\vspace{\AfterQCMAETitleVSpace} + {\QCMAETextAfterTitleFont #1\par\nobreak} + \par\nobreak\addvspace{\AfterQCMAETextVSpace} +} +% \end{macrocode} +% \end{macro} +% \begin{environment}{QCM} +% L'environnement |QCM| regroupe un éventuel énoncé commun à plusieurs +% QCM et une série de plusieurs QCM. Le tout va être encadré par un +% cadre à bord arrondi en haut. +% \begin{macrocode} +\newenvironment{QCM}{% + \begin{lrbox}{\smc@boxa} + \minipage{\dimexpr\linewidth-\QCMLineWidth*2-\QCMFrameSep*2} +% \end{macrocode} +% On pose les nœuds du haut du cadre dès l'entrée dans la +% minipage. Pour que ces nœuds soient toujours correctement posés, on +% commence par faire une petite manœuvre de paragraphe +% \begin{macrocode} + \par\null + \pnode(\dimexpr -\QCMFrameSep-\QCMLineWidth/2, + \dimexpr \QCMFrameSep+\QCMLineWidth/2){A} + \pnode(\dimexpr \linewidth+\QCMFrameSep+\QCMLineWidth/2, + \dimexpr +\QCMFrameSep+\QCMLineWidth/2){B} + \par +} +{% +% \end{macrocode} +% En fin de minipage, on pose les nœuds du bas du cadre et ceux de +% milieu de cadre. +% \begin{macrocode} + \par\vspace{-\baselineskip} + \pnode(\dimexpr -\QCMFrameSep-\QCMLineWidth/2, + \dimexpr -\QCMFrameSep-\QCMLineWidth/2){C} + \pnode(\dimexpr \linewidth+\QCMFrameSep+\QCMLineWidth/2, + \dimexpr -\QCMFrameSep-\QCMLineWidth/2){D} + \psRelNode(A)(C){0.5}{AC} + \psRelNode(B)(D){0.5}{BD} + \endminipage + \end{lrbox} +% \end{macrocode} +% Le contenu de l'environnement est placé dans la boîte +% |\smc@boxa|. On place maintenant l'espace vertical qui précède. +% \begin{macrocode} + \par\addvspace{\BeforeQCMVSpace} +% \end{macrocode} +% On place ensuite la boîte en ayant pris soin de descendre de la +% distance correspondant à la largeur de ligne plus la séparation +% d'avec le cadre. +% \begin{macrocode} + \vspace{\dimexpr\QCMLineWidth+\QCMFrameSep} + \hspace*{\dimexpr\QCMLineWidth+\QCMFrameSep}% + \copy\smc@boxa +% \end{macrocode} +% On peut alors tracer le cadre. +% \begin{macrocode} + \psline[linewidth=\QCMLineWidth, linecolor=QCMLineColor](AC)(C)(D)(BD) + \psline[linewidth=\QCMLineWidth, linecolor=QCMLineColor, + linearc=\QCMLineArc](C)(A)(B)(D) +% \end{macrocode} +% On place alors l'espace vertical de compensation de la largeur de +% ligne et de l'espace d'avec le cadre l'espace après le groupe de QCM. +% \begin{macrocode} + \par\vspace{\dimexpr\QCMLineWidth+\QCMFrameSep} + \addvspace{\AfterQCMVSpace} +} +% \end{macrocode} +% \end{environment} +% \begin{environment}{EnonceCommunQCM} +% L'environnement |EnonceCommunQCM| permet d'avoir un chapeau pour un +% groupe de QCM. Il n'y a rien de spécial à ce niveau. +% \begin{macrocode} +\newenvironment{EnonceCommunQCM}{% +} +{% +} +% \end{macrocode} +% \end{environment} +% \begin{environment}{GroupeQCM} +% Dans cet environnement, on place l'ensemble des exercices d'un +% groupe. On va donc définir l'environnement exercice. +% \begin{macrocode} +\newenvironment{GroupeQCM}{% + \let\exercice\smc@QCMexercice + \let\endexercice\endsmc@QCMexercice + \let\corrige\smc@QCMcorrige + \let\endcorrige\endsmc@QCMcorrige +} +{% +} +% \end{macrocode} +% \end{environment} +% \begin{environment}{smc@QCMexercice} +% Environnement \environ{exercice} pour les QCM. C'est le même code +% que pour l'environnement \environ{exercice} de l'auto-évaluation. +% \begin{macrocode} +\newenvironment{smc@QCMexercice}{% + \par + \refstepcounter{exercice}% + \psframebox*[linestyle=none, linewidth=0pt, + fillcolor=QCMExoNumFrameColor, framesep=\QCMExoFrameTopSep]{% + \hbox to\dimexpr\QCMExoFrameWidth-\QCMExoFrameTopSep*2{% + \hss + \QCMExoNumFont + \textcolor{QCMExoNumColor}{\theexercice}% + \hss + }% + }% + \hspace{\AfterQCMExoFrameHSpace}% + \ignorespaces +} +{\par} +% \end{macrocode} +% \end{environment} +% \begin{environment}{ChoixQCM} +% L'environnement \environ{ChoixQCM} se comporte exactement comme un +% \environ{colenumerate} sauf que la façon de composer le numéro n'est +% pas le même (il n'y a qu'un seul niveau et les numéros sont +% encerclés et écrits alphabétiquement). +% +% Le nombre est composé sous forme d'une lettre encerclée. Le package +% \package{pifont} offre cette fonctionnalité à partir du code 172 +% (seulement jusqu'à 10). La macro de mise en forme peut être définie +% en dehors de l'environnement puisqu'elle servira toujours de la même +% façon. +% \begin{macrocode} +\newcounter{QCM} +\newcommand*\QCMLabel[1]{% + \textcolor{QCMItemNumColor} + {% + \QCMItemNumFont + \pscirclebox[linewidth=0.4pt, framesep=1pt, + linecolor=QCMItemNumColor, boxsep=true] + {\vphantom{dp}\@alph{#1}} + }% +}% +\newenvironment{ChoixQCM}[1]{% + \par\leavevmode +% \end{macrocode} +% Le reste ressemble au code général des \environ{colenumerate}. +% \begin{macrocode} + \def\smc@nbcolumn{#1}% + \smc@nbitem \z@ + \def\StringColCurrent{ChoixQCM}% + \toks@{}% + \smc@getbody +} +{% + \expandafter\smc@splititem\the\toks@\item\@nil\item + \smc@nbline \numexpr \smc@nbitem+\smc@nbcolumn-1 + \divide\smc@nbline \smc@nbcolumn + \multido{\n=1+1}{\smc@nbline}{% + \multido{\ni=\n+\the\smc@nbline}{\smc@nbcolumn}{% + \unless\ifnum\ni>\smc@nbitem + \makebox[\QCMLabelWidth]{\QCMLabel{\ni}\hss}% + \begin{minipage}[t]{\dimexpr + (\linewidth-\ListHSep*(\smc@nbcolumn-1))% + /\smc@nbcolumn-\QCMLabelWidth} + \strut\@nameuse{smc@item\ni}\strut + \end{minipage}% + \hspace{\ListHSep}% + \fi + }% +% \end{macrocode} +% Ici, contrairement aux environnement colenumerate normaux, on laisse +% un |\\| y compris à la dernière ligne pour avoir un grand espacement +% vertical après la liste. +% \begin{macrocode} + \\ + }% +} +% \end{macrocode} +% \end{environment} +% \subsection{Travaux pratiques} +% \begin{macro}{\TravauxPratiques} +% Cette macro introduit la partie \og Travaux pratiques \fg{} dans un +% chapitre. Elle interdit l'utilisation des listes et des macros +% |\exercice| et |\correction| en dehors des environnements. +% \begin{macrocode} +\newcommand*\TravauxPratiques{% + \clearpage + \pagestyle{TP} + \def\smc@currpart{TP}% +% \end{macrocode} +% Les TP utilisent le compteur |activite| qu'il faut donc +% réinitialiser. +% \begin{macrocode} + \setcounter{activite}{0}% +% \end{macrocode} +% Les parties sont composées de façon spéciales dans les TP. +% \begin{macrocode} + \let\partie\smc@TP@partie +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\DeclareTPLike} +% Les environnements de TP sont déclarées avec la macro +% |\DeclareTPLike|. Celle-ci demande quatre arguments : +% \begin{enumerate} +% \item le nom de l'environnement ; +% \item le titre affiché ; +% \item la couleur de la partie supérieure du cartouche ; +% \item la couleur de la partie inférieure du cartouche ; +% \item la couleur du titre et du losange de numéro. +% \end{enumerate} +% C'est exactement la syntaxe et le code de |\DeclareActivityLike|. +% \begin{macrocode} +\newcommand*\DeclareTPLike[5]{% + \expandafter\newcommand\csname#1\endcsname[1][]{% + \def\smc@activite@title{##1}% + \csname#1@aux\endcsname + }% + \expandafter\newcommand\csname#1@aux\endcsname[1][]{% + \par + \addvspace{\BeforeActiviteVSpace} + \refstepcounter{activite} + \setbox\smc@boxa=\hbox{% + \ActiviteTitleFont + #2% + }% + \begin{pspicture}(0,0) + (\dimexpr \ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace+1.4142\ActiviteTitleTopHeight,\ActiviteTitleTopHeight) + \psframe*[linewidth=0, linecolor= #3] + (0,0)(\dimexpr\ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace+0.7071\ActiviteTitleTopHeight, + \ActiviteTitleTopHeight) + \psframe*[linewidth=0, linecolor= #4] + (0,0)(\dimexpr\ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace+0.7071\ActiviteTitleTopHeight, + -\ActiviteTitleBottomHeight) + \rput[l](\ActiviteTitleLeftSpace, + 0.5\dimexpr\ActiviteTitleTopHeight-\ActiviteTitleBottomHeight){% + \ActiviteTitleFont + \textcolor{#5}{#2}% + } + \rput + (\dimexpr\ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace, + 0.5\dimexpr\ActiviteTitleTopHeight-\ActiviteTitleBottomHeight) + {% + \pspolygon*[linewidth=0, linecolor=#5] + (0,0) + (0.7071\ActiviteTitleTopHeight,0.7071\ActiviteTitleTopHeight) + (1.4142\ActiviteTitleTopHeight,0) + (0.7071\ActiviteTitleTopHeight,-0.7071\ActiviteTitleTopHeight) + \rput(0.7071\ActiviteTitleTopHeight,0){% + \ActiviteNumFont + \textcolor{ActiviteNumColor}{\theactivite}% + } + } + \end{pspicture}% + \hspace*{\AfterActiviteTitleHSpace}% + \@ifmtarg{##1} + {\setbox0=\hbox{}} + {\setbox0=\hbox{##1\ }}% + \minipage[t]{\dimexpr\linewidth-\ActiviteTitleLeftSpace-\wd\smc@boxa-\ActiviteTitleRightSpace-1.4142\ActiviteTitleTopHeight-\AfterActiviteTitleHSpace-\wd0} + \ActiviteSubtitleFont + \textcolor{ActiviteSubtitleColor}{\smc@activite@title}% + \endminipage + \@ifnotmtarg{##1}{\hfill##1}% + \par\vspace{\AfterActiviteTitleVSpace} + \let\itemize\smc@activiteitemize + \let\enditemize\endsmc@activiteitemize + \let\colitemize\smc@activitecolitemize + \let\endcolitemize\endsmc@activitecolitemize + \let\enumerate\smc@activiteenumerate + \let\endenumerate\endsmc@activiteenumerate + \let\colenumerate\smc@activitecolenumerate + \let\endcolenumerate\endsmc@activitecolenumerate +% \end{macrocode} +% Voici la seule différénce avec les activités : les parties ne sont +% pas composées de la même façon. +% \begin{macrocode} + \let\partie\smc@TP@partie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Activite}% + \begin{changemargin}{\dimexpr\SquareWidth*4}{\ExtraMarginRight} + }% + \expandafter\def\csname end#1\endcsname{% + \end{changemargin} + }% +} +% \end{macrocode} +% \end{macro} +% \begin{environment}{TP} +% Les TP suivent très exactement les mêmes règles de composition que +% les activités. Il suffit de les déclarer de la même façon ! +% \begin{macrocode} +\DeclareTPLike{TP}{\StringTP} + {TPTopColor} + {TPBottomColor} + {TPTitleColor} +% \end{macrocode} +% \end{environment} +% \begin{environment}{enigme} +% Il s'agit de l'environnement permettant d'indiquer le texte d'une +% \emph{récréation, énigmes}. L'unique paramètre est le titre de l'énigme. +% \begin{macrocode} +\newenvironment{enigme}[1][]{% +% \end{macrocode} +% Les énigmes peuvent donner lieu à un corrigé, on prévoit une +% indication dans le fichier de correction +% \begin{macrocode} + \addtocontents{cor}{\protect\smc@corrigeenigme}% +% \end{macrocode} +% On redéfinit les listes et les parties. Les exercices ne sont pas +% permis. +% \begin{macrocode} + \let\itemize\smc@recreationitemize + \let\enditemize\endsmc@recreationitemize + \let\colitemize\smc@recreationcolitemize + \let\endcolitemize\endsmc@recreationcolitemize + \let\enumerate\smc@recreationenumerate + \let\endenumerate\endsmc@recreationenumerate + \let\colenumerate\smc@recreationcolenumerate + \let\endcolenumerate\endsmc@recreationcolenumerate + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \let\correction\smc@nocorrection + \let\partie\smc@recreation@partie + \def\smc@currpart{Enigme}% +% \end{macrocode} +% On affiche alors le titre s'il existe. +% \begin{macrocode} + \par + \@ifmtarg{#1}{}{% + {\RecreationTitleFont \textcolor{RecreationTitleColor}{#1}\par}% + } +% \end{macrocode} +% Il faut remettre le compteur de partie à zéro. +% \begin{macrocode} + \setcounter{partie}{0} +} +{\par} +% \end{macrocode} +% \end{environment} +% \subsection{partie} +% Il s'agit de sous-parties autorisées seulement dans certains +% environnements. Pour l'instant, seules les activités peuvent +% utiliser cette commande. +% \begin{macro}{\partie} +% On commence par définir la macro qui sera active en dehors des +% environnements autorisés. Elle ne fait que lever une erreur. +% \begin{macrocode} +\newcommand*\smc@nopartie{% + \ClassError{sesamanuel} + {La commande \string\partie\space est interdite ici.} + {Reportez-vous à la documentation pour + l'utilisation de la macro \string\partie.}% +} +\let\partie\smc@nopartie +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@activite@partie} +% La macro |\smc@activite@partie| est le code de la macro |\partie| +% dans les environnements de type |activite|. +% \begin{macrocode} +\newcommand*\smc@activite@partie[1][]{% +% \end{macrocode} +% Les trois sauvegardes suivantes permettent d'utiliser les +% présentations des parties dans des références. +% \begin{macrocode} + \colorlet{smc@curr@partiecolor}{ActivitePartieColor}% + \colorlet{smc@curr@partiebkgcolor}{Blanc}% + \let\smc@curr@partiefont\ActivitePartieFont +% \end{macrocode} +% On commence ensuite le code réel de la commande |\partie|. +% \begin{macrocode} + \par\addvspace{\BeforeActivitePartieVSpace} + \refstepcounter{partie}% + \@ifmtarg{#1} + {% + \textcolor{ActivitePartieColor} + {\ActivitePartieFont \StringPartie{} \thepartie} + } + {% + \textcolor{ActivitePartieColor} + {\ActivitePartieFont \StringPartie{} \thepartie{} : #1} + } + \par\nobreak\addvspace{\AfterActivitePartieVSpace} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@exercice@partie} +% La macro |\smc@exercice@partie| est le code de la macro |\partie| +% dans les exercices. +% \begin{macrocode} +\newcommand*\smc@exercice@partie[1][]{% + \colorlet{smc@curr@partiecolor}{ExercicePartieColor}% + \colorlet{smc@curr@partiebkgcolor}{Blanc}% + \let\smc@curr@partiefont\ExercicePartieFont + \par\addvspace{\BeforeExercicePartieVSpace} + \refstepcounter{partie}% + \@ifmtarg{#1} + {% + \textcolor{ExercicePartieColor} + {\ExercicePartieFont \textsc{\StringPartie} \Alph{partie}} + } + {% + \textcolor{ExercicePartieColor} + {\ExercicePartieFont \textsc{\StringPartie} \Alph{partie} : #1} + } + \par\nobreak\addvspace{\AfterExercicePartieVSpace} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@TP@partie} +% La macro |\smc@TP@partie| est le code de la macro |\partie| dans +% les TP. +% \begin{macrocode} +\newcommand*\smc@TP@partie[1]{% + \colorlet{smc@curr@partiecolor}{TPPartieNumColor}% + \colorlet{smc@curr@partiebkgcolor}{TPPartieBkgColor}% + \let\smc@curr@partiefont\TPPartieFont + \par\addvspace{\BeforeTPPartieVSpace} + \refstepcounter{partie}% + \leavevmode + \hbox to\z@{% + \hss + \psframebox[linestyle=none, linewidth=0pt, fillstyle=solid, + fillcolor=TPPartieBkgColor] + {\textcolor{TPPartieNumColor}{\TPPartieFont \thepartie}}% + \hspace*{\TPPartieHSep}% + }% + \textcolor{TPPartieColor}{\TPPartieFont #1} + \par\nobreak\addvspace{\AfterTPPartieVSpace} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@recreation@partie} +% La macro |\smc@recreation@partie| est le code de la macro |\partie| dans +% la partie Récréation, énigmes. +% \begin{macrocode} +\newcommand*\smc@recreation@partie[1][]{% + \colorlet{smc@curr@partiecolor}{RecreationPartieColor}% + \colorlet{smc@curr@partiebkgcolor}{Blanc}% + \let\smc@curr@partiefont\RecreationPartieFont + \par\addvspace{\BeforeRecreationPartieVSpace} + \refstepcounter{partie}% + \@ifmtarg{#1} + {% + \textcolor{RecreationPartieColor} + {\RecreationPartieFont \StringPartie{} \Alph{partie}} + } + {% + \textcolor{RecreationPartieColor} + {\RecreationPartieFont \StringPartie{} \Alph{partie} :} + \textcolor{RecreationPartieColor}{\RecreationPartieTitleFont #1} + } + \par\nobreak\addvspace{\AfterRecreationPartieVSpace} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@annexe@partie} +% La macro |\smc@annexe@partie| est le code de la macro |\partie| +% pour les annexes (en fait pour les exercices des annexes). +% \begin{macrocode} +\newcommand\smc@annexe@partie[1][]{% + \colorlet{smc@curr@partiecolor}{AnnexePartieColor}% + \colorlet{smc@curr@partiebkgcolor}{Blanc}% + \let\smc@curr@partiefont\AnnexePartieFont + \par\addvspace{\BeforeAnnexePartieVSpace} + \refstepcounter{partie}% + \@ifmtarg{#1} + {% + \textcolor{AnnexePartieColor} + {\AnnexePartieFont \textsc{\StringPartie} \Alph{partie}} + } + {% + \textcolor{AnnexePartieColor} + {\AnnexePartieFont \textsc{\StringPartie} \Alph{partie} : #1} + } + \par\nobreak\addvspace{\AfterAnnexePartieVSpace} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@libre@partie} +% La macro |\smc@libre@partie| est le code de la macro |\partie| +% pour les textes libres. +% \begin{macrocode} +\newcommand\smc@libre@partie[1][]{% + \colorlet{smc@curr@partiecolor}{LibrePartieColor}% + \colorlet{smc@curr@partiebkgcolor}{Blanc}% + \let\smc@curr@partiefont\LibrePartieFont + \par\addvspace{\BeforeLibrePartieVSpace} + \refstepcounter{partie}% + \@ifmtarg{#1} + {% + \textcolor{LibrePartieColor} + {\LibrePartieFont \textsc{\StringPartie} \Alph{partie}} + } + {% + \textcolor{LibrePartieColor} + {\LibrePartieFont \textsc{\StringPartie} \Alph{partie} : #1} + } + \par\nobreak\addvspace{\AfterLibrePartieVSpace} +} +% \end{macrocode} +% \end{macro} +% \section{Annexes} +% \subsection{Corrigés} +% \begin{macro}{\AfficheCorriges} +% Dans cette partie, on affiche l'ensemble des corrections du +% livre. Tout se fait avec la seule macro |\AfficheCorriges|. Celle-ci +% accepte un argument optionnel indiquant le nombre de colonnes sur +% lesquelles seront composés les corrigés. Pour avoir un maximum de +% souplesse, la valeur par défaut sera stockée dans la variable +% publique |\NombreColonnesCorriges|. La classe fixe à 3 cette valeur +% par défaut. On a également une variable publique +% |\PrefixeCorrection| dont le but est de préfixer les noms des +% fichiers de correction (par exemple par un nom de répertoire). +% \begin{macrocode} +\newcommand*\NombreColonnesCorriges{3} +\newcommand*\PrefixeCorrection{} +\newcommand*\AfficheCorriges[1][\NombreColonnesCorriges]{% +% \end{macrocode} +% On commence par changer de page et indiquer les styles de page à +% utiliser pour la suite. On va également poser une étiquette pour +% permettre le référencement de la page de manière automatique. +% \begin{macrocode} + \clearpage + \label{toutes-solutions} + \pagestyle{corrige} + \thispagestyle{firstcorrige} +% \end{macrocode} +% On compose le titre de l'annexe. +% \begin{macrocode} + \rput[Bl](0,9mm){\CorrigeTitleFont \MakeUppercase{\StringCorriges}} + \vspace*{-5mm} +% \end{macrocode} +% Enfin, on ouvre l'environnement de colonnage avant d'appeler le +% fichier externe de correction. +% \begin{macrocode} + \begingroup + \columnsep \dimexpr \SquareWidth*2 + \columnseprule \CorrigeRuleWidth + \def\columnseprulecolor{\color{ExerciceColumnRuleColor}}% +% \end{macrocode} +% Avant d'ouvrir le muticolonnage, on mémorise le nombre de colonnes +% (cela servira plus tard pour les QCM). +% \begin{macrocode} + \xdef\smc@NbColonneCorrige{#1}% + \ifnum#1>\@ne + \begin{multicols}{#1}% + \@starttoc{cor} + \end{multicols} + \vfill~\par + \else + \@starttoc{cor} + \vfill~\par + \fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% Le fichier de correction va comporter un certain nombre de commandes +% particulières qu'on définit ici. +% \begin{macro}{\smc@corrigechapter} +% Affiche les chapitres dans l'annexe des corrigés. Le premier +% paramètre contient le texte \og Chapitre \fg où le +% || est l'abréviation du type de chapitre (Fonction, Géométrie +% ou statistique), le deuxième le titre du chapitre, le troisième la +% couleur de cadre et de titre et le quatrième la couleur du texte +% dans le cadre. +% \begin{macrocode} +\newcommand*\smc@corrigechapter[4]{% +% \end{macrocode} +% Avant de procéder à la composition du titre de chapitre, on +% initialise le fait que les environnements |exercice| et |corrige| +% ainsi que la macro |\correction| seront interdits à l'intérieur d'un +% corrigé ! +% \begin{macrocode} + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \let\correction\smc@nocorrection +% \end{macrocode} +% On place le saut vertical avant le titre puis dans l'ordre, le cadre +% avec le mot Chapitre puis le titre de l'exercice. +% \begin{macrocode} + \par\addvspace{\BeforeCorrigeChapterVspace} + \begin{pspicture}(0,0)(\linewidth,4.5mm) + \psframe[linestyle=none, linewidth=0pt, + fillstyle=solid, fillcolor=#3] + (0,0)(\linewidth,4.5mm) + \rput[B](0.5\linewidth,1mm){% + \textcolor{#4}{\CorrigeChapterFont #1}% + } + \end{pspicture}% + \\[-1mm] + {% + \centering + \color{#3} + \CorrigeChapterFont \smc@nobsbs{#2} + \par\nobreak + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@corrigeautoeval} +% Affiche le titre pour les auto-évaluations. En réalité, le titre +% n'est pas immédiatement affiché. Il est placé dans la macro +% |\smc@BeforeCorrige| qui comporte un mécanisme +% d'auto-destruction. Cette macro sera systématiquement appelée par +% chaque corrigé d'exercice. Ainsi, avant d'afficher le premier +% exercice, le titre sera composé et ne le sera plus pour les +% exercices suivant. S'il n'y a aucun corrigé dans la partie, il n'y +% aura pas de titre affiché du tout. +% \begin{macrocode} +\newcommand\smc@corrigeautoeval{% +% \end{macrocode} +% On commence par indiquer les façon de composer les listes et les +% parties. On indique également la partie en cours. Pour l'instant, la +% partie en cours ne sert à rien à ce niveau mais c'est une précaution +% pour l'avenir. +% \begin{macrocode} + \let\itemize\smc@corrAEitemize + \let\enditemize\endsmc@corrAEitemize + \let\colitemize\smc@AEcolitemize + \let\endcolitemize\endsmc@AEcolitemize + \let\enumerate\smc@corrAEenumerate + \let\endenumerate\endsmc@corrAEenumerate + \let\colenumerate\smc@AEcolenumerate + \let\endcolenumerate\endsmc@AEcolenumerate + \let\partie\smc@nopartie + \def\smc@currpart{CorrigeAE}% +% \end{macrocode} +% On définit maintenant la macro à double détente. On commence par la +% première détente : la composition du titre. +% \begin{macrocode} + \def\smc@BeforeCorrige{% + \par\addvspace{\BeforeCorrigePartieTitleVSpace} + \textcolor{CorrigeAETitleColor} + {\CorrigePartieFont \StringAE} + \par\nobreak +% \end{macrocode} +% Vient ensuite la deuxième détente : la redéfinition de la macro par +% elle-même pour n'être qu'un alias de |\par| +% \begin{macrocode} + \def\smc@BeforeCorrige{\par}% + }% +% \end{macrocode} +% La dernière chose à préciser est la couleur des cadres des numéros +% d'exercice. +% \begin{macrocode} + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@corrigeactivite} +% C'est la même chose que précédemment pour les corrigés des +% activités. +% \begin{macrocode} +\newcommand\smc@corrigeactivite{% + \let\itemize\smc@noitemize + \let\enditemize\endsmc@noitemize + \let\colitemize\smc@nocolitemize + \let\endcolitemize\endsmc@nocolitemize + \let\enumerate\smc@noenumerate + \let\endenumerate\endsmc@noenumerate + \let\colenumerate\smc@nocolenumerate + \let\endcolenumerate\endsmc@nocolenumerate + \def\smc@currpart{CorrectionActivite}% + \def\smc@BeforeCorrige{% + \par\addvspace{\BeforeCorrigePartieTitleVSpace} + \textcolor{CorrigeActiviteTitleColor} + {\CorrigePartieFont \StringACTIVITE} + \par\nobreak + \def\smc@BeforeCorrige{\par}% + }% + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@corrigeexercicesbase} +% Idem pour les corrigés de la partie exercices de base. +% \begin{macrocode} +\newcommand\smc@corrigeexercicesbase{% + \let\itemize\smc@correxerciceitemize + \let\enditemize\endsmc@correxerciceitemize + \let\colitemize\smc@exercicecolitemize + \let\endcolitemize\endsmc@exercicecolitemize + \let\enumerate\smc@correxerciceenumerate + \let\endenumerate\endsmc@correxerciceenumerate + \let\colenumerate\smc@exercicecolenumerate + \let\endcolenumerate\endsmc@exercicecolenumerate + \let\partie\smc@exercice@partie + \def\smc@currpart{CorrigeExoBase}% + \def\smc@BeforeCorrige{% + \par\addvspace{\BeforeCorrigePartieTitleVSpace} + \textcolor{CorrigeExercicesBaseTitleColor} + {\CorrigePartieFont \StringExercicesBase} + \par\nobreak + \def\smc@BeforeCorrige{\par}% + }% + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@corrigeexercicesappr} +% Idem pour les corrigés de la partie exercices d'approfondissement. +% \begin{macrocode} +\newcommand\smc@corrigeexercicesappr{% + \let\itemize\smc@correxerciceitemize + \let\enditemize\endsmc@correxerciceitemize + \let\colitemize\smc@exercicecolitemize + \let\endcolitemize\endsmc@exercicecolitemize + \let\enumerate\smc@correxerciceenumerate + \let\endenumerate\endsmc@correxerciceenumerate + \let\colenumerate\smc@exercicecolenumerate + \let\endcolenumerate\endsmc@exercicecolenumerate + \let\partie\smc@exercice@partie + \def\smc@currpart{CorrigeExoAppr}% + \def\smc@BeforeCorrige{% + \par\addvspace{\BeforeCorrigePartieTitleVSpace} + \textcolor{CorrigeExercicesApprTitleColor} + {\CorrigePartieFont \StringExercicesAppr} + \par\nobreak + \def\smc@BeforeCorrige{\par}% + }% + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@corrigeconnaissances} +% Idem pour les corrigés de la partie Je teste mes connaissances (QCM). +% \begin{macrocode} +\newcommand\smc@corrigeconnaissances{% + \let\itemize\smc@noitemize + \let\enditemize\endsmc@noitemize + \let\colitemize\smc@nocolitemize + \let\endcolitemize\endsmc@nocolitemize + \let\enumerate\smc@noenumerate + \let\endenumerate\endsmc@noenumerate + \let\colenumerate\smc@nocolenumerate + \let\endcolenumerate\endsmc@nocolenumerate + \let\partie\smc@nopartie + \def\smc@currpart{CorrigeConnaissances}% +% \end{macrocode} +% La macro effectuée à chaque passage à l'exercice suivant ne comporte +% pas de saut de paragraphe. En fait, chaque corrigé va être inclu +% dans une boîte du tiers de l'empagement pour avoir trois corrigés +% par ligne. +% \begin{macrocode} + \def\smc@BeforeCorrige{% + \par\addvspace{\BeforeCorrigePartieTitleVSpace} + \textcolor{CorrigeConnaissancesTitleColor} + {\CorrigePartieFont \StringConnaissances} + \par\nobreak + \def\smc@BeforeCorrige{}% + }% + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@corrigeenigme} +% Idem pour les corrigés des énigmes. +% \begin{macrocode} +\newcommand\smc@corrigeenigme{% + \let\itemize\smc@corrrecreationitemize + \let\enditemize\endsmc@corrrecreationitemize + \let\colitemize\smc@recreationcolitemize + \let\endcolitemize\endsmc@recreationcolitemize + \let\enumerate\smc@corrrecreationenumerate + \let\endenumerate\endsmc@corrrecreationenumerate + \let\colenumerate\smc@recreationcolenumerate + \let\endcolenumerate\endsmc@recreationcolenumerate + \let\partie\smc@recreation@partie + \def\smc@currpart{CorrigeEnigme}% + \def\smc@BeforeCorrige{% + \par\addvspace{\BeforeCorrigePartieTitleVSpace} + \textcolor{CorrigeEnigmeTitleColor} + {\CorrigePartieFont \StringEnigme} + \par\nobreak + \def\smc@BeforeCorrige{\par}% + }% + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@corrigelibre} +% Pour les textes libres, les choses sont assez différentes. Le +% début est identique : on modifie les listes +% \begin{macrocode} +\newcommand\smc@corrigelibre{% + \let\itemize\smc@corrlibreitemize + \let\enditemize\endsmc@corrlibreitemize + \let\colitemize\smc@librecolitemize + \let\endcolitemize\endsmc@librecolitemize + \let\enumerate\smc@corrlibreenumerate + \let\endenumerate\endsmc@corrlibreenumerate + \let\colenumerate\smc@librecolenumerate + \let\endcolenumerate\endsmc@librecolenumerate + \let\partie\smc@exercice@partie + \def\smc@currpart{Libre}% +% \end{macrocode} +% En revanche, ensuite, on n'affiche strictement rien +% \begin{macrocode} + \def\smc@BeforeCorrige{% + \par + }% + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\inputcor} +% Macro permettant le chargement d'un fichier de correction indiqué +% par les trois paramètres : +% \begin{itemize} +% \item le type de la partie en cours ; +% \item le numéro de chapitre ; +% \item le numéro d'exercice. +% \end{itemize} +% Ces trois paramètres vont permettre de reconstituer le nom du +% fichier à charger. +% \begin{macrocode} +\newcommand*\inputcor[3]{% +% \end{macrocode} +% On commence par composer soit le titre de la partie en cours, soit +% un saut de paragraphe seul (soit rien pour les QCM). +% \begin{macrocode} + \smc@BeforeCorrige +% \end{macrocode} +% Si on est dans les corrections de QCM, on doit composer la +% correction dans des minipages de la moitié de la largeur +% d'empagement moins la largeur de séparation. et du tiers de la +% largeur de l'empagement si on est en corrigé sur deux colonnes. +% \begin{macrocode} + \def\smc@arg{#1}% + \ifx\smc@arg\StringQCM + \ifnum\smc@NbColonneCorrige=2 + \edef\smc@LargeurColonneCorrige + {\the\dimexpr \linewidth/3-\QCMHSep}% + \else + \edef\smc@LargeurColonneCorrige + {\the\dimexpr \linewidth/2-\QCMHSep}% + \fi + \minipage[t]{\smc@LargeurColonneCorrige}% + \fi +% \end{macrocode} +% On affiche alors le numéro d'exercice dans un cadre. +% \begin{macrocode} + \@ifmtarg{#3}{}{% + \begin{pspicture}(0,0)(5mm,2.5mm) + \psframe[linestyle=none, linewidth=0pt, + fillstyle=solid, fillcolor=CorrigeNumExerciceFrameBkg] + (0,-0.5mm)(5mm,2.5mm) + \rput[B](2.5mm,0){% + \textcolor{CorrigeNumExerciceFrameTxt} + {\CorrigeNumExerciceFont #3}% + } + \end{pspicture} + }% +% \end{macrocode} +% On charge ensuite la correction de l'exercice. Il faut alors +% reconstruire le nom du fichier. Le seul point à prendre en compte +% est que sur un troisième argument vide, on n'a pas de trait d'union +% entre le numéro de chapitre et le numéro d'exercice. Pour des +% raisons de mise en page, on compose les réponses dans une minipage +% de la largeur d'empagement en cours moins la largeur du cadre du +% numéro d'exercice. Le 6.5mm est le 5mm de la largeur du cadre plus +% une petite goutière de séparation. On ajoute également +% systématiquement un |\strut| à la fin de l'inclusion pour que la +% minipage ne donne pas un interlignage anormal sur la dernière +% ligne. +% \begin{macrocode} + \hfill\begin{minipage}[t]{\linewidth-6.5mm} + \raggedright + \@ifmtarg{#3} + {\input{\PrefixeCorrection corr-#1-#2}\strut} + {\input{\PrefixeCorrection corr-#1-#2-#3}\strut}% + \end{minipage} +% \end{macrocode} +% Si c'est une correction de QCM, on ferme la minipage et on place un +% espace |\QCMHSep|. Il faut redéfinir |\smc@arg| car il peut être +% modifié par l'appel des corrigés. +% \begin{macrocode} + \def\smc@arg{#1}% + \ifx\smc@arg\StringQCM + \endminipage + \hspace{\QCMHSep}% + \else + \par\vfil + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Coupe} +% Macro permettant une coupure de colonne au niveau des solutions. +% \begin{macrocode} +\newcommand\Coupe{% + \strut + \end{minipage} + \par\hfill + \begin{minipage}[t]{\linewidth-6.5mm} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\reponseQCM} +% Macro pour indiquer une réponse de QCM. Il s'agit uniquement de la +% ou des réponse(s) placée(s) dans un cercle. En fait, l'argument peut +% être une suite de lettres. Chacune doit être encerclée. Il faut donc +% lire l'argument caractère par caractère. On appelle donc la macro +% auxiliaire |\smc@reponseQCM| en plaçant la balise de fin |\@nil|. +% \begin{macrocode} +\newcommand\reponseQCM[1]{% + \smc@reponseQCM#1\@nil +} +% \end{macrocode} +% |\smc@reponseQCM| ne traite qu'une seule lettre (ASCII). +% \begin{macrocode} +\def\smc@reponseQCM#1{% + \def\smc@arg{#1}% +% \end{macrocode} +% Si la balise de fin est rencontrée, on ne fait strictement rien +% \begin{macrocode} + \ifx\smc@arg\@nnil + \else +% \end{macrocode} +% Sinon, on entoure la lettre lue\ldots +% \begin{macrocode} + \textcolor{CorrigeQCMItemNumColor} + {% + \CorrigeQCMItemNumFont + \pscirclebox[linewidth=0.4pt, framesep=1pt, + linecolor=CorrigeQCMItemNumColor, boxsep=true] + {\vphantom{dp}#1}% + } +% \end{macrocode} +% \ldots{} et on procède à un appel récursif. +% \begin{macrocode} + \expandafter\smc@reponseQCM + \fi +} +% \end{macrocode} +% \end{macro} +% \subsection{Annexes générales} +% Initialement la maquette présentait cette annexe pour énoncer des +% \og propriétés pour démontrer en géométrie \fg{}. On va généraliser +% un peu cette possibilité en laissant le titre libre, en +% redéfinissant les commandes de sectionnement et en fournissant un +% environnement pour les énoncés sur trois colonnes (\emph{a priori} +% une figure, la propriété et une remarque). +% +% Pour garder toute sa généralité à la macro |\annexe|, il faut +% l'accompagner d'une macro permettant de modifier les couleurs des +% bandeaux de bord de page et de section. On va commencer par définir +% cette macro et l'appeler immédiatement avec les couleurs indiquées +% par défaut dans la maquette. +% \begin{macro}{\ChangeAnnexe} +% \begin{macrocode} +\newcommand*\ChangeAnnexe[4]{% + \colorlet{AnnexeHeadFrameColor}{#1}% + \colorlet{AnnexeSectionRuleColor}{#2}% + \colorlet{AnnexeItemColor}{#2}% + \colorlet{AnnexeExerciceCorrigeNumFrameColor}{#2}% + \colorlet{AnnexeExerciceNumFrameColor}{#2}% + \colorlet{AnnexeSectionTitleColor}{#3}% + \colorlet{AnnexeExerciceTitleColor}{#3} + \colorlet{AnnexeExerciceNumColor}{#4} +} +% \end{macrocode} +% On appelle maintenant cette macro avec les couleurs par défaut de la +% maquette. +% \begin{macrocode} +\ChangeAnnexe{G3}{A1}{G1}{Blanc} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\annexe} +% On peut maintenant définir la macro |\annexe|. L'argument est le +% titre de l'annexe. Avant cela on définit un certain nombre de +% compteur à initialiser à ce niveau. +% \begin{macrocode} +\newcounter{propriete} +\newcommand*\annexe[1]{% + \let\itemize\smc@annexeitemize + \let\enditemize\endsmc@annexeitemize + \let\colitemize\smc@annexecolitemize + \let\endcolitemize\endsmc@annexecolitemize + \let\enumerate\smc@annexeenumerate + \let\endenumerate\endsmc@annexeenumerate + \let\colenumerate\smc@annexecolenumerate + \let\endcolenumerate\endsmc@annexecolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@annexeexercice + \let\endexercice\endsmc@annexeexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \let\section\smc@annexesection + \def\smc@currpart{Annexe}% + \setcounter{propriete}{0}% + \setcounter{exercice}{0}% +% \end{macrocode} +% On commence par changer de page et indiquer les styles de page à +% utiliser pour la suite. +% \begin{macrocode} + \clearpage + \pagestyle{annexe} + \thispagestyle{firstannexe} +% \end{macrocode} +% On compose le titre de l'annexe. +% \begin{macrocode} + \vspace*{\BeforeAnnexeTitleVSpace} + {\raggedright \AnnexeTitleFont \MakeUppercase{#1}\par} + \addvspace{\AfterAnnexeTitleVSpace} +% \end{macrocode} +% On sauvegarde le titre pour les pieds de page. +% \begin{macrocode} + \def\smc@TitleAnnexe{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ListeProprietes} +% On garde quasiment le même code que pour la macro |\propriete| +% interne au tableau de type |pr| mais on lui donne un argument au +% lieu du texte \og Propriété \fg avec le numéro. +% \begin{macrocode} +\newcommand*\ListeProprietes[1]{% + \psframebox*[fillcolor=TablePropertyTitleBkgColor]{% + \ProprieteFont + \textcolor{TablePropertyTitleTextColor} + {\MakeUppercase{\StringPropriete}~#1}% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{environment}{smc@annexeexercice} +% Exercice pour la partie annexe. On commence par regarder s'il y a +% une étoile. +% \begin{macrocode} +\newcommand*\smc@annexeexercice{% + \@ifstar + {% + \smc@exercicecorrigetrue + \smc@@annexeexercice + } + {% + \smc@exercicecorrigefalse + \smc@@annexeexercice + } +} +% \end{macrocode} +% On lit ensuite le premier argument optionnel. +% \begin{macrocode} +\newcommand*\smc@@annexeexercice[1][]{% +% \end{macrocode} +% On sauvegarde le texte du titre est on appelle la macro auxiliaire +% pour lire le deuxième argument optionnel. +% \begin{macrocode} + \def\smc@exercicetitle{#1}% + \smc@@@annexeexercice +} +\newcommand*\smc@@@annexeexercice[1][]{% +% \end{macrocode} +% On commence par passer au paragraphe suivant et réinitialiser le compteur +% partie ainsi que la façon de composer les parties. +% \begin{macrocode} + \par\addvspace{\BeforeExerciceVSpace} + \let\partie\smc@annexe@partie + \setcounter{partie}{0} +% \end{macrocode} +% La présence d'un logo va faire qu'on ne composera pas le titre (ou +% le texte) de la même façon. S'il y a un logo, on utilise la commande +% |\parpic| pour habiller le logo. Sinon on ne fait rien de spécial. +% \begin{macrocode} + \@ifnotmtarg{#1}{% + \setbox0=\hbox{#1}% + \parpic[r]{\makebox[\wd0][l]{{#1}}} + }% +% \end{macrocode} +% On compose le numéro de l'exercice. La couleur du cadre dépend du +% fait que l'exercice est corrigé ou non. En fait, pour l'instant, les +% exercices de la partie annexe ne seront pas corrigés et il n'y aura +% qu'une seule couleur : celle du liseré. À part les couleurs, on +% garde les mêmes macros de fonte et de longueurs que pour les +% exercices des chapitres normaux. +% \begin{macrocode} + \refstepcounter{exercice}% + \begin{pspicture}(0,0)(\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \ifsmc@exercicecorrige + \psframe*[linewidth=0pt, + linecolor=AnnexeExerciceCorrigeNumFrameColor] + (0,-\ExerciceNumFrameDepth) + (\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \else + \psframe*[linewidth=0pt, + linecolor=AnnexeExerciceNumFrameColor] + (0,-\ExerciceNumFrameDepth) + (\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \fi + \rput[B](\dimexpr\ExerciceNumFrameWidth/2,0){% + \textcolor{AnnexeExerciceNumColor}{\ExerciceNumFont \theexercice}% + } + \end{pspicture}% +% \end{macrocode} +% Y a-t-il un titre d'exercice ? +% \begin{macrocode} + \ifx\smc@exercicetitle\empty +% \end{macrocode} +% S'il n'y a pas de titre, on commence le texte de l'exercice (après +% un certain espacement horizontal). +% \begin{macrocode} + \hspace{\ExerciceTextHSep}% + \else +% \end{macrocode} +% S'il y a un titre, on le compose et on passe au paragraphe suivant. +% \begin{macrocode} + \hspace{\ExerciceTextHSep}% + \textcolor{AnnexeExerciceTitleColor} + {\ExerciceTitleFont \smc@exercicetitle}% + \par\nobreak + \fi +} +% \end{macrocode} +% En fait, on utilisera plutôt la forme d'environnement pour entrer +% les exercices. Le code terminal ne fait que placer un |\par| (cela +% peut être utile pour activer un éventuel |\centering| en fin de +% code. +% \begin{macrocode} +\def\endsmc@annexeexercice{\par} +% \end{macrocode} +% \end{environment} +% \begin{macro}{\smc@annexesection} +% Les annexes redéfinissent la macro |\section|. Pour cela on la +% stocke sous la forme de la macro |\smc@annexesection|. Au départ, on +% la définit comme une macro |\section| habituelle, en particulier, on +% autorise la forme étoilée (même si pour l'instant elle n'apporte +% rien de plus que la forme non étoilée). +% \begin{macrocode} +\newcommand*\smc@annexesection{% + \@ifstar{\smc@annexesec}{\smc@annexesec}% +} +\newcommand*\smc@annexesec[2][]{% +% \end{macrocode} +% On commence par regarder si l'argument optionnel est vide. Si oui, +% le titre court sera égal au titre long. +% \begin{macrocode} + \ifx\relax#1\relax + \smc@@annexesec{#2}{#2}% + \else + \smc@@annexesec{#1}{#2}% + \fi +} +% \end{macrocode} +% À ce stade, on a un titre court en premier argument et un titre long +% en deuxième argument. Le travail effectif peut commencer. +% \begin{macrocode} +\newcommand*\smc@@annexesec[2]{% + \par\goodbreak\addvspace{\BeforeAnnexeSectionVSpace}% +% \end{macrocode} +% Le titre court sera éventuellement utilisé pour une TDM. Ce sera à +% voir plus tard. +% \begin{macrocode} + \@ifmtarg{#1}{}{}% +% \end{macrocode} +% On compose le carré avec la bonne couleur. +% \begin{macrocode} + \begin{pspicture}(0,0)(\AnnexeSectionRuleWidth,\AnnexeSectionRuleWidth) + \psframe*[linecolor=AnnexeSectionRuleColor] + (0,0)(\AnnexeSectionRuleWidth,\AnnexeSectionRuleWidth) + \end{pspicture}% + \hspace{\AnnexeSectionRuleHSpace}% +% \end{macrocode} +% On place enfin le titre dans une minipage de la bonne largeur. +% \begin{macrocode} + \begin{minipage}[t]{\dimexpr\linewidth-\AnnexeSectionRuleWidth-\AnnexeSectionRuleHSpace} + \AnnexeSectionTitleFont + \textcolor{AnnexeSectionTitleColor}{#2}% + \end{minipage} +% \end{macrocode} +% On termine en plaçant un espacement vertical donné et une +% interdiction de coupe. Il n'y a pas besoin de s'occuper du retrait +% d'alinéa puisqu'il n'y en a pas ! +% \begin{macrocode} + \par\nobreak\addvspace{\AfterAnnexeSectionVSpace} +} +% \end{macrocode} +% \end{macro} +% \subsection{Lexique} +% \begin{macro}{\MotDefinition} +% La classe propose un système de glossaire. La macro |\MotDefinition| +% demande un premier argument qui est le mot à placer dans le lexique +% et un deuxième argument. Si le deuxième argument est vide, le mot à +% placer dans le lexique est également composé en gras à l'emplacement +% actuel et le lexique contient une référence à ce mot avec un renvoi +% à la page en cours. Si le deuxième argument n'est pas vide, la +% commande ne provoque rien au niveau où elle est émise et le mot sera +% placé dans le lexique avec une définition correspondant au deuxième +% argument. +% +% Il y aura également un deuxième argument optionnel situé entre les +% deux arguments obligatoires qui permettra d'indiquer la chaîne de +% tri pour le lexique. +% +% Pour homogénéiser le traitement, on place le tout dans un fichier +% annexe. +% \begin{macrocode} +\newcommand*\MotDefinition[2][]{% + \def\smc@MDlexique{#1}% + \def\smc@MDentree{#2}% + \smc@MotDefinition +} +\newcommand*\smc@MotDefinition[2][]{% + \@ifmtarg{#2}{% +% \end{macrocode} +% Si le deuxième argument obligatoire est vide, on compose le premier +% en gras et on écrit dans le fichier annexe avec la référence à la +% page en cours. +% \begin{macrocode} + \textbf{\smc@MDentree}% + \ifx\smc@MDlexique\empty +% \end{macrocode} +% Si l'argument optionnel est vide, l'entrée est le mot mis en +% gras. On ne fait pas de mise en forme directe avec ce type d'entrée +% puisqu'il peut y avoir plusieurs pages référencées. +% \begin{macrocode} + \smc@noprotectaddtolexique{#1}{\smc@MDentree}{\thepage}% + \else +% \end{macrocode} +% Sinon, l'argument optionnel devient l'entrée du Lexique. +% \begin{macrocode} + \smc@noprotectaddtolexique{#1}{\smc@MDlexique}{\thepage}% + \fi + } + {% +% \end{macrocode} +% Si le deuxième argument n'est pas vide, on ne compose pas le premier +% argument et on écrit dans le fichier annexe avec le deuxième +% argument comme texte explicatif. +% \begin{macrocode} + \ifx\smc@MDlexique\empty + \smc@addtolexique{#1}{\smc@MDentree}{% + \par\nobreak + #2% + \par\addvspace{\AfterEntreeVSpace}% + }% + \else + \smc@addtolexique{#1}{\smc@MDlexique}{% + \par\nobreak + #2% + \par\addvspace{\AfterEntreeVSpace}% + }% + \fi + }% +} +% \end{macrocode} +% Pour les entrées d'index, on se sert de la macro |\Lexique| qui +% permet de faire référence à un autre mot du lexique. Elle ne fait +% que mettre le mot dans la bonne couleur. +% \begin{macrocode} +\newcommand*\Lexique[1]{% + \textcolor{LexiqueEntreeColor}{\LexiqueFont #1}% +} +% \end{macrocode} +% Il reste à définir la macro d'ajout dans le fichier +% annexe. L'empilement des |\unexpanded| va permettre d'écrire ce que +% l'on veut dans le deuxième argument des entrées de lexique. Le +% premier |\unexpanded| va écrire |\unexpanded{...}| dans le fichier +% aux et le deuxième permettra l'écriture sans développement dans le +% fichier lex. +% \begin{macrocode} +\long\def\smc@addtolexique#1#2#3{% + \protected@write\@auxout{} + {% + \string\@writefile{lex}{% + \protect\smc@insertlexique[#1]{#2}{\unexpanded{\unexpanded{#3}}}% + }% + }% +} +% \end{macrocode} +% On fait une deuxième version non protégée pour pouvoir avoir le +% numéro de page. Pour gérer les pages multiples, c'est la macro +% |\smc@preinsertlexique| qui est alors utilisée. +% \begin{macrocode} +\long\def\smc@noprotectaddtolexique#1#2#3{% + \protected@write\@auxout{} + {% + \string\@writefile{lex}{% + \protect\smc@preinsertlexique[#1]{#2}{#3}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@addtolom} +% Macro équivalente pour écrire dans la table des méthodes. +% \begin{macrocode} +\long\def\smc@addtolom#1{% + \protected@write\@auxout{} + {% + \protect\expandafter\global\protect\csname smc@lom\smc@thema@init + true\protect\endcsname +% \end{macrocode} +% On doit écrire dans le fichier lom qui dépend du thème général en +% cours (il y a trois fichiers séparés). +% \begin{macrocode} + \string\@writefile{lom\smc@thema@init}{% + \protect\l@methode{\unexpanded{\unexpanded{#1}}}{\thepage}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AfficheLexique} +% Pour afficher le lexique on utilise la seule macro +% |\AfficheLexique|. Celle-ci accepte un argument optionnel indiquant +% le nombre de colonnes sur lesquelles sera composé le lexique. Pour +% avoir un maximum de souplesse, la valeur par défaut sera stockée +% dans la variable publique |\NombreColonnesLexique|. La classe fixe à +% 2 cette valeur par défaut. +% \begin{macrocode} +\newcommand*\NombreColonnesLexique{2} +\newcommand*\AfficheLexique[1][\NombreColonnesLexique]{% +% \end{macrocode} +% On commence par changer de page et indiquer les styles de page à +% utiliser pour la suite. +% \begin{macrocode} + \clearpage + \pagestyle{lexique} + \thispagestyle{firstlexique} +% \end{macrocode} +% On définit ensuite les éléments permis dans le lexique. +% \begin{macrocode} + \let\itemize\smc@lexiqueitemize + \let\enditemize\endsmc@lexiqueitemize + \let\colitemize\smc@lexiquecolitemize + \let\endcolitemize\endsmc@lexiquecolitemize + \let\enumerate\smc@lexiqueenumerate + \let\endenumerate\endsmc@lexiqueenumerate + \let\colenumerate\smc@lexiquecolenumerate + \let\endcolenumerate\endsmc@lexiquecolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Lexique}% +% \end{macrocode} +% On compose le titre du lexique. +% \begin{macrocode} + \rput[Bl](0,9mm){\LexiqueTitleFont \MakeUppercase{\StringLexique}} + \vspace*{-5mm} +% \end{macrocode} +% Enfin, on ouvre l'environnement de colonnage avant d'appeler la +% macro de mise en forme du lexique. +% \begin{macrocode} + \begingroup + \columnsep \dimexpr \SquareWidth*2 + \columnseprule \LexiqueRuleWidth + \def\columnseprulecolor{\color{LexiqueColumnRuleColor}}% +% \end{macrocode} +% On met le compteur d'entrées du lexique à zéro avant de lire le +% fichier de lexique. La lecture finale se fera avec les macros finales +% de lecture des entrées. Auparavant, il aura fallu lire le fichier +% avec les macros de lecture des doublons. +% \begin{macrocode} + \smc@numlexique \z@ + \begin{multicols}{#1}% +% \end{macrocode} +% Avant la lecture pour les doublons, on initialise les macros +% |\smc@insertlexique| et |\smc@preinsertlexique| à leurs valeurs +% initiales. +% \begin{macrocode} + \let\smc@insertlexique\smc@insertlexiqueinitial + \let\smc@preinsertlexique\smc@preinsertlexiqueinitial +% \end{macrocode} +% La première lecture ne doit pas se faire avec |\@starttoc| puisque +% cette commande détruit le fichier. En revanche cela demande quelques +% précautions. D'abord, faire de |@| une lettre ensuite utiliser +% |\@input| au lieu de |\input| puisque le fichier n'existe pas +% nécessairement. +% \begin{macrocode} + \begingroup + \makeatletter + \@input{\jobname.lex}% + \endgroup + \let\smc@insertlexique\smc@insertlexiquefinal + \let\smc@preinsertlexique\smc@preinsertlexiquefinal + \@starttoc{lex}% +% \end{macrocode} +% À ce stade, les entrées ont été mises en forme. Il faut les classer +% avant de les composer effectivement. Le tri se fera avec +% l'algorithme de tri fusion en se servant du tableau +% |\tri|. Comme le tri va porter à la fois sur |\tri| et +% |\lexique|, il va être plus efficace de construire une liste +% d'index et de faire le tri sur ces index. Au départ, le tableau +% d'index est index[1]=1, index[]=2, etc. ce qui fait que le contenu +% du tableau est son indice. +% \begin{macrocode} + \multido{\n=1+1}{\smc@numlexique}{% + \expandafter\xdef\csname index\n\endcsname{\n}% + }% +% \end{macrocode} +% Il faut également faire attention au cas où la liste est vide. Si +% oui, il ne faut pas lancer le tri fusion (ni affficher). +% \begin{macrocode} + \ifnum\smc@numlexique>\z@ + \smc@trifusion{1}{\the\smc@numlexique}% +% \end{macrocode} +% Affichage effectif des entrées. Avant de lancer cet affichage, il +% faut initialiser la lettre initiale en cours. Les lettres en cours +% ne peuvent être que des bas de casse non diacritiques on va donc +% initialiser avec une capitale pour être certain que la première +% entrée déclenche un changement de lettre. +% \begin{macrocode} + \def\smc@currentletter{A}% + \multido{\n=1+1}{\smc@numlexique}{% + \smc@afficheentree{\n}% + }% + \fi + \end{multicols} + \endgroup +} +% \end{macrocode} +% La macro d'affichage des entrées de lexique gère également +% l'affichage des changement de lettre. L'argument est l'index de +% l'entrée. +% \begin{macrocode} +\newcommand*\smc@afficheentree[1]{% +% \end{macrocode} +% Le premier travail est de détecter la première lettre de |tri[#1]| +% et de voir si celle-ci est la première d'une nouvelle série. Cela se +% fait avec l'appel à la macro |\smc@testfirstletter| en passant la +% chaîne de tri (en bas de casse) comme argument délimité. +% \begin{macrocode} + \edef\smc@arg{\csname tri\csname index#1\endcsname\endcsname}% + \expandafter\smc@testfirstletter\smc@arg\@nil +% \end{macrocode} +% On affiche ensuite l'entrée proprement dite. +% \begin{macrocode} + \csname lexique\csname index#1\endcsname\endcsname\endgraf +} +% \end{macrocode} +% La macro |\smc@testfirstletter| regarde la première lettre de son +% argument, affiche le bandeau de nouvelle lettre si cette lettre est +% différente de |\smc@currentletter|. +% \begin{macrocode} +\def\smc@testfirstletter#1#2\@nil{% + \def\smc@arg{#1}% + \unless\ifx\smc@arg\smc@currentletter + \def\smc@currentletter{#1}% + \par\addvspace{\BeforeFirstLetterVSpace} + \setbox0=\hbox{% + \textcolor{FirstLetterTxtColor}{\FirstLetterFont \MakeUppercase{#1}}% + }% + \begin{pspicture}(0,\dimexpr\ht0+\FirstLetterFrameHSep) + \psframe[linewidth=0pt, linestyle=none, fillstyle=solid, + fillcolor=FirstLetterBkgColor] + (0,\dimexpr\ht0+\FirstLetterFrameHSep) + (\linewidth,-\FirstLetterFrameHSep) + \rput[B](0.5\linewidth,0){\box0} + \end{pspicture} + \par\addvspace{\AfterFirstLetterVSpace} + \nobreak + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@trifusion} +% La macro |\smc@trifusion| effectue le tri des entrées +% |\lexique| en se servant de la table |\tri|. Pour cela, +% les échanges effectifs se font sur la table d'index +% |\index|. Cette macro, dans la phase de fusion, va utiliser +% cinq compteurs. +% \begin{macrocode} +\newcount\smc@firsttable +\newcount\smc@endfirsttable +\newcount\smc@secondtable +\newcount\smc@endsecondtable +\newcount\smc@writetable +% \end{macrocode} +% Au départ, on passe en paramètre les index extrêmes de la table. +% \begin{macrocode} +\newcommand*\smc@trifusion[2]{% + \ifnum#1=#2 +% \end{macrocode} +% Si la table à trier ne fait qu'un seul élément, on ne fait rien. +% \begin{macrocode} + \else +% \end{macrocode} +% Sinon, on trie les deux sous-tables en coupant en deux. Les deux +% sous-tables ont donc chacune au moins un élément. +% \begin{macrocode} + \edef\smc@arg{{#1}{\the\numexpr(#1+#2-1)/2}}% + \expandafter\smc@trifusion\smc@arg + \edef\smc@arg{{\the\numexpr(#1+#2+1)/2}{#2}}% + \expandafter\smc@trifusion\smc@arg +% \end{macrocode} +% et on fusionne les deux sous-tables triées qui ont donc toujours au +% moins un élément chacune. +% \begin{macrocode} + \smc@fusion{#1}{#2}% + \fi +} +% \end{macrocode} +% Pour le mécanisme de fusion, on fait appel à la macro +% |\smc@fusion|. +% \begin{macrocode} +\newcommand*\smc@fusion[2]{% +% \end{macrocode} +% On commence par initialiser le pointeur sur le début la première +% liste, le pointeur sur le début de la seconde liste, les bornes pour +% la première liste et la seconde liste et le pointeur sur la zone +% d'écriture +% \begin{macrocode} + \smc@firsttable=#1 + \smc@endfirsttable=\numexpr(#1+#2+1)/2 + \smc@secondtable=\numexpr(#1+#2+1)/2 + \smc@endsecondtable=\numexpr #2+1 +% \end{macrocode} +% L'initialisation de l'index d'écriture se fait avec la valeur +% antérieure à la valeur de départ car on procède à l'incrémentation +% avant l'utilisation. +% \begin{macrocode} + \smc@writetable=\numexpr #1-1 +% \end{macrocode} +% On réalise alors l'appel récursif sur la première phase de fusion +% (où les deux sous-tables n'ont pas encore été épuisées). +% \begin{macrocode} + \let\smc@next\smc@fusionrec + \smc@next +% \end{macrocode} +% La fusion a eu lieu dans un tableau temporaire, il faut la réécrire +% Appel récursif sur la bonne fonction dans le tableau index. +% \begin{macrocode} + \multido{\n=#1+1}{\numexpr #2-#1+1}{% + \edef\smc@tmp{\csname tmp\n\endcsname}% + \expandafter\xdef\csname index\n\endcsname{\smc@tmp}% + } +} +% \end{macrocode} +% La distribution des deux sous-tables dans la table temporaire +% (triée) se fait avec |\smc@fusionrec|. +% \begin{macrocode} +\newcommand*\smc@fusionrec{% +% \end{macrocode} +% On commence par mettre l'index d'écriture à jour. +% \begin{macrocode} + \advance\smc@writetable \@ne +% \end{macrocode} +% Ensuite, on compare les chaînes de tri ayant les index indiqués de +% chaque sous-tableau. À l'appel de cette fonction, aucun des deux +% sous-tableaux n'a été épuisé. +% \begin{macrocode} + \ifnum \pdfstrcmp{% + \csname tri\csname index\the\smc@firsttable\endcsname\endcsname + }{% + \csname tri\csname index\the\smc@secondtable\endcsname\endcsname + }=-1 +% \end{macrocode} +% Si c'est tri[index[first]] qui est inférieur, c'est index[first] qui +% prend place dans le sous-tableau temporaire. +% \begin{macrocode} + \edef\smc@tmp{\csname index\the\smc@firsttable\endcsname}% + \expandafter\let\csname tmp\the\smc@writetable\endcsname\smc@tmp +% \end{macrocode} +% On incrémente alors le pointeur du premier sous-tableau et on teste +% si on n'a pas épuisé ce premier sous-tableau. +% \begin{macrocode} + \advance\smc@firsttable \@ne + \ifnum\smc@firsttable=\smc@endfirsttable +% \end{macrocode} +% Si le premier sous-tableau est épuisé, il faut remplir la fin du +% tableau temporaire avec le second sous-tableau. +% \begin{macrocode} + \let\smc@next\smc@fusionsecond + \fi + \else +% \end{macrocode} +% Si c'est tri[index[second]] qui est inférieur, c'est index[second] qui +% prend place dans le sous-tableau temporaire. +% \begin{macrocode} + \edef\smc@tmp{\csname index\the\smc@secondtable\endcsname}% + \expandafter\let\csname tmp\the\smc@writetable\endcsname\smc@tmp +% \end{macrocode} +% On incrémente alors le pointeur du premier sous-tableau et on teste +% si on n'a pas épuisé ce premier sous-tableau. +% \begin{macrocode} + \advance\smc@secondtable \@ne + \ifnum\smc@secondtable=\smc@endsecondtable +% \end{macrocode} +% Si le second sous-tableau est épuisé, il faut remplir la fin du +% tableau temporaire avec le premier sous-tableau. +% \begin{macrocode} + \let\smc@next\smc@fusionfirst + \fi + \fi +% \end{macrocode} +% Appel récursif sur la bonne fonction. +% \begin{macrocode} + \smc@next +} +% \end{macrocode} +% Il reste à définir les deux macros qui remplissent la fin du tableau +% temporaire avec le sous-tableau non épuisé. +% \begin{macrocode} +\newcommand*\smc@fusionfirst{% +% \end{macrocode} +% À l'appel, le sous-tableau ne peut pas être vide, on effectue donc +% la copie d'abord puis les tests de fin de tableau ensuite. +% \begin{macrocode} + \advance\smc@writetable \@ne + \edef\smc@tmp{\csname index\the\smc@firsttable\endcsname}% + \expandafter\let\csname tmp\the\smc@writetable\endcsname\smc@tmp + \advance\smc@firsttable \@ne + \ifnum\smc@firsttable=\smc@endfirsttable +% \end{macrocode} +% Si le premier tableau est épuisé, on a fini la fusion +% \begin{macrocode} + \let\smc@next\relax + \fi + \smc@next +} +% \end{macrocode} +% La macro |\smc@fusionsecond| fonctionne exactement de la même façon. +% \begin{macrocode} +\newcommand*\smc@fusionsecond{% + \advance\smc@writetable \@ne + \edef\smc@tmp{\csname index\the\smc@secondtable\endcsname}% + \expandafter\let\csname tmp\the\smc@writetable\endcsname\smc@tmp + \advance\smc@secondtable \@ne + \ifnum\smc@secondtable=\smc@endsecondtable + \let\smc@next\relax + \fi + \smc@next +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\smc@insertlexique} +% Cette macro existe en deux versions à cause du travail sur les +% doublons au niveau du lexique. La première version est une version +% fantome qui permet de supprimer les actions de cette macro, la +% deuxième version est celle qui permet la composition effective de +% l'entrée dans le lexique. +% +% On commence par la version fantome qui ne fait qu'avaler les paramètres. +% \begin{macrocode} +\newcommand\smc@insertlexiqueinitial[3][]{} +% \end{macrocode} +% La deuxième version est celle qui effectue le travail +% véritable. Elle réalise deux conversions : +% \begin{itemize} +% \item elle met en capitale la première lettre du mot (ou de +% l'expression) et sauvegarde le résultat dans la macro +% |\lexique| ; +% \item elle construit une chaîne équivalente sans diacritique (repéré +% avec |IeC|) et sauvegarde le résultat dans la macro |\tri|. +% \end{itemize} +% \begin{macrocode} +\newcount\smc@numlexique +\newcommand\smc@insertlexiquefinal[3][]{% + \global\advance\smc@numlexique \@ne +% \end{macrocode} +% Appel de la macro auxiliaire pour mettre la première lettre de +% l'entrée en capitale et régler la mise en forme globale de +% l'ensemble de l'entrée. +% \begin{macrocode} + \@ifmtarg{#1}% + {\smc@@FirstUppercase#2\@nil#3\@nil}% +% \end{macrocode} +% Si l'argument optionnel de tri n'est pas vide, on ne cherche pas à +% mettre en forme l'entrée de l'index. +% \begin{macrocode} + {\expandafter\protected@xdef\csname lexique\the\smc@numlexique\endcsname + {% + \protect\textcolor{LexiqueEntreeColor} + {% + \protect\LexiqueEntreeFont #2% + }% + \unexpanded{#3}% + }% + }% +% \end{macrocode} +% Appel de la macro auxiliaire pour écrire tout en minuscule sans +% diacritique. +% \begin{macrocode} + \@ifmtarg{#1}% + {\smc@sansdiacritique{#2}}% + {\smc@sansdiacritique{#1}}% +% \end{macrocode} +% La macro précédente renvoie la chaîne sans espace et sans +% diacritique dans la macro |\smc@tri|. On l'écrit dans +% |\tri|. +% \begin{macrocode} + \expandafter\xdef\csname tri\the\smc@numlexique\endcsname{\smc@tri}% +} +% \end{macrocode} +% La macro |\smc@preinsertlexique| existe également en deux versions +% pour traiter les doublons. Et c'est effectivement les entrées +% utilisant cette macro qui nécessitent le traitement particulier. +% \begin{macrocode} +\newcommand\smc@preinsertlexiqueinitial[3][]{% +% \end{macrocode} +% Le repérage des doublons se fera sur le critère de tri. On commence +% donc par calculer ce dernier +% \begin{macrocode} + \@ifmtarg{#1}% + {\smc@sansdiacritique{#2}}% + {\smc@sansdiacritique{#1}}% +% \end{macrocode} +% La chaîne de tri est stockée dans |\smc@tri|. On regarde si la macro +% |\nb-| existe. +% \begin{macrocode} + \ifcsname nb-\smc@tri\endcsname +% \end{macrocode} +% La macro existe, il y a donc des doublons. On met à jour les macros +% |\nb-| et |\pages-| qui contiennent repectivement le +% nombre de pages et la liste des pages de l'entrée en cours. Il faut +% également que la page en cours ne soit pas la dernière entrée. +% +% On incrémente |\nb-| et on ajoute la page indiquée à +% |\pages-|. +% \begin{macrocode} + \unless\ifnum\csname lastpage-\smc@tri\endcsname=#3 + \expandafter\gdef\csname lastpage-\smc@tri\endcsname{#3}% + \expandafter\xdef\csname nb-\smc@tri\endcsname{% + \the\numexpr\csname nb-\smc@tri\endcsname+1 + }% + \edef\smc@tmp{\csname pages-\smc@tri\endcsname}% + \expandafter\xdef\csname pages-\smc@tri\endcsname{\smc@tmp, #3}% + \fi + \else +% \end{macrocode} +% Si la macro n'existe pas, c'est que c'est la première occurrence de +% cette entrée. On initialise la page en cours et les deux macros. +% \begin{macrocode} + \expandafter\gdef\csname lastpage-\smc@tri\endcsname{#3}% + \expandafter\gdef\csname nb-\smc@tri\endcsname{1}% + \expandafter\gdef\csname pages-\smc@tri\endcsname{#3}% + \fi +} +% \end{macrocode} +% La verion finale permet la composition proprement dite. +% \begin{macrocode} +\newcommand\smc@preinsertlexiquefinal[3][]{% +% \end{macrocode} +% On regarde si l'entrée à déjà été rencontrée. Pour cela, on si la +% macro |\affiche-| existe. +% \begin{macrocode} + \@ifmtarg{#1}% + {\smc@sansdiacritique{#2}}% + {\smc@sansdiacritique{#1}}% + \ifcsname affiche-\smc@tri\endcsname + \else +% \end{macrocode} +% Il n'y aura traitement que si cette macro n'existe pas. Dans ce cas, +% on commence par définir cette macro pour éviter les doublons. +% \begin{macrocode} + \expandafter\gdef\csname affiche-\smc@tri\endcsname{true}% +% \end{macrocode} +% Le reste du traitement est presque comme celui d'une entrée avec +% définition. La différence est qu'ici, on affiche une liste de pages +% au lieu d'une définition et qu'on a besoin pour cela du critère de +% tri (d'où l'appel initial de |\smc@sansdiacritique|). +% \begin{macrocode} + \@ifmtarg{#1}% + {\smc@sansdiacritique{#2}}% + {\smc@sansdiacritique{#1}}% + \global\advance\smc@numlexique \@ne +% \end{macrocode} +% On va s'occuper de l'entrée numéro |\smc@numlexique|. +% \begin{macrocode} + \@ifmtarg{#1}% +% \end{macrocode} +% S'il n'y a pas d'argument optionnel, le traitement se fera avec une +% macro annexe. +% \begin{macrocode} + {\smc@@preFirstUppercase#2\@nil#3\@nil}% +% \end{macrocode} +% Sinon, on compose l'entrée comme d'habitude. +% \begin{macrocode} + {\expandafter\protected@xdef\csname lexique\the\smc@numlexique\endcsname + {% + \protect\textcolor{LexiqueEntreeColor}{% + \protect\LexiqueEntreeFont #2% + }% +% \end{macrocode} +% La valeur |4.4em| est en fait $10\times0.44\mathtt{em}$. Elle sert +% à gérer correctement l'alignement des points de suite en assurant un +% minimum de 10 points de suite. +% \begin{macrocode} + \space\hbox to4.4em{\rdotfill}\kern-0.44em\rdotfill +% \end{macrocode} +% Test de pluriel pour le mot \og Page(s) \fg{}. +% \begin{macrocode} + \ifnum\csname nb-\smc@tri\endcsname>\@ne + \protect\emph{ Pages \csname pages-\smc@tri\endcsname}% + \else + \protect\emph{ Page \csname pages-\smc@tri\endcsname}% + \fi + }% + }% +% \end{macrocode} +% La macro |\smc@tri| est déjà calculée, on peut s'en servir +% directement. +% \begin{macrocode} + \expandafter\xdef\csname tri\the\smc@numlexique\endcsname + {\smc@tri}% + \fi +} +% \end{macrocode} +% Pour gérer les diacritiques, on a besoin d'un très grand nombre de +% macros de comparaison. La première détecte le |\IeC| indiquant un +% caractère hors ASCII. Les autres permettent de distinguer toutes les +% diacritiques et ligatures utilisées en français (et un peu au-delà). +% \begin{macrocode} +\def\smc@IeC{\IeC} +\def\smcl@Ag{\`A} +\def\smcl@Aa{\'A} +\def\smcl@Ac{\^A} +\def\smcl@At{\~A} +\def\smcl@Au{\"A} +\def\smcl@Ar{\r A} +\def\smcl@AE{\AE} +\def\smcl@Cc{\c C} +\def\smcl@Eg{\`E} +\def\smcl@Ea{\'E} +\def\smcl@Ec{\^E} +\def\smcl@Eu{\"E} +\def\smcl@Ig{\`I} +\def\smcl@Ia{\'I} +\def\smcl@Ic{\^I} +\def\smcl@Iu{\"I} +\def\smcl@Nn{\~N} +\def\smcl@Og{\`O} +\def\smcl@Oa{\'O} +\def\smcl@Oc{\^O} +\def\smcl@Ot{\~O} +\def\smcl@Ou{\"O} +\def\smcl@Oo{\O} +\def\smcl@OE{\OE} +\def\smcl@Ug{\`U} +\def\smcl@Ua{\'U} +\def\smcl@Uc{\^U} +\def\smcl@Uu{\"U} +\def\smcl@Yt{\"Y} +\def\smcl@ss{\ss} +\def\smcl@ag{\`a} +\def\smcl@aa{\'a} +\def\smcl@ac{\^a} +\def\smcl@at{\~a} +\def\smcl@au{\"a} +\def\smcl@ar{\r a} +\def\smcl@ae{\ae} +\def\smcl@cc{\c c} +\def\smcl@eg{\`e} +\def\smcl@ea{\'e} +\def\smcl@ec{\^e} +\def\smcl@eu{\"e} +\def\smcl@ig{\`i} +\def\smcl@ia{\'i} +\def\smcl@ic{\^i} +\def\smcl@iu{\"i} +\def\smcl@nn{\~n} +\def\smcl@og{\`o} +\def\smcl@oa{\'o} +\def\smcl@oc{\^o} +\def\smcl@ot{\~o} +\def\smcl@ou{\"o} +\def\smcl@oo{\o} +\def\smcl@oe{\oe} +\def\smcl@ug{\`u} +\def\smcl@ua{\'u} +\def\smcl@uc{\^u} +\def\smcl@uu{\"u} +\def\smcl@yt{\"y} +% \end{macrocode} +% La première macro auxiliaire permet de composer son entrée avec sa +% première lettre en capitale et toutes les autres en bas de casse. +% \begin{macrocode} +\long\def\smc@@FirstUppercase#1#2#3\@nil#4\@nil{% + \def\smc@arg{#1}% + \ifx\smc@arg\smc@IeC +% \end{macrocode} +% Si la première unité lexicale est |\IeC|, c'est qu'il faut prendre +% les deux première unités lexicales pour la première lettre à mettre +% en capitale. +% \begin{macrocode} + \expandafter\protected@xdef\csname lexique\the\smc@numlexique\endcsname + {% + \protect\textcolor{LexiqueEntreeColor} + {% + \protect\LexiqueEntreeFont + \MakeUppercase{#1#2}% + \MakeLowercase{#3}% + }% + \unexpanded{#4}% + }% + \else +% \end{macrocode} +% Sinon, on ne met en capitale que la première lettre qui correpond à +% la première unité lexicale. +% \begin{macrocode} + \expandafter\protected@xdef\csname lexique\the\smc@numlexique\endcsname + {% + \protect\textcolor{LexiqueEntreeColor} + {% + \protect\LexiqueEntreeFont + \MakeUppercase{#1}% + \MakeLowercase{#2#3}% + }% + \unexpanded{#4}% + }% + \fi +} +% \end{macrocode} +% Il existe une variante à la macro précédente pour les entrées avec +% liste de pages. Elle est identique sauf en ce qui concerne +% l'affichage de la liste de page. +% \begin{macrocode} +\long\def\smc@@preFirstUppercase#1#2#3\@nil#4\@nil{% + \def\smc@arg{#1}% + \ifx\smc@arg\smc@IeC + \expandafter\protected@xdef\csname lexique\the\smc@numlexique\endcsname + {% + \protect\textcolor{LexiqueEntreeColor} + {% + \protect\LexiqueEntreeFont + \MakeUppercase{#1#2}% + \MakeLowercase{#3}% + }% + \space\hbox to4.4em{\rdotfill}\kern-0.44em\rdotfill + \ifnum\csname nb-\smc@tri\endcsname>\@ne + \protect\emph{ Pages \csname pages-\smc@tri\endcsname}% + \else + \protect\emph{ Page \csname pages-\smc@tri\endcsname}% + \fi + }% + \else + \expandafter\protected@xdef\csname lexique\the\smc@numlexique\endcsname + {% + \protect\textcolor{LexiqueEntreeColor} + {% + \protect\LexiqueEntreeFont + \MakeUppercase{#1}% + \MakeLowercase{#2#3}% + }% + \space\hbox to4.4em{\rdotfill}\kern-0.44em\rdotfill + \ifnum\csname nb-\smc@tri\endcsname>\@ne + \protect\emph{ Pages \csname pages-\smc@tri\endcsname}% + \else + \protect\emph{ Page \csname pages-\smc@tri\endcsname}% + \fi + }% + \fi +} +% \end{macrocode} +% Deuxième macro auxiliaire pour récrire un mot ou une expression sans +% diacritiques, ligatures et espace et le tout en minuscule. Cela va +% servir pour effectuer un tri alphabétique. +% \begin{macrocode} +\def\smc@sansdiacritique#1{% +% \end{macrocode} +% On commence par vider la macro qui va recevoir le résultat. +% \begin{macrocode} + \def\smc@tri{}% +% \end{macrocode} +% Pour avoir la forme avec les éventuels |\IeC|, il faut procéder à un +% développement protégé de l'argument. +% \begin{macrocode} + \protected@edef\smc@arg{#1}% +% \end{macrocode} +% Ensuite, on initialise et on lance le traitement récurrent. +% \begin{macrocode} + \let\smc@next\smc@sd + \expandafter\smc@next\smc@arg\@nil +} +% \end{macrocode} +% Macro récursive de remplacement d'une diacritique par la lettre +% simple correspondante ou de la ligature par les deux lettres la +% composant. Elle met également tout en minuscule. +% \begin{macrocode} +\def\smc@sd#1{% + \def\smc@arg{#1}% + \ifx\smc@arg\@nnil +% \end{macrocode} +% Si on a atteint le |\@nil|, on arrête la récurrence. +% \begin{macrocode} + \let\smc@next\relax + \else + \ifx\smc@arg\smc@IeC +% \end{macrocode} +% Si on vient de lire un |\IeC|, on a à procéder à un traitement +% spécial assuré par la macro |\smc@@sd|. +% \begin{macrocode} + \let\smc@next\smc@@sd + \else +% \end{macrocode} +% Sinon, c'est une lettre non diacritique et on la recopie dans la +% macro de résultat en minuscule. +% \begin{macrocode} + \def\smc@arg{#1}% + \ifnum`#1<`A + \edef\smc@tri{\smc@tri#1}% + \else\ifnum`#1>`Z + \edef\smc@tri{\smc@tri#1}% + \else + \edef\smc@tri{\smc@tri\smc@bdc{\numexpr`#1-`A}}% + \fi\fi + \fi + \fi + \smc@next +} +% \end{macrocode} +% Macro pour changer les capitales ASCII en bas de casse ASCII +% correspondant. L'argument est le rang de la capitale (de 0 à 25) +% \begin{macrocode} +\newcommand*\smc@bdc[1]{% + \ifcase#1 + a% + \or b% + \or c% + \or d% + \or e% + \or f% + \or g% + \or h% + \or i% + \or j% + \or k% + \or l% + \or m% + \or n% + \or o% + \or p% + \or q% + \or r% + \or s% + \or t% + \or u% + \or v% + \or w% + \or x% + \or y% + \or z% + \else ???% + \fi +} +% \end{macrocode} +% Macro pour changer les diacritiques (ou ligatures) en équivalent +% ASCII (minuscule). +% \begin{macrocode} +\def\smc@@sd#1{% + \def\smc@arg{#1} + \ifx\smc@arg\smcl@Ag + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@Aa + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@Ac + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@At + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@Au + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@Ar + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@AE + \edef\smc@tri{\smc@tri ae}% + \else\ifx\smc@arg\smcl@Cc + \edef\smc@tri{\smc@tri c}% + \else\ifx\smc@arg\smcl@Eg + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@Ea + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@Ec + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@Eu + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@Ig + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@Ia + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@Ic + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@Iu + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@Nn + \edef\smc@tri{\smc@tri n}% + \else\ifx\smc@arg\smcl@Og + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@Oa + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@Oc + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@Ot + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@Ou + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@Oo + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@OE + \edef\smc@tri{\smc@tri oe}% + \else\ifx\smc@arg\smcl@Ug + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@Ua + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@Uc + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@Uu + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@Yt + \edef\smc@tri{\smc@tri y}% + \else\ifx\smc@arg\smcl@ss + \edef\smc@tri{\smc@tri s}% + \else\ifx\smc@arg\smcl@ag + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@aa + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@ac + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@at + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@au + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@ar + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@ae + \edef\smc@tri{\smc@tri ae}% + \else\ifx\smc@arg\smcl@cc + \edef\smc@tri{\smc@tri c}% + \else\ifx\smc@arg\smcl@eg + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@ea + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@ec + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@eu + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@ig + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@ia + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@ic + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@iu + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@nn + \edef\smc@tri{\smc@tri n}% + \else\ifx\smc@arg\smcl@og + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@oa + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@oc + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@ot + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@ou + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@oo + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@oe + \edef\smc@tri{\smc@tri oe}% + \else\ifx\smc@arg\smcl@ug + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@ua + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@uc + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@uu + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@yt + \edef\smc@tri{\smc@tri y}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +% \end{macrocode} +% Les appels récursifs suivants reviennent sur |\smc@sd|. +% \begin{macrocode} + \let\smc@next\smc@sd + \smc@next +} +% \end{macrocode} +% \end{macro} +% \subsection{Liste des méthodes} +% \begin{macro}{\rdotfill} +% Pour les besoins de |\l@methode| on a besoin de points de suite +% calés sur la droite et non centré comme ceux proposés par \LaTeX. +% \begin{macrocode} +\newcommand*\rdotfill{% + \leavevmode + \leaders \hb@xt@ .44em{\hss.}\hfill + \kern\z@ +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\l@methode} +% La liste des méthodes emploie un mécanisme similaire à celui de la +% table des matières. En particulier, la mise en forme des titres des +% méthodes est assurée par la macro |\l@methode| qui prend deux +% arguments : le titre et le numéro de page. +% \begin{macrocode} +\newcommand*\l@methode[2]{% + \begin{minipage}[b]{\linewidth-1.5cm} + \raggedright + \ListeMethodeTitleFont + \begin{pspicture}(0,0)(\TriangleMethodeSize,\TriangleMethodeSize) + \pspolygon*[linecolor=\CorrigeChapterFrameColor] + (0,0)(0,\TriangleMethodeSize) + (\TriangleMethodeSize,\dimexpr\TriangleMethodeSize/2) + \end{pspicture} + \textcolor{ListeMethodeTitleColor}{#1}% + \rdotfill + \end{minipage}\kern-0.44em + {\ListeMethodePageFont \rdotfill#2\strut}% + \par\addvspace{\AfterMethodeVSpace} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ListeMethodesThemes} +% La liste des méthodes se fait normalement dans l'ordre des thèmes +% suivant : +% \begin{itemize} +% \item Statistiques et probabilité ; +% \item Fonctions ; +% \item Géométrie. +% \end{itemize} +% En réalité, c'est la macro |\ListeMethodesThemes| qui indiquera +% quels seront les thèmes inclus et dans quel ordre. Pour cela, la +% macro contiendra la liste des codes minuscules et majuscules de +% chaque thème séparés par des virgules. Comme il y a possibilité +% d'avoir des codes sur plusieurs lettres, il est plus sage de +% spécifier ces lettres entre accolades. La classe donne l'ordre et le +% contenu par défaut listé ci-dessus. +% \end{macro} +% \begin{macrocode} +\newcommand\ListeMethodesThemes{{sp}{SP},{f}{F},{g}{G}} +% \end{macrocode} +% \begin{macro}{\AfficheListeMethodes} +% La classe permet de faire la liste des méthodes. Pour cela, on +% utilisera la macro |\AfficheListeMethodes|. +% +% Celle-ci utilise des cadres d'en-tête basés sur le même modèle que +% celui des récréations mais avec des couleurs différentes et qui +% dépendent du thème en cours. +% \begin{macrocode} +\newcommand*\smc@bandeaulistemethodes[1]{% + \par\addvspace{\BeforeRecreationVSpace} + \begin{pspicture}(0,0)(\linewidth,\dimexpr\SquareWidth*3) + \psframe*[linewidth=0pt,linecolor=ChapterNumSquare5Color] + (0,0)(\linewidth,\dimexpr\SquareWidth*3) + \psset{fillstyle=solid} + \smc@antidiagonal(0mm,0mm){ChapterNumSquare} + \rput[Bl](\dimexpr \SquareWidth*4,\SquareWidth){% + \textcolor{ChapterNumSquare0Color}{\RecreationFont #1}% + } + \psset{linewidth=0pt} + \smc@putsquare(32,2){J1} + \smc@putsquare(33,0){H4} + \smc@putsquare(34,1){H2} + \smc@putsquare(37,1){F3} + \smc@putsquare(39,0){H2} + \smc@putsquare(42,2){J2} + \smc@putsquare(46,1){H4} + \end{pspicture} + \par\nobreak\addvspace{\AfterRecreationVSpace} +} +% \end{macrocode} +% L'affichage ou non des blocs de liste de méthodes par thème est sous +% la dépendance des booléens associés. +% \begin{macrocode} +\newif\ifsmc@lomsp +\newif\ifsmc@lomf +\newif\ifsmc@lomg +% \end{macrocode} +% On indique le nombre de colonnes de la liste des méthodes soit par +% l'intermédiaire de la macro |\NombreColonnesListeMethodes|, soit en +% utilisant l'argument optionnel de |\AfficheListeMethodes|. +% \begin{macrocode} +\newcommand*\NombreColonnesListeMethodes{2} +\newcommand*\AfficheListeMethodes[1][\NombreColonnesListeMethodes]{% +% \end{macrocode} +% On commence par changer de page et indiquer les styles de page à +% utiliser pour la suite. +% \begin{macrocode} + \clearpage + \pagestyle{affichemethode} + \thispagestyle{firstaffichemethode} +% \end{macrocode} +% On compose le titre de l'annexe. +% \begin{macrocode} + \rput[Bl](0,9mm){\ListeMethodeChapterFont \MakeUppercase{\StringListeMethode}} + \vspace*{-5mm} +% \end{macrocode} +% Enfin, on ouvre l'environnement de colonnage avant d'appeler les +% trois fichiers qui contiennent les listes des méthodes. +% \begin{macrocode} + \begingroup + \columnsep \dimexpr \SquareWidth*2 + \columnseprule \ListeMethodeRuleWidth + \def\columnseprulecolor{\color{ListeMethodeColumnRuleColor}}% +% \end{macrocode} +% Avant d'afficher la liste des méthodes, il faut tuer la macro +% |\MethodeRefExercice| +% \begin{macrocode} + \renewcommand*\MethodeRefExercice{\@ifstar{\@gobble}{\@gobble}} +% \end{macrocode} +% On sauvegarde le nombre de colonnes dans une macro auxiliaire qui +% servira dans |\smc@AfficheListeMethodesTheme|. +% \begin{macrocode} + \def\smc@NombreColonnesListeMethodes{#1}% +% \end{macrocode} +% On compose maintenant la liste des méthodes dans l'ordre des thèmes indiqués. +% \begin{macrocode} + \tracingifs=1 + \@for\smc@currtheme:=\ListeMethodesThemes\do{% + \expandafter\smc@AfficheListeMethodesTheme\smc@currtheme + }% + \endgroup +} +% \end{macrocode} +% La macro suivante affiche la liste des méthodes pour le thème donné +% en arguments (la ou les lettres minuscules puis la ou les lettres +% capitales). +% \begin{macrocode} +\newcommand\smc@AfficheListeMethodesTheme[2]{% +% \end{macrocode} +% La liste des méthodes pour le thème ne sera affichée que s'il y a au +% moins une méthode ce qui est indiqué avec le booléen +% |\ifsmc@lom|. +% \begin{macrocode} + \expandafter\ifx\csname ifsmc@lom#1\endcsname\iftrue + \csname smc@thema#2Color\endcsname + \expandafter\smc@bandeaulistemethodes + \expandafter{\csname StringListeMethode#2\endcsname} +% \end{macrocode} +% Malheureusement l'environnement \environ{multicols} n'est pas +% capable de composer sur une seule colonne. D'où la construction +% suivante. +% \begin{macrocode} + \ifnum \smc@NombreColonnesListeMethodes=\@ne + \@starttoc{lom#1} + \else + \begin{multicols}{\smc@NombreColonnesListeMethodes} + \@starttoc{lom#1} + \end{multicols} + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \subsection{Texte libre} +% Afin de permettre à l'utilisateur de se servir de la classe pour +% composer une ou quelques feuilles sans devoir suivre la structure +% d'un ouvrage entier, on met à disposition la commande |\libre|. Elle +% va permettre, par exemple, de prendre le texte source d'un exercice +% et de pouvoir le composer sans avoir à passer par toute la +% machinerie d'un ouvrage (thème, en-tête coloré, etc.). +% +% L'ensemble du code est pris sur celui de la commande |\annexe| et +% des ses macros satellites. Quelques éléments sont simplifiés. On +% commence avec la macro permettant de modifier les couleurs par l'utilisateur +% \begin{macro}{\ChangeLibre} +% \begin{macrocode} +\newcommand*\ChangeLibre[4]{% + \colorlet{LibreHeadFrameColor}{#1}% + \colorlet{LibreSectionRuleColor}{#2}% + \colorlet{LibreItemColor}{#2}% + \colorlet{LibreExerciceCorrigeNumFrameColor}{#2}% + \colorlet{LibreExerciceNumFrameColor}{#2}% + \colorlet{LibreSectionTitleColor}{#3}% + \colorlet{LibreExerciceTitleColor}{#3} + \colorlet{LibreExerciceNumColor}{#4} +} +% \end{macrocode} +% On appelle maintenant cette macro avec les couleurs par défaut. +% \begin{macrocode} +\ChangeLibre{G3}{A1}{G1}{Blanc} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\libre} +% On peut maintenant définir la macro |\libre|. Avant cela on définit +% un certain nombre de compteur à initialiser à ce +% niveau. Contrairement aux annexes générales, il n'y a pas de titre +% ici donc pas d'argument à cette commande. +% \begin{macrocode} +\newcommand*\libre{% + \let\itemize\smc@libreitemize + \let\enditemize\endsmc@libreitemize + \let\colitemize\smc@librecolitemize + \let\endcolitemize\endsmc@librecolitemize + \let\enumerate\smc@libreenumerate + \let\endenumerate\endsmc@libreenumerate + \let\colenumerate\smc@librecolenumerate + \let\endcolenumerate\endsmc@librecolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@libreexercice + \let\endexercice\endsmc@libreexercice + \let\corrige\smc@librecorrige + \let\endcorrige\endsmc@librecorrige + \let\section\smc@libresection + \def\smc@currpart{Libre}% + \setcounter{propriete}{0}% + \setcounter{exercice}{0}% +% \end{macrocode} +% Il faut placer une balise quelconque dans le fichier de correction +% pour qu'il existe. +% \begin{macrocode} + \addtocontents{cor}{\protect\smc@corrigelibre}% +% \end{macrocode} +% On commence par changer de page et indiquer les styles de page à +% utiliser pour la suite. +% \begin{macrocode} + \clearpage + \pagestyle{libre} + \thispagestyle{firstlibre} +% \end{macrocode} +% La partie libre utilise le pseudo-thème libre. +% \begin{macrocode} + \themaL +} +% \end{macrocode} +% \end{macro} +% \begin{environment}{smc@libreexercice} +% Exercice pour le texte libre. On commence par regarder s'il y a +% une étoile. +% \begin{macrocode} +\newcommand*\smc@libreexercice{% + \@ifstar + {% + \smc@exercicecorrigetrue + \smc@@libreexercice + } + {% + \smc@exercicecorrigefalse + \smc@@libreexercice + } +} +% \end{macrocode} +% On lit ensuite le premier argument optionnel. +% \begin{macrocode} +\newcommand*\smc@@libreexercice[1][]{% +% \end{macrocode} +% On sauvegarde le texte du titre est on appelle la macro auxiliaire +% pour lire le deuxième argument optionnel. +% \begin{macrocode} + \def\smc@exercicetitle{#1}% + \smc@@@libreexercice +} +\newcommand*\smc@@@libreexercice[1][]{% +% \end{macrocode} +% On commence par passer au paragraphe suivant et réinitialiser le compteur +% partie ainsi que la façon de composer les parties. +% \begin{macrocode} + \par\addvspace{\BeforeExerciceVSpace} + \let\partie\smc@exercice@partie + \setcounter{partie}{0} +% \end{macrocode} +% La présence d'un logo va faire qu'on ne composera pas le titre (ou +% le texte) de la même façon. S'il y a un logo, on utilise la commande +% |\parpic| pour habiller le logo. Sinon on ne fait rien de spécial. +% \begin{macrocode} + \@ifnotmtarg{#1}{% + \setbox0=\hbox{#1}% + \parpic[r]{\makebox[\wd0][l]{{#1}}} + }% +% \end{macrocode} +% On compose le numéro de l'exercice. La couleur du cadre dépend du +% fait que l'exercice est corrigé ou non. À part les couleurs, on +% garde les mêmes macros de fonte et de longueurs que pour les +% exercices des chapitres normaux. +% \begin{macrocode} + \refstepcounter{exercice}% + \begin{pspicture}(0,0)(\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \ifsmc@exercicecorrige + \psframe*[linewidth=0pt, + linecolor=LibreExerciceCorrigeNumFrameColor] + (0,-\ExerciceNumFrameDepth) + (\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \else + \psframe*[linewidth=0pt, + linecolor=LibreExerciceNumFrameColor] + (0,-\ExerciceNumFrameDepth) + (\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \fi + \rput[B](\dimexpr\ExerciceNumFrameWidth/2,0){% + \textcolor{LibreExerciceNumColor}{\ExerciceNumFont \theexercice}% + } + \end{pspicture}% +% \end{macrocode} +% Y a-t-il un titre d'exercice ? +% \begin{macrocode} + \ifx\smc@exercicetitle\empty +% \end{macrocode} +% S'il n'y a pas de titre, on commence le texte de l'exercice (après +% un certain espacement horizontal). +% \begin{macrocode} + \hspace{\ExerciceTextHSep}% + \else +% \end{macrocode} +% S'il y a un titre, on le compose et on passe au paragraphe suivant. +% \begin{macrocode} + \hspace{\ExerciceTextHSep}% + \textcolor{LibreExerciceTitleColor} + {\ExerciceTitleFont \smc@exercicetitle}% + \par\nobreak + \fi +} +% \end{macrocode} +% En fait, on utilisera plutôt la forme d'environnement pour entrer +% les exercices. Le code terminal ne fait que placer un |\par| (cela +% peut être utile pour activer un éventuel |\centering| en fin de +% code. +% \begin{macrocode} +\def\endsmc@libreexercice{\par} +% \end{macrocode} +% \end{environment} +% \begin{macro}{\smc@annexesection} +% Les textes libres redéfinissent la macro |\section|. Pour cela on la +% stocke sous la forme de la macro |\smc@libresection|. Au départ, on +% la définit comme une macro |\section| habituelle, en particulier, on +% autorise la forme étoilée (même si pour l'instant elle n'apporte +% rien de plus que la forme non étoilée). +% \begin{macrocode} +\newcommand*\smc@libresection{% + \@ifstar{\smc@libresec}{\smc@libresec}% +} +\newcommand*\smc@libresec[2][]{% +% \end{macrocode} +% On commence par regarder si l'argument optionnel est vide. Si oui, +% le titre court sera égal au titre long. +% \begin{macrocode} + \ifx\relax#1\relax + \smc@@libresec{#2}{#2}% + \else + \smc@@libresec{#1}{#2}% + \fi +} +% \end{macrocode} +% À ce stade, on a un titre court en premier argument et un titre long +% en deuxième argument. Le travail effectif peut commencer. +% \begin{macrocode} +\newcommand*\smc@@libresec[2]{% + \par\goodbreak\addvspace{\BeforeLibreSectionVSpace}% +% \end{macrocode} +% Le titre court sera éventuellement utilisé pour une TDM. Ce sera à +% voir plus tard. +% \begin{macrocode} + \@ifmtarg{#1}{}{}% +% \end{macrocode} +% On compose le carré avec la bonne couleur. +% \begin{macrocode} + \begin{pspicture}(0,0)(\LibreSectionRuleWidth,\LibreSectionRuleWidth) + \psframe*[linecolor=LibreSectionRuleColor] + (0,0)(\LibreSectionRuleWidth,\LibreSectionRuleWidth) + \end{pspicture}% + \hspace{\LibreSectionRuleHSpace}% +% \end{macrocode} +% On place enfin le titre dans une minipage de la bonne largeur. +% \begin{macrocode} + \begin{minipage}[t]{\dimexpr\linewidth-\LibreSectionRuleWidth-\LibreSectionRuleHSpace} + \LibreSectionTitleFont + \textcolor{LibreSectionTitleColor}{#2}% + \end{minipage} +% \end{macrocode} +% On termine en plaçant un espacement vertical donné et une +% interdiction de coupe. Il n'y a pas besoin de s'occuper du retrait +% d'alinéa puisqu'il n'y en a pas ! +% \begin{macrocode} + \par\nobreak\addvspace{\AfterLibreSectionVSpace} +} +% \end{macrocode} +% \end{macro} +% \section{Habillage de texte} +% On a vraiment besoin de l'extension \package{picins}. Comme elle +% n'est plus disponible sur \TeX Live ou Mik\TeX{}, on la recopie ici. +% \begin{macrocode} +\newbox\@BILD +\newbox\@TEXT +\newdimen\d@breite +\newdimen\d@hoehe +\newdimen\d@xoff +\newdimen\d@yoff +\newdimen\d@shad +\newdimen\d@dash +\newdimen\d@boxl +\newdimen\d@pichskip +\newdimen\d@tmp +\newdimen\d@tmpa +\newdimen\d@bskip +\newdimen\hsiz@ +\newdimen\p@getot@l +\newcount\c@breite +\newcount\c@hoehe +\newcount\c@xoff +\newcount\c@yoff +\newcount\c@pos +\newcount\c@shad +\newcount\c@dash +\newcount\c@boxl +\newcount\c@zeilen +\newcount\@changemode +\newcount\c@piccaption +\newcount\c@piccaptionpos +\newcount\c@picpos +\newcount\c@whole +\newcount\c@half +\newcount\c@tmp +\newcount\c@tmpa +\newcount\c@tmpb +\newcount\c@tmpc +\newcount\c@tmpd +\newskip\d@leftskip +\newif\if@list \@listfalse +\newif\if@offset +\c@piccaptionpos=1 +\c@picpos=0 +\d@shad=4pt +\d@dash=4pt +\d@boxl=10pt +\d@pichskip=1em +\@changemode=0 +\def\@captype{figure} +\let\old@par=\par +\def\pichskip#1{\d@pichskip #1\relax} +\def\shadowthickness#1{\d@shad #1\relax} +\def\dashlength#1{\d@dash #1\relax} +\def\boxlength#1{\d@boxl #1\relax} +\def\picchangemode{\@changemode=1} +\def\nopicchangemode{\@changemode=0} +\def\piccaptionoutside{\c@piccaptionpos=1} +\def\piccaptioninside{\c@piccaptionpos=2} +\def\piccaptionside{\c@piccaptionpos=3} +\def\piccaptiontopside{\c@piccaptionpos=4} +\def\piccaption{\@ifnextchar [{\@piccaption}{\@piccaption[]}} +\def\@piccaption[#1]#2{\c@piccaption=1\def\sh@rtf@rm{#1}\def\capti@nt@xt{#2}} +\def\make@piccaption{% + \hsiz@\d@breite + \ifnum\c@piccaptionpos=2 + \advance\hsiz@ -2\fboxsep + \fi + \ifnum\c@piccaptionpos>2 + \hsiz@\hsize\advance\hsiz@-\d@breite\advance\hsiz@-\d@pichskip + \fi + \setbox\@TEXT=\vbox{\hsize\hsiz@\caption[\sh@rtf@rm]{\capti@nt@xt}}% +} +\def\newcaption{\refstepcounter\@captype\@dblarg{\@newcaption\@captype}} +\long\def\@newcaption#1[#2]#3{% + \old@par + \addcontentsline{\csname ext@#1\endcsname }{#1} + {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}% + \begingroup + \@parboxrestore + \normalsize + \@newmakecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}% + \old@par + \endgroup +} +\long\def\@newmakecaption#1#2{% + \vskip 10pt% + \setbox\@tempboxa \hbox {#1: #2}% + \ifdim \wd\@tempboxa >\hsize% + \setbox0=\hbox{#1: }\dimen0=\hsize\advance\dimen0 by-\wd0 + \setbox1=\vtop{\hsize=\dimen0 #2} + \hbox{\box0 \box1} + \par + \else \hbox to\hsize {\hfil \box \@tempboxa \hfil} + \fi +} +\def\parpic{% + \@ifnextchar ({\iparpic}{\iparpic(0pt,0pt)} +} +\def\iparpic(#1,#2){% + \@ifnextchar ({\@offsettrue\iiparpic(#1,#2)}% + {\@offsetfalse\iiparpic(#1,#2)(0pt,0pt)} +} +\def\iiparpic(#1,#2)(#3,#4){% + \@ifnextchar [{\iiiparpic(#1,#2)(#3,#4)}{\iiiparpic(#1,#2)(#3,#4)[l]} +} +\def\iiiparpic(#1,#2)(#3,#4)[#5]{% + \@ifnextchar [{\ivparpic(#1,#2)(#3,#4)[#5]}{\ivparpic(#1,#2)(#3,#4)[#5][]} +} +\def\ivparpic(#1,#2)(#3,#4)[#5][#6]#7{% + \let\par=\old@par\par% + \hangindent0pt\hangafter1% + \setbox\@BILD=\hbox{#7}% + \d@breite=#1\d@breite=\the\d@breite% + \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi% + \c@breite=\d@breite\divide\c@breite by65536% + \multiply\c@piccaption\c@piccaptionpos% + \d@hoehe=#2\d@hoehe=\the\d@hoehe% + \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536% + \d@yoff=\d@hoehe% + \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536% + \c@pos=1\unitlength1pt% + \if@offset% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe){}}% + \put(\c@xoff,\c@yoff){\box\@BILD}% + \end{picture}% + }% + \else% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}% + \end{picture}% + }% + \fi% + \ifnum\c@piccaption=2% + \make@piccaption% + \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}% + \hbox{\hspace{\fboxsep}\box\@TEXT}% + \vspace{4pt}}% + \fi% + \@tfor\@tempa := #5\do{% + \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa l\c@pos=1\fi% + \if\@tempa r\c@pos=2\fi% + }% + \ifnum\c@piccaption=1% + \make@piccaption% + \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}\hbox{\box\@TEXT}\vspace{4pt}}% + \fi% + \ifodd\count0\c@picpos=0\else\c@picpos=\@changemode\fi% + \pagetotal=\the\pagetotal% + \d@tmp=\pagegoal\advance\d@tmp by-\pagetotal\advance\d@tmp by-\baselineskip% + \ifdim\d@hoehe>\d@tmp% + \vskip 0pt plus\d@hoehe\relax\pagebreak[3]\vskip 0pt plus-\d@hoehe\relax% + \ifnum\c@picpos=1\c@picpos=0\else\c@picpos=\@changemode\fi% + \fi% + \ifnum\c@picpos=1\ifnum\c@pos=1\c@pos=2\else\c@pos=1\fi\fi% + \ifnum\@listdepth>0 + \@listtrue\parshape 0% + \advance\hsize -\rightmargin% + \d@leftskip \leftskip% + \leftskip \@totalleftmargin% + \if@inlabel\rule{\linewidth}{0pt}\vskip-\baselineskip\relax\fi% + \else\@listfalse\medskip% + \fi% + \if@list\d@tmpa=\linewidth\else\d@tmpa=\hsize\fi% + \ifnum\c@piccaption=3% + \make@piccaption% + \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT% + \ifdim\d@hoehe>\d@tmp% + \setbox\@TEXT=\vbox to\d@hoehe{\vfill\box\@TEXT\vspace{.2\baselineskip}\vfill}% + \else% + \setbox\@BILD=\vbox to\d@tmp{\vfill\box\@BILD\vfill}% + \d@hoehe\d@tmp% + \fi% + \fi% + \ifnum\c@piccaption=4% + \make@piccaption% + \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT% + \setbox\@TEXT=\vbox to\d@hoehe{\vspace{-10pt}\box\@TEXT\vfil}% + \advance\d@hoehe-\d@tmp% + \fi% + \ifnum\c@pos=1\d@tmpa=0pt% + \ifnum\c@piccaption>2% + \setbox\@BILD=\hbox{\box\@BILD\hspace{\d@pichskip}\hbox{\box\@TEXT}}% + \fi% + \else\advance\d@tmpa by-\wd\@BILD\d@breite=-\d@breite% + \ifnum\c@piccaption>2% + \d@tmpa=0pt% + \setbox\@BILD=\hbox{\hbox{\box\@TEXT}\hspace{\d@pichskip}\box\@BILD}% + \fi% + \fi% + \p@getot@l\the\pagetotal% + \d@bskip\d@hoehe\advance\d@bskip by\parskip\advance\d@bskip by.3\baselineskip% + {\noindent\hspace*{\d@tmpa}\relax% + \box\@BILD\nopagebreak\vskip-\d@bskip\relax\nopagebreak}% + \d@tmp=-\d@hoehe\divide\d@tmp by\baselineskip% + \c@zeilen=\d@tmp\advance\c@zeilen by-1% + \ifdim\d@breite<0pt\advance\d@breite by-\d@pichskip% + \else\advance\d@breite by\d@pichskip% + \fi% + \hangindent=\d@breite% + \hangafter=\c@zeilen% + \let\par=\x@par% + \ifnum\c@piccaption=3% + \hangindent0pt\hangafter1\let\par=\old@par% + \vskip\d@hoehe\vskip.2\baselineskip% + \fi% + \c@piccaption=0% +} +\newdimen\ptoti +\newdimen\ptotii +\def\x@par{% + \ptoti\pagetotal + \old@par + \ptotii\pagetotal + \ifdim\ptoti=\ptotii + \d@tmp\d@hoehe + \else + \d@tmp\baselineskip + \multiply\d@tmp by\prevgraf + \advance\d@tmp by\parskip + \global\advance\d@hoehe by-\d@tmp\d@tmp=\d@hoehe + \fi + \ifdim\d@hoehe>0pt + \divide\d@tmp by\baselineskip\c@zeilen=-\d@tmp\advance\c@zeilen by-1 + \c@zeilen=\the\c@zeilen + \else\c@zeilen=0 + \fi + \ifnum\c@zeilen<0\hangafter=\c@zeilen\hangindent=\d@breite + \else\let\par=\old@par + \hangindent 0pt + \leftskip \d@leftskip + \if@list\parshape \@ne \@totalleftmargin \linewidth + \advance\hsize \rightmargin + \fi + \fi +} +\def\picskip#1{% + \let\par=\old@par + \par + \pagetotal\the\pagetotal + \c@tmp=#1\relax + \ifnum\c@tmp=0 + \d@tmp\baselineskip\multiply\d@tmp by\prevgraf\advance\d@tmp\parskip + \ifdim\p@getot@l<\pagetotal + \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex + \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi + \fi + \ifdim\p@getot@l=\pagetotal + \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex + \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi + \fi + \else\hangafter=-\c@tmp\hangindent=\d@breite + \fi + \leftskip \d@leftskip + \if@list\parshape \@ne \@totalleftmargin \linewidth + \advance\hsize \rightmargin + \fi +} +\def\hpic{% + \@ifnextchar ({\ihpic}{\ihpic(0pt,0pt)}%) +} +\def\ihpic(#1,#2){% + \@ifnextchar ({\@offsettrue\iihpic(#1,#2)}%) + {\@offsetfalse\iihpic(#1,#2)(0pt,0pt)}% +} +\def\iihpic(#1,#2)(#3,#4){% + \@ifnextchar [{\iiihpic(#1,#2)(#3,#4)}{\iiihpic(#1,#2)(#3,#4)[l]}%] +} +\def\iiihpic(#1,#2)(#3,#4)[#5]{% + \@ifnextchar [{\ivhpic(#1,#2)(#3,#4)[#5]}{\ivhpic(#1,#2)(#3,#4)[#5][]}%] +} +\def\ivhpic(#1,#2)(#3,#4)[#5][#6]#7{% + \setbox\@BILD=\hbox{#7}% + \d@breite=#1\d@breite=\the\d@breite% + \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi% + \c@breite=\d@breite\divide\c@breite by65536% + \d@hoehe=#2\d@hoehe=\the\d@hoehe% + \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536% + \d@yoff=\d@hoehe% + \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536% + \c@pos=0\d@tmpa=\parindent\parindent=0pt\unitlength1pt% + \if@offset + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe){}}% + \put(\c@xoff,\c@yoff){\box\@BILD}% + \end{picture}% + }% + \else% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}% + \end{picture}% + }% + \fi% + \@tfor\@tempa := #5\do{% + \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa t\c@pos=1\fi% + \if\@tempa b\c@pos=2\fi% + }% + \ifnum\c@pos=0\parbox{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \ifnum\c@pos=1\parbox[t]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \ifnum\c@pos=2\parbox[b]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \parindent=\d@tmpa% +} +\def\Rahmen(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@tmpa=#1\advance\c@tmpa by\c@whole\advance\c@tmpa by\c@whole% + \c@tmpb=#2\advance\c@tmpb by\c@whole\advance\c@tmpb by\c@whole% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@whole,\c@half){\framebox(#1,#2){#3}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth% + \global\advance\d@hoehe by2\@wholewidth% +} +\def\Schatten(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@shad=\d@shad\divide\c@shad by65536% + \c@tmp=\c@whole\advance\c@tmp by\c@whole\c@tmpd=\c@tmp% + \advance\c@tmp by\c@shad% + \advance\c@tmpd by#1% + \advance\c@half by\c@shad% + \c@tmpa=#1\advance\c@tmpa by\c@tmp% + \c@tmpb=#2\advance\c@tmpb by\c@tmp% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@whole,\c@half){\framebox(#1,#2){#3}}% + \put(\c@shad,0){\rule{\c@tmpd pt}{\c@shad pt}}% + \put(\c@tmpd,0){\rule{\c@shad pt}{#2 pt}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth\global\advance\d@breite by\d@shad% + \global\advance\d@hoehe by2\@wholewidth\global\advance\d@hoehe by\d@shad% +} +\def\Oval(#1,#2)#3{% + \@wholewidth=0.4pt% + \c@tmpa=\the#1\divide\c@tmpa by2% + \c@tmpb=\the#2\divide\c@tmpb by2% + \begin{picture}(#1,#2)% + \put(\c@tmpa,\c@tmpb){\oval(#1,#2)}% + \put(0.4,0.4){#3}% + \end{picture}% + \global\advance\d@breite by1pt\global\advance\d@hoehe by1pt% +} +\def\Strich(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@dash=\d@dash\divide\c@dash by65536% + \c@tmp=\c@whole\advance\c@tmp by\c@whole% + \c@tmpa=#1\advance\c@tmpa by\c@tmp% + \c@tmpb=#2\advance\c@tmpb by\c@tmp% + \c@tmpc=#1\advance\c@tmpc by\c@whole% + \c@tmpd=#2\advance\c@tmpd by\c@whole% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@half,\c@half){\dashbox{\c@dash}(\c@tmpc,\c@tmpd){#3}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth% + \global\advance\d@hoehe by2\@wholewidth% +} +\def\Kasten(#1,#2)#3{% + \@wholewidth=0.4pt% + \c@boxl=\d@boxl\divide\c@boxl by65536\c@boxl=\the\c@boxl% + \c@tmpa=#1\advance\c@tmpa by\c@boxl% + \c@tmpb=#2\advance\c@tmpb by\c@boxl% + \c@tmp=#2% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(0,\c@boxl){\framebox(#1,#2){#3}}% + \put(\c@boxl,0){\line(-1,1){\c@boxl}}% + \put(\c@boxl,0){\line(1,0){#1}\line(-1,1){\c@boxl}}% + \put(\c@boxl,0){\put(#1,0){\line(0,1){\c@tmp}% + \put(0,\c@tmp){\line(-1,1){\c@boxl}}}}% + \end{picture}% + \global\advance\d@breite by\d@boxl% + \global\advance\d@hoehe by\d@boxl% +} +\newbox\env@box% +\newdimen\d@envdp +\newcount\c@hsize +\newcount\c@envdp +\newdimen\d@envb +\long\def\frameenv{\@ifnextchar [{\@frameenv}{\@frameenv[\textwidth]}} +\long\def\@frameenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth + \advance\textwidth by-2\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\def\endframeenv{% + \egroup% + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@envdp=\d@envdp \divide\c@envdp by65536% + \c@tmp=\@wholewidth \divide\c@tmp by65536 + \vskip\@wholewidth% + \unitlength 1pt\noindent% + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmp,\c@tmp){\framebox(\c@hsize,\c@envdp){\box\env@box}} + \end{picture}% +} +\long\def\shadowenv{\@ifnextchar [{\@shadowenv}{\@shadowenv[\textwidth]}} +\long\def\@shadowenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth + \advance\textwidth by-2\fboxsep + \advance\textwidth by-\d@shad% + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\def\endshadowenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \d@tmpa=\d@envb + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth \advance\d@envb by-\d@shad + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \c@envdp=\d@envdp \divide\c@envdp by65536% + \d@hoehe=\d@envdp + \advance\d@hoehe by2\@wholewidth \advance\d@hoehe by\d@shad + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@shad =\d@shad \divide\c@shad by65536 + \c@tmp=\@wholewidth \divide\c@tmp by65536 + \advance\d@tmpa by-2\d@shad + \c@xoff =\d@tmpa \divide\c@xoff by65536 + \advance\c@xoff by\c@shad \advance\c@xoff by-1 + \advance\d@envdp by\@wholewidth + \vskip\@halfwidth + \unitlength 1pt\noindent% + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmp,\c@shad){\framebox(\c@hsize,\c@envdp){\box\env@box}} + \put(\c@shad,0){\rule{\d@tmpa}{\d@shad}}% + \put(\c@xoff,0){\rule{\d@shad}{\d@envdp}}% + \end{picture}% + \vskip\@halfwidth +} +\long\def\dashenv{\@ifnextchar [{\@dashenv}{\@dashenv[\textwidth]}} +\long\def\@dashenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth \advance\textwidth by-2\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\long\def\enddashenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \advance\d@envdp by\@wholewidth + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@envdp=\d@envdp \divide\c@envdp by65536% + \c@dash=\d@dash \divide\c@dash by65536% + \c@whole=\@wholewidth \divide\c@whole by65536 + \c@half=\@halfwidth \divide\c@half by 65536 + \noindent\unitlength 1pt + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@half,\c@whole){\dashbox{\c@dash}(\c@hsize,\c@envdp){\box\env@box}} + \end{picture}% +} +\long\def\ovalenv{\@ifnextchar [{\@ovalenv}{\@ovalenv[\textwidth]}}% +\long\def\@ovalenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-4\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\long\def\endovalenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \@wholewidth=0.4pt + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by4\fboxsep% + \c@envdp=\d@envdp \divide\c@envdp by65536% + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@tmpa=\c@hsize \divide\c@tmpa by2% + \c@tmpb=\c@envdp \divide\c@tmpb by2% + \d@tmpa=2\fboxsep \advance\d@tmpa by\@wholewidth + \c@xoff=\d@tmpa \divide\c@xoff by65536% + \advance\d@tmpa by\dp\env@box + \c@yoff=\d@tmpa \divide\c@yoff by65536% + \unitlength 1pt\noindent + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmpa,\c@tmpb){\oval(\c@hsize,\c@envdp)} + \put(\c@xoff,\c@yoff){\box\env@box}% + \end{picture}% +} +% \end{macrocode} +% \section{Overprint} +% \begin{macrocode} +\let\set@op\relax +\newif\if@op +\def\overprint{% + \@optrue + \set@op + \ignorespaces +} +\def\knockout{% + \@opfalse + \set@op + \ignorespaces +} +\def\testname{pdftex.def} +\ifx \Gin@driver \testname + \AtBeginDocument{ + \immediate\pdfobj{<< /Type /ExtGState /op false /OP false /OPM 0 >>} + \edef\op@off{\the\pdflastobj} + \immediate\pdfobj{<< /Type /ExtGState /op true /OP true /OPM 1 >>} + \edef\op@on{\the\pdflastobj} + \immediate\pdfobj{ << % + /GSko \op@off\space 0 R % + /GSop \op@on\space 0 R >>} + \edef\@extgs{\the\pdflastobj} + \edef\next{\global\noexpand\pdfpageresources={\the\pdfpageresources + \space /ExtGState \@extgs\space 0 R }} + \next + } + \def\set@op{% + \if@op + \pdfliteral direct {/GSop gs}% + \else + \pdfliteral direct {/GSko gs}% + \fi + \aftergroup\reset@op} + \def\reset@op{% + \if@op + \pdfliteral direct {/GSop gs}% + \else + \pdfliteral direct {/GSko gs}% + \fi + } +\fi +\def\testname{dvips.def} +\ifx \Gin@driver \testname + \def\set@op{% + \if@op + \special{ps:true setoverprint}% + \else + \special{ps:false setoverprint}% + \fi + \aftergroup\reset@op} + \def\reset@op{% + \if@op + \special{ps:true setoverprint}% + \else + \special{ps:false setoverprint}% + \fi + } +\fi +\@opfalse +\overprint +% \end{macrocode} +% \iffalse +% +%<*package> +% \fi +% \section{Package} +% On crée également un package qui va reprendre les éléments +% syntaxiques sans la mise en page générale. Cela doit servir à +% compiler des petits bouts de codes extraits de toute la gangue +% propre à un manuel complet et de pouvoir utiliser une autre classe, +% particulièrement \class{beamer}. +% +% L'idée générale est de reprendre les commandes et environnements +% concernant: +% \begin{itemize} +% \item les tableaux : +% \item les algorithmes ; +% \item les unités ; +% \item les macros |\TopStrut| et |\BottomStrut| ; +% \item les listes. +% \end{itemize} +% Il n'y a donc rien de très sorcier : c'est essentiellement de la +% recopie verbatim de certaines sections de la classe +% \class{sesamanuel}. Il n'y a que les listes qui posent un tout petit +% problème. On ne commentera donc quaisment pas le code qui suit (les +% explications (sont données plus haut). +% +% On commence par les initialisations habituelles et le chargement +% d'un certain nombre d'extensions. On garde l'option pour indiquer le +% codage d'entrée. +% \begin{macrocode} +\def\filedate{2015/03/03} +\def\fileversion{0.4} +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{sesamanuel}[% + \filedate\space v\fileversion\space + Package pour Sesamath (SM/JCC/SM)% +] +\def\smc@enc@opt#1{\DeclareOption{#1}{\def\smc@encoding{#1}}} +\smc@enc@opt{ascii} +\smc@enc@opt{latin1} +\smc@enc@opt{latin2} +\smc@enc@opt{latin3} +\smc@enc@opt{latin4} +\smc@enc@opt{latin5} +\smc@enc@opt{latin9} +\smc@enc@opt{latin10} +\smc@enc@opt{decmulti} +\smc@enc@opt{cp850} +\smc@enc@opt{cp852} +\smc@enc@opt{cp858} +\smc@enc@opt{cp437} +\smc@enc@opt{cp437de} +\smc@enc@opt{cp865} +\smc@enc@opt{applemac} +\smc@enc@opt{macce} +\smc@enc@opt{next} +\smc@enc@opt{cp1250} +\smc@enc@opt{cp1252} +\smc@enc@opt{cp1257} +\smc@enc@opt{ansinew} +\smc@enc@opt{utf8} +\ExecuteOptions{utf8} +\ProcessOptions +\newif\ifxetex +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname XeTeXrevision\endcsname\relax + \xetexfalse +\else + \xetextrue +\fi +\RequirePackage{etex} +\ifxetex + \RequirePackage{fontspec} + \RequirePackage{xunicode} + \defaultfontfeatures{Ligatures=TeX} + \unless\ifx\smc@encoding\smc@string@utfviii + \ClassError{sesamanuel}{Vous ne pouvez pas utiliser un codage autre + que utf8 avec xelatex}{Changez les codages de tous vos fichiers + pour les transformer en utf8.}% + \fi +\else + \RequirePackage[T1]{fontenc} + \RequirePackage[\smc@encoding]{inputenc} +\fi +\RequirePackage[scaled=0.87]{helvet} +\RequirePackage{mathpazo} +\renewcommand{\ttdefault}{lmtt} +\RequirePackage{mathrsfs} +\RequirePackage{pifont} +\RequirePackage[official]{eurosym} +\RequirePackage{ifmtarg} +\RequirePackage{mathtools} +\RequirePackage{amssymb} +\RequirePackage{longtable, tabularx} +\RequirePackage{multirow} +% \end{macrocode} +% Certaines classes comme beamer peuvent appeler |xcolor| avec +% d'autres options d'extension. Il faut donc se prémunir d'un clash +% avec le test suivant. +% \begin{macrocode} +\ifdefined \XC@catcodes + \RequirePackage{colortbl} +\else + \RequirePackage[table]{xcolor} +\fi +\RequirePackage{multido} +\RequirePackage{multicol} +\RequirePackage[french]{babel} +\RequirePackage[autolanguage]{numprint} +% \end{macrocode} +% On reprend le même nuancier complet que celui de la classe. +% \begin{macrocode} +\definecolor{A1} {cmyk}{1.00, 0.00, 0.00, 0.50} +\definecolor{A2} {cmyk}{0.60, 0.00, 0.00, 0.10} +\definecolor{A3} {cmyk}{0.30, 0.00, 0.00, 0.05} +\definecolor{A4} {cmyk}{0.10, 0.00, 0.00, 0.00} +\definecolor{B1} {cmyk}{0.00, 1.00, 0.60, 0.40} +\definecolor{B2} {cmyk}{0.00, 0.85, 0.60, 0.15} +\definecolor{B3} {cmyk}{0.00, 0.20, 0.15, 0.05} +\definecolor{B4} {cmyk}{0.00, 0.05, 0.05, 0.00} +\definecolor{C1} {cmyk}{0.00, 1.00, 0.00, 0.50} +\definecolor{C2} {cmyk}{0.00, 0.60, 0.00, 0.20} +\definecolor{C3} {cmyk}{0.00, 0.30, 0.00, 0.05} +\definecolor{C4} {cmyk}{0.00, 0.10, 0.00, 0.05} +\definecolor{D1} {cmyk}{0.00, 0.00, 1.00, 0.50} +\definecolor{D2} {cmyk}{0.20, 0.20, 0.80, 0.00} +\definecolor{D3} {cmyk}{0.00, 0.00, 0.20, 0.10} +\definecolor{D4} {cmyk}{0.00, 0.00, 0.20, 0.05} +\definecolor{F1} {cmyk}{0.00, 0.80, 0.50, 0.00} +\definecolor{F2} {cmyk}{0.00, 0.40, 0.30, 0.00} +\definecolor{F3} {cmyk}{0.00, 0.15, 0.10, 0.00} +\definecolor{F4} {cmyk}{0.00, 0.07, 0.05, 0.00} +\definecolor{G1} {cmyk}{1.00, 0.00, 0.50, 0.00} +\definecolor{G2} {cmyk}{0.50, 0.00, 0.20, 0.00} +\definecolor{G3} {cmyk}{0.20, 0.00, 0.10, 0.00} +\definecolor{G4} {cmyk}{0.10, 0.00, 0.05, 0.00} +\definecolor{H1} {cmyk}{0.40, 0.00, 1.00, 0.10} +\definecolor{H2} {cmyk}{0.20, 0.00, 0.50, 0.05} +\definecolor{H3} {cmyk}{0.10, 0.00, 0.20, 0.00} +\definecolor{H4} {cmyk}{0.07, 0.00, 0.15, 0.00} +\definecolor{J1} {cmyk}{0.00, 0.50, 1.00, 0.00} +\definecolor{J2} {cmyk}{0.00, 0.20, 0.50, 0.00} +\definecolor{J3} {cmyk}{0.00, 0.10, 0.20, 0.00} +\definecolor{J4} {cmyk}{0.00, 0.07, 0.15, 0.00} +\definecolor{FondOuv} {cmyk}{0.00, 0.05, 0.10, 0.00} +\definecolor{FondAutoEvaluation}{cmyk}{0.00, 0.03, 0.15, 0.00} +\definecolor{FondTableaux} {cmyk}{0.00, 0.00, 0.20, 0.00} +\definecolor{FondAlgo} {cmyk}{0.07, 0.00, 0.30, 0.00} +\definecolor{BleuOuv} {cmyk}{1.00, 0.00, 0.00, 0.00} +\definecolor{PartieFonction} {cmyk}{1.00, 0.00, 0.00, 0.00} +\definecolor{PartieGeometrie} {cmyk}{0.80, 0.80, 0.00, 0.00} +\definecolor{PartieStatistique} {cmyk}{0.60, 0.95, 0.00, 0.20} +\definecolor{PartieStatistiqueOLD}{cmyk}{0.95, 0.60, 0.20, 0.00} +\definecolor{PartieStatistique*}{cmyk}{0.30, 1.00, 0.00, 0.00} +\definecolor{U1} {cmyk}{0.50, 0.10, 0.00, 0.10} +\definecolor{U2} {cmyk}{0.20, 0.15, 0.00, 0.00} +\definecolor{U3} {cmyk}{0.50, 0.00, 1.00, 0.00} +\definecolor{U4} {cmyk}{0.40, 0.00, 0.00, 0.00} +\definecolor{Blanc} {cmyk}{0.00, 0.00, 0.00, 0.00} +\definecolor{Gris1} {cmyk}{0.00, 0.00, 0.00, 0.20} +\definecolor{Gris2} {cmyk}{0.00, 0.00, 0.00, 0.40} +\definecolor{Gris3} {cmyk}{0.00, 0.00, 0.00, 0.50} +\definecolor{Noir} {cmyk}{0.00, 0.00, 0.00, 1.00} +\AtBeginDocument{\def\default@color{cmyk 0 0 0 1}\normalcolor} +% \end{macrocode} +% Code pour tout ce qui concerne les tableaux. On a regroupé ici les +% macros de couleurs et de longueurs utilisées pour construire les tableaux. +% \begin{macrocode} +\def\BeforeTableVSpace{1.5mm} +\def\AfterTableVSpace{1.5mm} +\colorlet{FiletTableauColor}{Gris3} +\newcommand{\tableau}[1][c]{% + \arrayrulecolor{FiletTableauColor}% + \renewcommand\tabularxcolumn[1]{>{\centering\arraybackslash}m{##1}}% + \ifcsname#1tableau\endcsname + \expandafter\let\expandafter\smc@next\csname#1tableau\endcsname + \expandafter\let\expandafter\endtableau\csname end#1tableau\endcsname + \else + \ClassError{sesamanuel} + {Le type de tableau #1 n'existe pas} + {Les types possibles sont 't', 'c', 'l', 'cl', 'T', 'C', + 'L', 'CL' et 'pr'.}% + \let\smc@next\ctableau + \let\endtableau\endctableau + \fi + \par\addvspace{\BeforeTableVSpace} + \smc@next +} +\newenvironment{ttableau}[2] +{\tabularx{#1}{|*{#2}{X|}}} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{Ttableau}[3] +{\tabularx{#1}{|#3|*{\numexpr#2-1}{X|}}} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{ctableau}[2] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}X| + *{\numexpr#2-1}{X|}}% +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{Ctableau}[3] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}#3| + *{\numexpr#2-1}{X|}}% +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{ltableau}[2] +{% + \tabularx{#1}{|*{#2}{X|}} + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{Ltableau}[3] +{% + \tabularx{#1}{|#3|*{\numexpr#2-1}{X|}} + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{cltableau}[2] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}X| + *{\numexpr#2-1}{X|}}% + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{CLtableau}[3] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}#3| + *{\numexpr#2-1}{X|}}% + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\let\lctableau\cltableau +\let\endlctableau\endcltableau +\let\LCtableau\CLtableau +\let\endLCtableau\endCLtableau +\newenvironment{prtableau}[1] +{% + \def\propriete{% + \refstepcounter{propriete}% + \psframebox*[fillcolor=TablePropertyTitleBkgColor]{% + \ProprieteFont + \textcolor{TablePropertyTitleTextColor}{ \MakeUppercase{\StringPropriete}} + \NumProprieteFont + \textcolor{TablePropertyTitleTextColor}{\thepropriete} + } + }% + \longtable{% + >{\leavevmode\endgraf\vspace{-0.3\baselineskip}} + m{0.24\dimexpr#1-6\tabcolsep} + <{\endgraf\vspace{-0.3\baselineskip}} + >{% + \leavevmode\endgraf\vspace{-0.3\baselineskip} + \columncolor{TablePropertyBkgColor} + } + m{0.46\dimexpr#1-6\tabcolsep} + <{\endgraf\vspace{-0.3\baselineskip}} + >{% + \centering\arraybackslash + \leavevmode\endgraf\vspace{-0.3\baselineskip} + } + m{0.30\dimexpr#1-6\tabcolsep} + <{\endgraf\vspace{-0.3\baselineskip}} + }% +} +{\endlongtable\par\addvspace{\AfterTableVSpace}} +\newcommand\tabX[1][\ht\@arstrutbox,\dp\@arstrutbox]{% + \smc@GetVTabX#1,,\@nil + \vrule width0pt height\smc@htTabX depth-\smc@dpTabX + \pnode(-\tabcolsep,\smc@htTabX){ul} + \pnode(-\tabcolsep,\smc@dpTabX){dl} + \hspace*{\stretch{1}}% + \pnode(\tabcolsep,\smc@htTabX){ur} + \pnode(\tabcolsep,\smc@dpTabX){dr} + \psline(ul)(dr) + \psline(dl)(ur) +} +\def\smc@GetVTabX#1,#2,{% + \edef\smc@htTabX{\the\dimexpr#1}% + \edef\smc@dpTabX{-\the\dimexpr#2}% + \smc@gobblenil +} +\def\smc@gobblenil#1\@nil{} +% \end{macrocode} +% Code pour les algorithmes. Comme pour les tableaux, on a besoin d'un +% certains nombre de longueurs et de couleurs. On les définit en +% premier lieu. +% \begin{macrocode} +\definecolor{FondAlgo} {cmyk}{0.07, 0.00, 0.30, 0.00} +\colorlet{AlgorithmeRuleColor}{D2} +\colorlet{AlgorithmeBkgColor}{FondAlgo} +\colorlet{CouleurAlgoAffiche}{Noir} +\colorlet{CouleurAlgoDemander}{Noir} +\colorlet{CouleurAlgoSaisir}{Noir} +\colorlet{CouleurAlgoStocker}{Noir} +\colorlet{CouleurAlgoSi}{Noir} +\colorlet{CouleurAlgoTantque}{Noir} +\colorlet{CouleurAlgoPour}{Noir} +\colorlet{CouleurAlgoCalcule}{Noir} +\colorlet{CouleurAlgoInitialiser}{Noir} +\colorlet{CouleurAlgoIncrementer}{Noir} +\colorlet{CouleurAlgoCommentaire}{Noir} +\colorlet{CouleurAlgoDonnerValeur}{Noir} +\def\AlgorithmeRuleWidth{1pt} +\def\AlgorithmeSep{2mm} +\def\AlgorithmeNumWidth{6mm} +\def\AlgoIndent{1em} +\def\BeforeAlgorithmeVSpace{1.5mm} +\def\AfterAlgorithmeVSpace{1.5mm} +% \end{macrocode} +% On garde les deux façons de composer les algorithmes. L'ancienne +% façon en premier. +% \begin{macrocode} +\newcounter{smc@line} +\newenvironment{oldalgorithme}{% + \ttfamily + \c@smc@line \z@ + \def\par{% + \@@par + \afterassignment\smc@displaynum\let\next=% + }% + \def\smc@displaynum{% + \ifx\next\end + \expandafter\end + \else + \global\advance\c@smc@line\@ne% + \leavevmode\hb@xt@\AlgorithmeNumWidth{\the\c@smc@line.\hss}% + \expandafter\next + \fi% + }% + \shorthandoff{;:!?}% + \@vobeyspaces + \obeylines + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\AlgorithmeRuleWidth*2-\AlgorithmeSep*2}% +} +{% + \endminipage + \end{lrbox}% + \@@par\addvspace{\BeforeAlgorithmeVSpace} + \psframebox[linecolor=AlgorithmeRuleColor, + linewidth=\AlgorithmeRuleWidth, + fillstyle=solid, + fillcolor=AlgorithmeBkgColor, + framesep=\AlgorithmeSep, + cornersize=absolute, + linearc=\AlgorithmeSep]% + {\usebox{\smc@boxa}}% + \@@par\addvspace{\AfterAlgorithmeVSpace} +} +% \end{macrocode} +% La nouvelle façon ensuite. +% \begin{macrocode} +\newcount\smc@indent +\newcommand*\smc@inc@indent{% + \advance\smc@indent\@ne +} +\newcommand*\smc@dec@indent{% + \ifnum\smc@indent>\z@ + \advance\smc@indent\m@ne + \fi +} +\newcommand*\smc@write@indent{% + \par + \refstepcounter{smc@line}% + \dimen0 \dimexpr\AlgoIndent*\smc@indent + \leavevmode\hb@xt@\AlgorithmeNumWidth{\texttt{\the\c@smc@line.}\hss}% + \hspace*{\dimen0}% +} +\newcommand*\BlocVariables{% + \smc@dec@indent + \smc@write@indent + \textit{Liste des variables utilis\'ees}% + \smc@inc@indent +} +\newcommand*\BlocEntrees{% + \smc@dec@indent + \smc@write@indent + \textit{Entr\'ees}% + \smc@inc@indent +} +\newcommand*\BlocTraitements{% + \smc@dec@indent + \smc@write@indent + \textit{Traitements} + \smc@inc@indent +} +\newcommand*\BlocAffichage{% + \smc@dec@indent + \smc@write@indent + \textit{Affichage} + \smc@inc@indent +} +\newcommand\BlocTraitementsEtAffichage{% + \smc@dec@indent + \smc@write@indent + \textit{Traitements et affichage} + \smc@inc@indent +} +\newcommand*\DeclareVar[3]{% + \smc@write@indent + \texttt{#1 \string: }% + \textit{#2}\hfill + \textcolor{CouleurAlgoCommentaire}{#3}% +} +\newcommand*\TantQue[2]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Tant que} (\texttt{#1})} + \texttt{\bfseries faire} + \smc@inc@indent + #2 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Fin Tant que}}% +} +\newcommand*\Pour[4]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoPour}{\bfseries Pour}} + \texttt{#1} + \textcolor{CouleurAlgoPour}{\bfseries variant de} + \texttt{#2} + \textcolor{CouleurAlgoPour}{\bfseries \`a} + \texttt{#3} + \texttt{\bfseries faire} + \smc@inc@indent + #4 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Fin Pour}}% +} +\newcommand*\PourAvecPas[5]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoPour}{\bfseries Pour}} + \texttt{#1} + \textcolor{CouleurAlgoPour}{\bfseries variant de} + \texttt{#2} + \textcolor{CouleurAlgoPour}{\bfseries \`a} + \texttt{#3} + \textcolor{CouleurAlgoPour}{\bfseries avec un pas de} + \texttt{#4} + \texttt{faire} + \smc@inc@indent + #5 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Fin Pour}}% +} +\newcommand*\SiAlors[2]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Si}} + {#1} + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Alors}} + \smc@inc@indent + #2 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Fin Si}}% +} +\newcommand*\SiAlorsSinon[3]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Si}} + {#1} + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Alors}} + \smc@inc@indent + #2 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Sinon}} + \smc@inc@indent + #3 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Fin Si}}% +} +\newcommand*\AfficherVar[1]{% + \smc@write@indent + \textcolor{CouleurAlgoAffiche}{Afficher la valeur de} + \texttt{#1}% +} +\newcommand*\Afficher[1]{% + \smc@write@indent + \textcolor{CouleurAlgoAffiche}{Afficher} + #1% +} +\newcommand*\Calculer[1]{% + \smc@write@indent + \textcolor{CouleurAlgoCalcule}{Calculer} + #1% +} +\newcommand*\Demander[1]{% + \smc@write@indent + \textcolor{CouleurAlgoDemander}{Demander} + \texttt{#1}% +} +\newcommand*\Saisir[1]{% + \smc@write@indent + \textcolor{CouleurAlgoSaisir}{Saisir} + \texttt{#1}% +} +\newcommand*\Stocker[1]{% + \smc@write@indent + \textcolor{CouleurAlgoStocker}{Stocker} la r\'eponse dans + \texttt{#1}% +} +\newcommand*\DonnerValeur[2]{% + \smc@write@indent + \textcolor{CouleurAlgoDonnerValeur}{Donner} \`a \texttt{#1} + la valeur de \texttt{#2}% +} +\newcommand*\TitreAlgo[1]{% + \smc@write@indent + \textit{Algorithme \string: }#1 +} +\newcommand*\FinAlgo{% + \smc@dec@indent + \smc@write@indent + \textit{Fin de l'algorithme}% +} +\newenvironment{algorithme}{% + \c@smc@line\z@ + \shorthandoff{;:!?}% + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\AlgorithmeRuleWidth*2-\AlgorithmeSep*2}% +} +{% + \endminipage + \end{lrbox}% + \par\addvspace{\BeforeAlgorithmeVSpace} + \psframebox[linecolor=AlgorithmeRuleColor, + linewidth=\AlgorithmeRuleWidth, + fillstyle=solid, + fillcolor=AlgorithmeBkgColor, + framesep=\AlgorithmeSep, + cornersize=absolute, + linearc=\AlgorithmeSep]% + {\usebox{\smc@boxa}}% + \par\addvspace{\AfterAlgorithmeVSpace} +} +% \end{macrocode} +% Code pour les unités. +% \begin{macrocode} +\let\uori\u +\let\Uori\U +\let\U\relax +\newcommand\U[1]{\ensuremath{#1}} +\renewcommand\u[1]{\ensuremath{\nombre{#1}}} +\newcommand\newunit[2]{% + \expandafter\newcommand\csname u#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{\nombre{##1}\,#2}}% + }% + \expandafter\newcommand\csname U#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{##1\,#2}}% + }% +} +\newcommand\renewunit[2]{% + \expandafter\renewcommand\csname u#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{\nombre{##1}\,#2}}% + }% + \expandafter\renewcommand\csname U#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{##1\,#2}}% + }% +} +\newunit{ym}{\text{ym}} +\newunit{zm}{\text{zm}} +\newunit{am}{\text{am}} +\newunit{fm}{\text{fm}} +\newunit{pm}{\text{pm}} +\newunit{nm}{\text{nm}} +\newunit{micron}{\mu\text{m}} +\newunit{mm}{\text{mm}} +\newunit{cm}{\text{cm}} +\newunit{dm}{\text{dm}} +\newunit{m}{\text{m}} +\newunit{dam}{\text{dam}} +\newunit{hm}{\text{hm}} +\newunit{km}{\text{km}} +\newunit{Mm}{\text{Mm}} +\newunit{Gm}{\text{Gm}} +\newunit{Tm}{\text{Tm}} +\newunit{Pm}{\text{Pm}} +\newunit{Em}{\text{Em}} +\newunit{Zm}{\text{Zm}} +\newunit{Ym}{\text{Ym}} +\newunit{mmq}{\text{mm}^2} +\newunit{cmq}{\text{cm}^2} +\newunit{dmq}{\text{dm}^2} +\newunit{mq}{\text{m}^2} +\newunit{damq}{\text{dam}^2} +\newunit{hmq}{\text{hm}^2} +\newunit{kmq}{\text{km}^2} +\newunit{ha}{\text{ha}} +\newunit{mmc}{\text{mm}^3} +\newunit{cmc}{\text{cm}^3} +\newunit{dmc}{\text{dm}^3} +\newunit{mc}{\text{m}^3} +\newunit{damc}{\text{dam}^3} +\newunit{hmc}{\text{hm}^3} +\newunit{kmc}{\text{km}^3} +\newunit{hl}{\text{hl}} +\newunit{dal}{\text{dal}} +\newunit{l}{\text{l}} +\newunit{dl}{\text{dl}} +\newunit{cl}{\text{cl}} +\newunit{ml}{\text{ml}} +\newunit{hel}{\text{h$\ell$}} +\newunit{dael}{\text{da$\ell$}} +\newunit{el}{\text{$\ell$}} +\newunit{del}{\text{d$\ell$}} +\newunit{cel}{\text{c$\ell$}} +\newunit{mel}{\text{m$\ell$}} +\newunit{s}{\text{s}} +\newunit{min}{\text{min}} +\newunit{h}{\text{h}} +\newunit{ms}{\text{m$\cdot$s}^{-1}} +\newunit{mh}{\text{m$\cdot$h}^{-1}} +\newunit{kms}{\text{km$\cdot$s}^{-1}} +\newunit{kmmin}{\text{km$\cdot$min}^{-1}} +\newunit{kmh}{\text{km$\cdot$h}^{-1}} +\newunit{ls}{\text{$\ell\cdot$s}^{-1}} +\newunit{mg}{\text{mg}} +\newunit{cg}{\text{cg}} +\newunit{dg}{\text{dg}} +\newunit{g}{\text{g}} +\newunit{dag}{\text{dag}} +\newunit{hg}{\text{hg}} +\newunit{kg}{\text{kg}} +\newunit{T}{\text{T}} +\newunit{pc}{\%} +\newunit{deg}{\text{\degre}} +\newunit{degc}{\text{\degre C}} +\newunit{euro}{\text{\euro}} +% \end{macrocode} +% Code pour les strut +% \begin{macrocode} +\newcommand*\Strut[1][1]{% + \leavevmode + \vrule \@height #1\ht\strutbox + \@depth #1\dp\strutbox + \@width\z@ +} +\newcommand*\TopStrut[1][1]{% + \leavevmode + \vrule \@height #1\ht\strutbox + \@depth \z@ + \@width \z@ +} +\newcommand*\BotStrut[1][1]{% + \leavevmode + \vrule \@height \z@ + \@depth #1\dp\strutbox + \@width \z@ +} +% \end{macrocode} +% \begin{macro}{\setlist} +% Code pour les listes. Ici, il faut choisir le type de liste qu'on +% veut obtenir. Pour cela, on utilise la macro |\setlist| qui va +% permettre à l'utilisateur de pouvoir choisir lui-même l'aspect des +% listes. +% +% Le principe est de passer en paramètre le code de la partie +% voulue. On a les possibilités : +% \begin{itemize} +% \item prerequis ; +% \item AE ; +% \item exapp ; +% \item def ; +% \item activite ; +% \item rem ; +% \item exemple ; +% \item proof ; +% \item exercice ; +% \item acquis ; +% \item commentaire ; +% \item recreation ; +% \item annexe ; +% \item lexique ; +% \item libre. +% \end{itemize} +% \begin{macrocode} +\newcommand\setlist[1]{% + \expandafter\let\expandafter\itemize + \csname smc@#1itemize\endcsname + \expandafter\let\expandafter\enditemize + \csname endsmc@#1itemize\endcsname + \expandafter\let\expandafter\colitemize + \csname smc@#1colitemize\endcsname + \expandafter\let\expandafter\endcolitemize + \csname endsmc@#1colitemize\endcsname + \expandafter\let\expandafter\enumerate + \csname smc@#1enumerate\endcsname + \expandafter\let\expandafter\endenumerate + \csname endsmc@#1enumerate\endcsname + \expandafter\let\expandafter\colenumerate + \csname smc@#1colenumerate\endcsname + \expandafter\let\expandafter\endcolenumerate + \csname endsmc@#1colenumerate\endcsname +} +% \end{macrocode} +% \end{macro} +% Auparavant, il faut toutes les couleurs et les longueurs utilisées +% par les listes. +% \begin{macrocode} +\colorlet{CommentaireItemColor}{Noir} +\colorlet{PrerequisItemColor}{B2} +\colorlet{AEItemColor}{B2} +\colorlet{ActiviteItemColor}{C1} +\colorlet{DefItemColor}{B2} +\colorlet{RemItemColor}{H1} +\colorlet{ExempleItemColor}{J1} +\colorlet{ExAppItemColor}{A2} +\colorlet{ProofItemColor}{J2} +\colorlet{ExerciceItemColor}{G1} +\colorlet{AcquisItemColor}{F1} +\colorlet{RecreationItemColor}{U3} +\colorlet{LexiqueItemColor}{B2} +\def\ListLabelWidth{4mm} +\def\EnumerateLabelWidth{5mm} +% \end{macrocode} +% Listes de type itemize et corritemize +% \begin{macrocode} +\newcommand*\DeclareCorrItemize[2]{% + \newenvironment{smc@corr#1itemize}{% + \def\item{\par#2~}% + \ignorespaces + } + {\par} +} +\def\smc@setalllist{% + \setlength{\leftmargin}{\ListLabelWidth}% + \setlength{\rightmargin}{0mm}% + \setlength{\labelwidth}{\ListLabelWidth}% + \setlength{\labelsep}{0mm}% + \setlength{\itemindent}{0mm}% + \setlength{\listparindent}{0mm}% + \setlength{\topsep}{0mm}% + \setlength{\partopsep}{\baselineskip}% + \setlength{\itemsep}{0mm}% + \setlength{\parsep}{0mm}% + \def\makelabel##1{##1\hss}% +} +\let\smc@setallfirstlist\smc@setalllist +\def\smc@setallbiglist{% + \setlength{\leftmargin}{\EnumerateLabelWidth}% + \setlength{\rightmargin}{0mm}% + \setlength{\labelwidth}{\EnumerateLabelWidth}% + \setlength{\labelsep}{0mm}% + \setlength{\itemindent}{0mm}% + \setlength{\listparindent}{0mm}% + \setlength{\topsep}{0mm}% + \setlength{\partopsep}{\baselineskip}% + \setlength{\itemsep}{0mm}% + \setlength{\parsep}{0mm}% + \def\makelabel##1{##1\hss}% +} +\newenvironment{smc@prerequisitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{PrerequisItemColor}{$\blacktriangleright$}} + {\smc@setalllist}% + \else + \list{\textcolor{PrerequisItemColor}{$\blacktriangleright$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{prerequis} + {\textcolor{PrerequisItemColor}{$\blacktriangleright$}} +\newenvironment{smc@AEitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{AEItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{AEItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{AE}{\textcolor{AEItemColor}{$\bullet$}} +\newenvironment{smc@exappitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ExAppItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ExAppItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{exapp}{\textcolor{ExAppItemColor}{$\bullet$}} +\newenvironment{smc@defitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{DefItemColor}% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{DefItemColor}% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{def}{% + \textcolor{DefItemColor}{% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + }% +} +\newenvironment{smc@activiteitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ActiviteItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ActiviteItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{activite}{\textcolor{ActiviteItemColor}{$\bullet$}} +\newenvironment{smc@remitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{RemItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{RemItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{rem}{% + \textcolor{RemItemColor}{% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + }% +} +\newenvironment{smc@exempleitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ExempleItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ExempleItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{exemple}{\textcolor{ExempleItemColor}{$\bullet$}} +\newenvironment{smc@proofitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ProofItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ProofItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{proof}{\textcolor{ProofItemColor}{$\bullet$}} +\newenvironment{smc@exerciceitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ExerciceItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ExerciceItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{exercice}{\textcolor{ExerciceItemColor}{$\bullet$}} +\newenvironment{smc@acquisitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{AcquisItemColor}{\footnotesize$\blacktriangleright$}} + {\smc@setalllist}% + \else + \list{\textcolor{AcquisItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{acquis}{\textcolor{AcquisItemColor}{$\bullet$}} +\newenvironment{smc@commentaireitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{CommentaireItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{CommentaireItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{commentaire}{\textcolor{CommentaireItemColor}{$\bullet$}} +\newenvironment{smc@recreationitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{RecreationItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{RecreationItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{recreation}{\textcolor{RecreationItemColor}{$\bullet$}} +\newenvironment{smc@annexeitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{AnnexeItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{AnnexeItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\newenvironment{smc@lexiqueitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{LexiqueItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{LexiqueItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\newenvironment{smc@libreitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{LibreItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{LibreItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{libre}{% + \textcolor{LibreItemColor}{% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + }% +} +% \end{macrocode} +% Listes de type enumerate +% \begin{macrocode} +\newenvironment{bigenumerate} + {% + \let\smc@setallfirstlist\smc@setallbiglist + \begin{enumerate} + } + {\end{enumerate}} +\newcommand\DeclareEnumerate[3]{% + \newenvironment{smc@#1enumerate}{% + \gdef\smc@curr@itemcmd{#2}% + \gdef\smc@curr@itemcolor{#3}%( + \renewcommand\labelenumi{\textcolor{#3}{#2\theenumi)}}%( + \renewcommand\labelenumii{\textcolor{#3}{#2\theenumii)}}%( + \renewcommand\labelenumiii{\textcolor{#3}{#2\theenumiii)}}% + \advance\@enumdepth \@ne + \ifnum\@enumdepth>\thr@@ + \ClassError{sesamanuel}{Pas plus de 3 niveaux de liste} + {Consultez la documentation pour plus de renseignements.} + \else\ifnum\@enumdepth=\@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \expandafter + \list + \csname label\@enumctr\endcsname + {% + \usecounter{\@enumctr}% + \smc@setallfirstlist + }% + \else + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \expandafter + \list + \csname label\@enumctr\endcsname + {% + \usecounter{\@enumctr}% + \smc@setalllist + }% + \fi\fi + } + {\endlist} + \newenvironment{smc@corr#1enumerate}{% + \gdef\smc@curr@itemcmd{#2}% + \gdef\smc@curr@itemcolor{#3}%( + \setcounter{enumi}{0}% + \setcounter{enumii}{0}% + \setcounter{enumiii}{0}% + \renewcommand\labelenumi{\textcolor{#3}{#2\theenumi)}}%( + \renewcommand\labelenumii{\textcolor{#3}{#2\theenumii)}}%( + \renewcommand\labelenumiii{\textcolor{#3}{#2\theenumiii)}}% + \advance\@enumdepth \@ne + \ifnum\@enumdepth>\thr@@ + \ClassError{sesamanuel}{Pas plus de 3 niveaux de liste} + {Consultez la documentation pour plus de renseignements.} + \else + \def\smc@enum{% + \refstepcounter{enum\romannumeral\@enumdepth}% + \csname labelenum\romannumeral\@enumdepth\endcsname~ + }% + \def\item{% + \smc@enum + \def\item{\par\smc@enum}% + }% + \fi + \ignorespaces + } + {\par} +} +\DeclareEnumerate{prerequis}{}{PrerequisItemColor} +\DeclareEnumerate{exapp}{\bfseries}{ExAppItemColor} +\DeclareEnumerate{def}{\bfseries}{DefItemColor} +\DeclareEnumerate{AE}{\bfseries}{AEItemColor} +\DeclareEnumerate{activite}{\bfseries}{ActiviteItemColor} +\DeclareEnumerate{rem}{}{RemItemColor} +\DeclareEnumerate{exemple}{}{ExempleItemColor} +\DeclareEnumerate{proof}{}{ProofItemColor} +\DeclareEnumerate{exercice}{\bfseries}{ExerciceItemColor} +\DeclareEnumerate{acquis}{\bfseries}{AcquisItemColor} +\DeclareEnumerate{commentaire}{}{CommentaireItemColor} +\DeclareEnumerate{recreation}{\bfseries}{RecreationItemColor} +\DeclareEnumerate{annexe}{}{AnnexeItemColor} +\DeclareEnumerate{lexique}{}{LexiqueItemColor} +\DeclareEnumerate{libre}{}{LibreItemColor} +% \end{macrocode} +% Listes de type colitemize. On a besoin d'une longueur, de deux +% compteurs et de deux chaînes fixes pour les \environ{colitemize} et +% \environ{colenumerate} +% \begin{macrocode} +\def\ListHSep{2mm} +\newcount\smc@nbitem +\newcount\smc@nbline +\newcommand*\StringColitemize{colitemize} +\newcommand*\StringColenumerate{colenumerate} +\newcommand*\DeclareColItemize[3]{% + \newenvironment{#1}[1]{% + \par + \def\smc@nbcolumn{##1}% + \smc@nbitem \z@ + \edef\StringColCurrent{\StringColitemize}% + \toks@{}% + \smc@getbody + }% + {% + \expandafter\smc@splititem\the\toks@\item\@nil\item + \smc@nbline \numexpr \smc@nbitem+\smc@nbcolumn-1 + \divide\smc@nbline \smc@nbcolumn + \multido{\n=1+1}{\smc@nbline}{% + \multido{\ni=\n+\the\smc@nbline}{\smc@nbcolumn}{% + \unless\ifnum\ni>\smc@nbitem + \makebox[\ListLabelWidth]{\textcolor{#2}{#3}\hss}% + \begin{minipage}[t]{\dimexpr + (\linewidth-\ListHSep*(\smc@nbcolumn-1))% + /\smc@nbcolumn-\ListLabelWidth} + \strut\@nameuse{smc@item\ni}\strut + \end{minipage}% + \hspace{\ListHSep}% + \fi + }% + \ifnum\n=\smc@nbline + \endgraf + \else + \\ + \fi + }% + }% +} +\long\def\smc@getbody#1\end{% + \toks@\expandafter{\the\toks@#1}\smc@testend +} +\long\def\smc@testend#1{% + \def\smc@arg{#1}% + \ifx\smc@arg\StringColCurrent + \end{#1}% + \else + \toks@\expandafter{\the\toks@\end{#1}}% + \expandafter\smc@getbody + \fi +} +\long\def\smc@splititem#1\item{% + \smc@@splititem +} +\long\def\smc@@splititem#1\item{% + \def\smc@arg{#1}% + \ifx\smc@arg\@nnil + \else + \advance\smc@nbitem\@ne + \@namedef{smc@item\the\smc@nbitem}{#1}% + \expandafter\smc@@splititem + \fi +} +\DeclareColItemize{smc@prerequiscolitemize} + {PrerequisItemColor}{$\blacktriangleright$} +\DeclareColItemize{smc@AEcolitemize} + {AEItemColor}{$\bullet$} +\DeclareColItemize{smc@exappcolitemize} + {ExAppItemColor}{$\bullet$} +\DeclareColItemize{smc@defcolitemize} + {DefItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +\DeclareColItemize{smc@activitecolitemize} + {ActiviteItemColor}{$\bullet$} +\DeclareColItemize{smc@remcolitemize} + {RemItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +\DeclareColItemize{smc@exemplecolitemize} + {ExempleItemColor}{$\bullet$} +\DeclareColItemize{smc@proofcolitemize} + {ProofItemColor}{$\bullet$} +\DeclareColItemize{smc@exercicecolitemize} + {ExerciceItemColor}{$\bullet$} +\DeclareColItemize{smc@acquiscolitemize} + {AcquisItemColor}{$\bullet$} +\DeclareColItemize{smc@commentairecolitemize} + {CommentaireItemColor}{$\bullet$} +\DeclareColItemize{smc@recreationcolitemize} + {RecreationItemColor}{$\bullet$} +\DeclareColItemize{smc@annexecolitemize} + {AnnexeItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +\DeclareColItemize{smc@lexiquecolitemize} + {LexiqueItemColor}{$\bullet$} +\DeclareColItemize{smc@librecolitemize} + {LibreItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +% \end{macrocode} +% Listes de type colenumerate. +% \begin{macrocode} +\newcommand*\DeclareColEnumerate[3]{% + \newenvironment{#1}[1]{% + \par\leavevmode + \advance\@enumdepth \@ne + \ifnum\@enumdepth>\thr@@ + \ClassError{sesamanuel}{Pas plus de 3 niveaux de liste} + {Consultez la documentation pour plus de renseignements.} + \else + \ifcase\@enumdepth + \or %( + \def\@enumlabel{\textcolor{#3}{#2\ni)}}%( + \or + \def\@enumlabel{\textcolor{#3}{#2{\@alph\ni})}}%( + \or + \def\@enumlabel{\textcolor{#3}{#2{\@roman\ni)}}}% + \fi + \fi + \def\smc@nbcolumn{##1}% + \smc@nbitem \z@ + \edef\StringColCurrent{\StringColenumerate}% + \toks@{}% + \smc@getbody + } + {% + \expandafter\smc@splititem\the\toks@\item\@nil\item + \smc@nbline \numexpr \smc@nbitem+\smc@nbcolumn-1 + \divide\smc@nbline \smc@nbcolumn + \multido{\n=1+1}{\smc@nbline}{% + \multido{\ni=\n+\the\smc@nbline}{\smc@nbcolumn}{% + \unless\ifnum\ni>\smc@nbitem + \makebox[\ListLabelWidth]{\@enumlabel\hss}% + \begin{minipage}[t]{\dimexpr + (\linewidth-\ListHSep*(\smc@nbcolumn-1))% + /\smc@nbcolumn-\ListLabelWidth} + \strut\@nameuse{smc@item\ni}\strut + \end{minipage}% + \hspace{\ListHSep}% + \fi + }% + \ifnum\n=\smc@nbline + \endgraf + \else + \\ + \fi + }% + }% +} +\DeclareColEnumerate{smc@prerequiscolenumerate} + {}{PrerequisItemColor} +\DeclareColEnumerate{smc@exappcolenumerate} + {\bfseries}{ExAppItemColor} +\DeclareColEnumerate{smc@defcolenumerate} + {\bfseries}{DefItemColor} +\DeclareColEnumerate{smc@AEcolenumerate} + {\bfseries}{AEItemColor} +\DeclareColEnumerate{smc@activitecolenumerate} + {}{ActiviteItemColor} +\DeclareColEnumerate{smc@remcolenumerate} + {}{RemItemColor} +\DeclareColEnumerate{smc@exemplecolenumerate} + {}{ExempleItemColor} +\DeclareColEnumerate{smc@proofcolenumerate} + {}{ProofItemColor} +\DeclareColEnumerate{smc@exercicecolenumerate} + {\bfseries}{ExerciceItemColor} +\DeclareColEnumerate{smc@acquiscolenumerate} + {\bfseries}{AcquisItemColor} +\DeclareColEnumerate{smc@commentairecolenumerate} + {\bfseries}{CommentaireItemColor} +\DeclareColEnumerate{smc@recreationcolenumerate} + {\bfseries}{RecreationItemColor} +\DeclareColEnumerate{smc@annexecolenumerate} + {\bfseries}{AnnexeItemColor} +\DeclareColEnumerate{smc@lexiquecolenumerate} + {\bfseries}{RecreationItemColor} +\DeclareColEnumerate{smc@librecolenumerate} + {\bfseries}{LibreItemColor} +% \end{macrocode} +% \iffalse +% +%<*packageTIKZ> +% \fi +% \section{Package TIKZ} +% Cette extension propose un certains nombre d'outils spécifiques (la +% majorité concernant TikZ d'où son nom) pour composer l'ouvrage de +% seconde. +% \begin{macrocode} +\def\filedate{2015/03/03} +\def\fileversion{1.0} +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{sesamanuelTIKZ}[% + \filedate\space v\fileversion\space + compagnon de Sesamanuel (SM/JCC/SM)% +] +% \end{macrocode} +% On commence par charger quelques extensions annexes. La première +% pour les vecteurs, les autres pour TikZ. +% \begin{macrocode} +\RequirePackage{esvect} +\RequirePackage{tikz} +\RequirePackage{tkz-tab} +\RequirePackage{pgf} +\usetikzlibrary{arrows} +\usetikzlibrary{patterns} +% \end{macrocode} +% \begin{macro}{\chapeaumelon} +% La macro |\chapeaumelon| est utilisée pour noter les arcs de cercle. +% \begin{macrocode} +\newcommand{\chapeaumelon}[1]{\stackrel{\Large \frown}{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Logosesa} +% La macro |\Logosesa| sert à composer le logo en couleur de Sesamath. +% \begin{macrocode} +\newcommand{\Logosesa}{% + \textcolor{orange}{% + \boldmath + $ + \overline{\textcolor{gray}{S}} + \acute{\textcolor{gray}e} + \overline{ + \textcolor{gray}{sa} + \textcolor{black}{math} + } + $% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\TikZ} +% La macro |\TikZ| sert à composer le logo officiel de TikZ. +% \begin{macrocode} +\newcommand\TikZ{Ti\textit{k}Z} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\UniteGras} +% La macro |\UniteGras| met en gras ce qui suit indifféremment en mode +% mathématique ou texte (à condition que la fonte correspondant grasse +% existe bien). +% \begin{macrocode} +\newcommand\UniteGras[1]{{\bfseries \boldmath #1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{couleurs} +% On définit ici deux couleurs qui ont servi lors de l'impression de +% l'ouvrage car les couleurs B1 et H1 posaient des problèmes de +% passage dans la rotative. Ces couleurs peuvent être certainement +% ignorées par un utilisateur non professionnel de l'imprimerie. +% \begin{macrocode} +\definecolor{B1prime}{cmyk}{0.00, 1.00, 0.00, 0.50} +\definecolor{H1prime}{cmyk}{0.50, 0.00, 1.00, 0.00} +% \end{macrocode} +% \end{macro} +% \begin{macro}{macros TikZ} +% Le reste du code de cette extension sert pour les figures en +% TikZ. On ne détaillera pas outre mesure ces macros. +% \begin{macrocode} +\definecolor{CyanTikz40}{cmyk}{.4,0,0,0} +\definecolor{CyanTikz20}{cmyk}{.2,0,0,0} +\tikzstyle{general}=[line width=0.3mm, >=stealth, x=1cm, y=1cm, + line cap=round, line join=round] +\tikzstyle{quadrillage}=[line width=0.3mm, color=CyanTikz40] +\tikzstyle{quadrillageNIV2}=[line width=0.3mm, color=CyanTikz20] +\tikzstyle{quadrillage55}=[line width=0.3mm, color=CyanTikz40, + xstep=0.5, ystep=0.5] +\tikzstyle{cote}=[line width=0.3mm, <->] +\tikzstyle{epais}=[line width=0.5mm, line cap=butt] +\tikzstyle{tres epais}=[line width=0.8mm, line cap=butt] +\tikzstyle{axe}=[line width=0.3mm, ->, color=Noir, line cap=rect] +\newcommand{\quadrillageSeyes}[2]{% + \draw[line width=0.3mm, color=A1!10, ystep=0.2, xstep=0.8] + #1 grid #2; + \draw[line width=0.3mm, color=A1!30, xstep=0.8, ystep=0.8] + #1 grid #2; +} +\newcommand{\axeX}[4][0]{% + \draw[axe] (#2,#1)--(#3,#1); + \foreach \x in {#4} {% + \draw (\x,#1) node {\small $+$}; + \draw (\x,#1) node[below] {\small $\x$}; + }% +} +\newcommand{\axeY}[4][0]{% + \draw[axe] (#1,#2)--(#1,#3); + \foreach \y in {#4} {% + \draw (#1, \y) node {\small $+$}; + \draw (#1, \y) node[left] {\small $\y$}; + }% +} +\newcommand{\axeOI}[3][0]{% + \draw[axe] (#2,#1)--(#3,#1); + \draw (1,#1) node {\small $+$}; + \draw (1,#1) node[below] {\small $I$}; +} +\newcommand{\axeOJ}[3][0]{% + \draw[axe] (#1,#2)--(#1,#3); + \draw (#1, 1) node {\small $+$}; + \draw (#1, 1) node[left] {\small $J$}; +} +\newcommand{\axeXgraduation}[2][0]{% + \foreach \x in {#2} {% + \draw (\x,#1) node {\small $+$}; + }% +} +\newcommand{\axeYgraduation}[2][0]{% + \foreach \y in {#2} {% + \draw (#1, \y) node {\small $+$}; + }% +} +\newcommand{\origine}{\draw (0,0) node[below left] {\small $0$};} +\newcommand{\origineO}{\draw (0,0) node[below left] {$O$};} +\newcommand{\point}[4]{\draw (#1,#2) node[#4] {$#3$};} +\newcommand{\pointGraphique}[4]{% + \draw (#1,#2) node[#4] {$#3$}; + \draw (#1,#2) node {$+$}; +} +\newcommand{\pointFigure}[4]{% + \draw (#1,#2) node[#4] {$#3$}; + \draw (#1,#2) node {$\times$}; +} +\newcommand{\pointC}[3]{\draw (#1) node[#3] {$#2$};} +\newcommand{\pointCGraphique}[3]{% + \draw (#1) node[#3] {$#2$}; + \draw (#1) node {$+$}; +} +\newcommand{\pointCFigure}[3]{% + \draw (#1) node[#3] {$#2$}; + \draw (#1) node {$\times$}; +} +% \end{macrocode} +% \end{macro} +% \iffalse +% +% \fi +% \setcounter{IndexColumns}{2}\PrintIndex +% \newpage +% \PrintChanges +% \endinput diff --git a/Master/texmf-dist/source/latex/sesamanuel/sesamanuel.ins b/Master/texmf-dist/source/latex/sesamanuel/sesamanuel.ins new file mode 100644 index 00000000000..4e8ef52a0ff --- /dev/null +++ b/Master/texmf-dist/source/latex/sesamanuel/sesamanuel.ins @@ -0,0 +1,41 @@ +%% +%% This file generates files required to use the sesamanuel class. +%% At your command prompt write +%% +%% tex sesamanuel.ins +%% +%% +%% Copyright 2014-2015 Sesamath Society written by J.-C. Charpentier, S. Mengin +%% +%% Copyright (C) 2014-2015 Sesamath Society written by Jean-C\^ome Charpentier, S\'ebastien +%% Mengin. +%% +%% This file is distributed under the terms of the LaTeX Project Public +%% License from CTAN archives in directory macros/latex/base/lppl.txt. +%% Either version 1.3 or, at your option, any later version. +%% +\input docstrip +\preamble +\endpreamble + +\usedir{.} +\keepsilent +\askforoverwritefalse +% +% generate base class & package +% +\generate{ + \file{sesamanuel.cls}{\from{sesamanuel.dtx}{class}} + \file{sesamanuel.sty}{\from{sesamanuel.dtx}{package}} + \file{sesamanuelTIKZ.sty}{\from{sesamanuel.dtx}{packageTIKZ}} +} + +\Msg{*} +\Msg{* You probably need to move created `.cls' and `.sty'} +\Msg{* files into a directory searched by TeX.} +\Msg{*} +\Msg{* And don't forget to refresh your filename database} +\Msg{* if your TeX distribution uses such a database.} +\Msg{*} + +\endbatchfile diff --git a/Master/texmf-dist/tex/latex/sesamanuel/sesamanuel.cls b/Master/texmf-dist/tex/latex/sesamanuel/sesamanuel.cls new file mode 100644 index 00000000000..31b1c4d3e15 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sesamanuel/sesamanuel.cls @@ -0,0 +1,6204 @@ +%% +%% This is file `sesamanuel.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sesamanuel.dtx (with options: `class') +%% +%% sesamanuel.dtx +%% Copyright 2014-2015 Sesamath Society written by J.-C. Charpentier, S. Mengin +%% +%% Copyright (C) 2014-2015 Sesamath Society written by Jean-C\^ome Charpentier, S\'ebastien +%% Mengin. +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\def\filedate{2015/03/03} +\let\smcfiledate\filedate +\def\fileversion{0.6} +\let\smcfileversion\fileversion +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesClass{sesamanuel}[% + \filedate\space v\fileversion\space + Classe pour les cahiers Sesamath (SM/JCC/SM)% +] +\LoadClass{book} +\def\smc@enc@opt#1{\DeclareOption{#1}{\def\smc@encoding{#1}}} +\smc@enc@opt{ascii} +\smc@enc@opt{latin1} +\smc@enc@opt{latin2} +\smc@enc@opt{latin3} +\smc@enc@opt{latin4} +\smc@enc@opt{latin5} +\smc@enc@opt{latin9} +\smc@enc@opt{latin10} +\smc@enc@opt{decmulti} +\smc@enc@opt{cp850} +\smc@enc@opt{cp852} +\smc@enc@opt{cp858} +\smc@enc@opt{cp437} +\smc@enc@opt{cp437de} +\smc@enc@opt{cp865} +\smc@enc@opt{applemac} +\smc@enc@opt{macce} +\smc@enc@opt{next} +\smc@enc@opt{cp1250} +\smc@enc@opt{cp1252} +\smc@enc@opt{cp1257} +\smc@enc@opt{ansinew} +\smc@enc@opt{utf8} +\newif\ifsmc@crop +\smc@croptrue +\DeclareOption{crop}{\smc@croptrue} +\DeclareOption{nocrop}{\smc@cropfalse} +\newif\ifsmc@page +\smc@pagetrue +\DeclareOption{page}{\smc@pagetrue} +\DeclareOption{nopage}{\smc@pagefalse} +\newcommand*\smc@string@utfviii{utf8} +\ExecuteOptions{utf8} +\ProcessOptions +\newif\ifxetex +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname XeTeXrevision\endcsname\relax + \xetexfalse +\else + \xetextrue +\fi +\newif\ifpdftex +\newif\ifpdfdvi +\newif\ifluatex +\ifx\luatexversion\undefined + \luatexfalse + \ifx\pdfoutput\undefined + \pdftexfalse + \pdfdvifalse + \else + \pdftextrue + \ifnum\pdfoutput=\z@ + \pdfdvitrue + \else + \pdfdvifalse + \fi + \fi +\else + \luatextrue +\fi +\ifpdftex + \unless\ifpdfdvi + \ClassError{sesamanuel}{Vous ne pouvez pas compiler en mode pdflatex} + {Compilez en mode latex.}% + \fi +\fi +\ifluatex + \ClassError{sesamanuel}{Vous ne pouvez pas compiler en mode lualatex} + {Compilez en mode latex.}% +\fi +\RequirePackage{etex} +\ifxetex + \RequirePackage{fontspec} + \RequirePackage{xunicode} + \defaultfontfeatures{Ligatures=TeX} + \unless\ifx\smc@encoding\smc@string@utfviii + \ClassError{sesamanuel}{Vous ne pouvez pas utiliser un codage autre + que utf8 avec xelatex}{Changez les codages de tous vos fichiers + pour les transformer en utf8.}% + \fi +\else + \RequirePackage[T1]{fontenc} + \RequirePackage[\smc@encoding]{inputenc} +\fi +\RequirePackage[scaled=0.87]{helvet} +\RequirePackage{mathpazo} +\renewcommand{\ttdefault}{lmtt} +\RequirePackage{mathrsfs} +\RequirePackage{pifont} +\RequirePackage[official]{eurosym} +%%%\newcommand*\scriptfamily{\fontfamily{fco}\selectfont} +\newcommand*\scriptfamily{\fontfamily{llcmss}\selectfont} +\newcommand*\smc@paperheight{27cm} +\newcommand*\smc@paperwidth{19.5cm} +\newcommand*\smc@marginleft{1.33cm} +\newcommand*\smc@marginright{1.33cm} +\newcommand*\ExtraMarginRight{1.8cm} +\newcommand*\smc@margintop{2.5cm} +\newcommand*\smc@headheight{14.4pt} +\newcommand*\smc@headsep{1.4cm} +\newcommand*\smc@marginbottom{2cm} +\newcommand*\smc@footskip{1.2cm} +\ifsmc@crop + \newcommand*\smc@bleed{5mm} + \RequirePackage[driver=none, + paperheight=\smc@paperheight, + paperwidth=\smc@paperwidth, + top=\smc@margintop, + headheight=\smc@headheight, + headsep=\smc@headsep, + bottom=\smc@marginbottom, + footskip=\smc@footskip, + left=\smc@marginleft, + right=\smc@marginright, + nomarginpar]{geometry} + \RequirePackage[cam,a4,center]{crop} +\else + \newcommand*\smc@bleed{0mm} + \RequirePackage[driver=none, + paperheight=\smc@paperheight, + paperwidth=\smc@paperwidth, + top=\smc@margintop, + headheight=\smc@headheight, + headsep=\smc@headsep, + bottom=\smc@marginbottom, + footskip=\smc@footskip, + left=\smc@marginleft, + right=\smc@marginright, + nomarginpar]{geometry} + \RequirePackage[off,a4,center]{crop} +\fi +\RequirePackage{ifmtarg} +\RequirePackage{mathtools} +\RequirePackage{amssymb} +\RequirePackage{longtable, tabularx} +\RequirePackage{multirow} +\RequirePackage[table]{xcolor} +\RequirePackage{pst-all, pstricks-add} +\RequirePackage{fancyhdr} +\RequirePackage{fancyvrb} +\RequirePackage{multicol} +\RequirePackage[french]{babel} +\RequirePackage[autolanguage]{numprint} +\newbox\smc@boxa +\newbox\smc@boxb +\newdimen\smc@dima +\newdimen\smc@dimb +\setlength{\parindent}{0pt} +\newcommand*\cleardoubleoddpage{% + \clearpage + \pagestyle{empty} + \cleardoublepage +} +\newcommand*\clearevendoublepage{% + \clearpage + \ifodd\c@page + \hbox{}\newpage + \fi +} +\newcommand*\cleardoubleevenpage{% + \clearpage + \pagestyle{empty} + \clearevendoublepage +} +\renewcommand\normalsize{% + \@setfontsize\normalsize{9.5}\@xivpt + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI} +\normalsize +\renewcommand\small{% + \@setfontsize\small{8.5}{12}% + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus2\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \belowdisplayskip \abovedisplayskip +} +\renewcommand\footnotesize{% + \@setfontsize\footnotesize{7.5}{11}% + \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus\p@ + \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ + \belowdisplayskip \abovedisplayskip +} +\renewcommand\scriptsize{\@setfontsize\scriptsize{6.5}{9.5}} +\renewcommand\tiny{\@setfontsize\tiny\@vpt\@viipt} +\renewcommand\large{\@setfontsize\large\@xiipt\@xviipt} +\renewcommand\Large{\@setfontsize\Large\@xivpt{22}} +\renewcommand\LARGE{\@setfontsize\LARGE\@xviipt{25}} +\renewcommand\huge{\@setfontsize\huge\@xxpt{30}} +\renewcommand\Huge{\@setfontsize\Huge\@xxvpt{36}} +\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@} +\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@} +\newenvironment{smc@noitemize}{% + \ClassError{sesamanuel}{Il est interdit d'utiliser itemize ici} + {Consultez la documentation pour plus de renseignements.}% + \let\item\relax +}{} +\let\itemize\smc@noitemize +\let\enditemize\endsmc@noitemize +\newcommand*\DeclareCorrItemize[2]{% + \newenvironment{smc@corr#1itemize}{% + \def\item{\par#2~}% + \ignorespaces + } + {\par} +} +\def\smc@setalllist{% + \setlength{\leftmargin}{\ListLabelWidth}% + \setlength{\rightmargin}{0mm}% + \setlength{\labelwidth}{\ListLabelWidth}% + \setlength{\labelsep}{0mm}% + \setlength{\itemindent}{0mm}% + \setlength{\listparindent}{0mm}% + \setlength{\topsep}{0mm}% + \setlength{\partopsep}{\baselineskip}% + \setlength{\itemsep}{0mm}% + \setlength{\parsep}{0mm}% + \def\makelabel##1{##1\hss}% +} +\let\smc@setallfirstlist\smc@setalllist +\def\smc@setallbiglist{% + \setlength{\leftmargin}{\EnumerateLabelWidth}% + \setlength{\rightmargin}{0mm}% + \setlength{\labelwidth}{\EnumerateLabelWidth}% + \setlength{\labelsep}{0mm}% + \setlength{\itemindent}{0mm}% + \setlength{\listparindent}{0mm}% + \setlength{\topsep}{0mm}% + \setlength{\partopsep}{\baselineskip}% + \setlength{\itemsep}{0mm}% + \setlength{\parsep}{0mm}% + \def\makelabel##1{##1\hss}% +} +\newenvironment{smc@prerequisitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{PrerequisItemColor}{$\blacktriangleright$}} + {\smc@setalllist}% + \else + \list{\textcolor{PrerequisItemColor}{$\blacktriangleright$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{prerequis} + {\textcolor{PrerequisItemColor}{$\blacktriangleright$}} +\newenvironment{smc@AEitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{AEItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{AEItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{AE}{\textcolor{AEItemColor}{$\bullet$}} +\newenvironment{smc@exappitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ExAppItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ExAppItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{exapp}{\textcolor{ExAppItemColor}{$\bullet$}} +\newenvironment{smc@defitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{DefItemColor}% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{DefItemColor}% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{def}{% + \textcolor{DefItemColor}{% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + }% +} +\newenvironment{smc@activiteitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ActiviteItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ActiviteItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{activite}{\textcolor{ActiviteItemColor}{$\bullet$}} +\newenvironment{smc@remitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{RemItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{RemItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{rem}{% + \textcolor{RemItemColor}{% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + }% +} +\newenvironment{smc@exempleitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ExempleItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ExempleItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{exemple}{\textcolor{ExempleItemColor}{$\bullet$}} +\newenvironment{smc@proofitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ProofItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ProofItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{proof}{\textcolor{ProofItemColor}{$\bullet$}} +\newenvironment{smc@exerciceitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ExerciceItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ExerciceItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{exercice}{\textcolor{ExerciceItemColor}{$\bullet$}} +\newenvironment{smc@acquisitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{AcquisItemColor}{\footnotesize$\blacktriangleright$}} + {\smc@setalllist}% + \else + \list{\textcolor{AcquisItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{acquis}{\textcolor{AcquisItemColor}{$\bullet$}} +\newenvironment{smc@commentaireitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{CommentaireItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{CommentaireItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{commentaire}{\textcolor{CommentaireItemColor}{$\bullet$}} +\newenvironment{smc@recreationitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{RecreationItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{RecreationItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{recreation}{\textcolor{RecreationItemColor}{$\bullet$}} +\newenvironment{smc@annexeitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{AnnexeItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{AnnexeItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\newenvironment{smc@lexiqueitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{LexiqueItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{LexiqueItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\newenvironment{smc@libreitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{LibreItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{LibreItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{libre}{\textcolor{LibreItemColor}{$\bullet$}} +\newenvironment{smc@noenumerate}{% + \ClassError{sesamanuel}{Il est interdit d'utiliser enumerate ici} + {Consultez la documentation pour plus de renseignements.}% + \let\item\relax +}{} +\let\enumerate\smc@noenumerate +\let\endenumerate\endsmc@noenumerate +\newenvironment{bigenumerate} + {% + \let\smc@setallfirstlist\smc@setallbiglist + \begin{enumerate} + } + {\end{enumerate}} +\newcommand\DeclareEnumerate[3]{% + \newenvironment{smc@#1enumerate}{% + \gdef\smc@curr@itemcmd{#2}% + \gdef\smc@curr@itemcolor{#3}%( + \renewcommand\labelenumi{\textcolor{#3}{#2\theenumi)}}%( + \renewcommand\labelenumii{\textcolor{#3}{#2\theenumii)}}%( + \renewcommand\labelenumiii{\textcolor{#3}{#2\theenumiii)}}% + \advance\@enumdepth \@ne + \ifnum\@enumdepth>\thr@@ + \ClassError{sesamanuel}{Pas plus de 3 niveaux de liste} + {Consultez la documentation pour plus de renseignements.} + \else\ifnum\@enumdepth=\@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \expandafter + \list + \csname label\@enumctr\endcsname + {% + \usecounter{\@enumctr}% + \smc@setallfirstlist + }% + \else + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \expandafter + \list + \csname label\@enumctr\endcsname + {% + \usecounter{\@enumctr}% + \smc@setalllist + }% + \fi\fi + } + {\endlist} + \newenvironment{smc@corr#1enumerate}{% + \gdef\smc@curr@itemcmd{#2}% + \gdef\smc@curr@itemcolor{#3}%( + \setcounter{enumi}{0}% + \setcounter{enumii}{0}% + \setcounter{enumiii}{0}% + \renewcommand\labelenumi{\textcolor{#3}{#2\theenumi)}}%( + \renewcommand\labelenumii{\textcolor{#3}{#2\theenumii)}}%( + \renewcommand\labelenumiii{\textcolor{#3}{#2\theenumiii)}}% + \advance\@enumdepth \@ne + \ifnum\@enumdepth>\thr@@ + \ClassError{sesamanuel}{Pas plus de 3 niveaux de liste} + {Consultez la documentation pour plus de renseignements.} + \else + \def\smc@enum{% + \refstepcounter{enum\romannumeral\@enumdepth}% + \csname labelenum\romannumeral\@enumdepth\endcsname~ + }% + \def\item{% + \smc@enum + \def\item{\par\smc@enum}% + }% + \fi + \ignorespaces + } + {\par} +} +\DeclareEnumerate{prerequis}{}{PrerequisItemColor} +\DeclareEnumerate{exapp}{\bfseries}{ExAppItemColor} +\DeclareEnumerate{def}{\bfseries}{DefItemColor} +\DeclareEnumerate{AE}{\bfseries}{AEItemColor} +\DeclareEnumerate{activite}{\bfseries}{ActiviteItemColor} +\DeclareEnumerate{rem}{}{RemItemColor} +\DeclareEnumerate{exemple}{}{ExempleItemColor} +\DeclareEnumerate{proof}{}{ProofItemColor} +\DeclareEnumerate{exercice}{\bfseries}{ExerciceItemColor} +\DeclareEnumerate{acquis}{\bfseries}{AcquisItemColor} +\DeclareEnumerate{commentaire}{}{CommentaireItemColor} +\DeclareEnumerate{recreation}{\bfseries}{RecreationItemColor} +\DeclareEnumerate{annexe}{}{AnnexeItemColor} +\DeclareEnumerate{lexique}{}{LexiqueItemColor} +\DeclareEnumerate{libre}{}{LibreItemColor} +\newenvironment{smc@nocolitemize}{% + \ClassError{sesamanuel}{Il est interdit d'utiliser colitemize ici} + {Consultez la documentation pour plus de renseignements.}% + \let\item\relax +}{} +\newcount\smc@nbitem +\newcount\smc@nbline +\newcommand*\DeclareColItemize[3]{% + \newenvironment{#1}[1]{% + \par + \def\smc@nbcolumn{##1}% + \smc@nbitem \z@ + \edef\StringColCurrent{\StringColitemize}% + \toks@{}% + \smc@getbody + }% + {% + \expandafter\smc@splititem\the\toks@\item\@nil\item + \smc@nbline \numexpr \smc@nbitem+\smc@nbcolumn-1 + \divide\smc@nbline \smc@nbcolumn + \multido{\n=1+1}{\smc@nbline}{% + \multido{\ni=\n+\the\smc@nbline}{\smc@nbcolumn}{% + \unless\ifnum\ni>\smc@nbitem + \makebox[\ListLabelWidth]{\textcolor{#2}{#3}\hss}% + \begin{minipage}[t]{\dimexpr + (\linewidth-\ListHSep*(\smc@nbcolumn-1))% + /\smc@nbcolumn-\ListLabelWidth} + \strut\@nameuse{smc@item\ni}\strut + \end{minipage}% + \hspace{\ListHSep}% + \fi + }% + \ifnum\n=\smc@nbline + \endgraf + \else + \\ + \fi + }% + }% +} +\long\def\smc@getbody#1\end{% + \toks@\expandafter{\the\toks@#1}\smc@testend +} +\long\def\smc@testend#1{% + \def\smc@arg{#1}% + \ifx\smc@arg\StringColCurrent + \end{#1}% + \else + \toks@\expandafter{\the\toks@\end{#1}}% + \expandafter\smc@getbody + \fi +} +\long\def\smc@splititem#1\item{% + \smc@@splititem +} +\long\def\smc@@splititem#1\item{% + \def\smc@arg{#1}% + \ifx\smc@arg\@nnil + \else + \advance\smc@nbitem\@ne + \@namedef{smc@item\the\smc@nbitem}{#1}% + \expandafter\smc@@splititem + \fi +} +\DeclareColItemize{smc@prerequiscolitemize} + {PrerequisItemColor}{$\blacktriangleright$} +\DeclareColItemize{smc@AEcolitemize} + {AEItemColor}{$\bullet$} +\DeclareColItemize{smc@exappcolitemize} + {ExAppItemColor}{$\bullet$} +\DeclareColItemize{smc@defcolitemize} + {DefItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +\DeclareColItemize{smc@activitecolitemize} + {ActiviteItemColor}{$\bullet$} +\DeclareColItemize{smc@remcolitemize} + {RemItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +\DeclareColItemize{smc@exemplecolitemize} + {ExempleItemColor}{$\bullet$} +\DeclareColItemize{smc@proofcolitemize} + {ProofItemColor}{$\bullet$} +\DeclareColItemize{smc@exercicecolitemize} + {ExerciceItemColor}{$\bullet$} +\DeclareColItemize{smc@acquiscolitemize} + {AcquisItemColor}{$\bullet$} +\DeclareColItemize{smc@commentairecolitemize} + {CommentaireItemColor}{$\bullet$} +\DeclareColItemize{smc@recreationcolitemize} + {RecreationItemColor}{$\bullet$} +\DeclareColItemize{smc@annexecolitemize} + {AnnexeItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +\DeclareColItemize{smc@lexiquecolitemize} + {LexiqueItemColor}{$\bullet$} +\DeclareColItemize{smc@librecolitemize} + {LibreItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +\newcommand*\DeclareColEnumerate[3]{% + \newenvironment{#1}[1]{% + \par\leavevmode + \advance\@enumdepth \@ne + \ifnum\@enumdepth>\thr@@ + \ClassError{sesamanuel}{Pas plus de 3 niveaux de liste} + {Consultez la documentation pour plus de renseignements.} + \else + \ifcase\@enumdepth + \or %( + \def\@enumlabel{\textcolor{#3}{#2\ni)}}%( + \or + \def\@enumlabel{\textcolor{#3}{#2{\@alph\ni})}}%( + \or + \def\@enumlabel{\textcolor{#3}{#2{\@roman\ni)}}}% + \fi + \fi + \def\smc@nbcolumn{##1}% + \smc@nbitem \z@ + \edef\StringColCurrent{\StringColenumerate}% + \toks@{}% + \smc@getbody + } + {% + \expandafter\smc@splititem\the\toks@\item\@nil\item + \smc@nbline \numexpr \smc@nbitem+\smc@nbcolumn-1 + \divide\smc@nbline \smc@nbcolumn + \multido{\n=1+1}{\smc@nbline}{% + \multido{\ni=\n+\the\smc@nbline}{\smc@nbcolumn}{% + \unless\ifnum\ni>\smc@nbitem + \makebox[\ListLabelWidth]{\@enumlabel\hss}% + \begin{minipage}[t]{\dimexpr + (\linewidth-\ListHSep*(\smc@nbcolumn-1))% + /\smc@nbcolumn-\ListLabelWidth} + \strut\@nameuse{smc@item\ni}\strut + \end{minipage}% + \hspace{\ListHSep}% + \fi + }% + \ifnum\n=\smc@nbline + \endgraf + \else + \\ + \fi + }% + }% +} +\DeclareColEnumerate{smc@prerequiscolenumerate} + {}{PrerequisItemColor} +\DeclareColEnumerate{smc@exappcolenumerate} + {\bfseries}{ExAppItemColor} +\DeclareColEnumerate{smc@defcolenumerate} + {\bfseries}{DefItemColor} +\DeclareColEnumerate{smc@AEcolenumerate} + {\bfseries}{AEItemColor} +\DeclareColEnumerate{smc@activitecolenumerate} + {}{ActiviteItemColor} +\DeclareColEnumerate{smc@remcolenumerate} + {}{RemItemColor} +\DeclareColEnumerate{smc@exemplecolenumerate} + {}{ExempleItemColor} +\DeclareColEnumerate{smc@proofcolenumerate} + {}{ProofItemColor} +\DeclareColEnumerate{smc@exercicecolenumerate} + {\bfseries}{ExerciceItemColor} +\DeclareColEnumerate{smc@acquiscolenumerate} + {\bfseries}{AcquisItemColor} +\DeclareColEnumerate{smc@commentairecolenumerate} + {\bfseries}{CommentaireItemColor} +\DeclareColEnumerate{smc@recreationcolenumerate} + {\bfseries}{RecreationItemColor} +\DeclareColEnumerate{smc@annexecolenumerate} + {\bfseries}{AnnexeItemColor} +\DeclareColEnumerate{smc@lexiquecolenumerate} + {\bfseries}{RecreationItemColor} +\DeclareColEnumerate{smc@librecolenumerate} + {\bfseries}{LibreItemColor} +\newenvironment{changemargin}[2]{% + \begin{list}{}{% + \setlength{\topsep}{0pt}% + \setlength{\leftmargin}{0pt}% + \setlength{\rightmargin}{0pt}% + \setlength{\listparindent}{0pt}% + \setlength{\itemindent}{0pt}% + \setlength{\parsep}{\parskip}% + \addtolength{\leftmargin}{#1}% + \addtolength{\rightmargin}{#2}% + }% + \item\relax +} +{\strut \end{list}} +\newcommand*{\cadre}[1][]{% + \ifx\relax#1\relax + \colorlet{CurrCadreLineColor}{CadreLineColor}% + \else + \colorlet{CurrCadreLineColor}{#1}% + \fi + \@cadre +} +\newcommand\@cadre[1][]{% + \ifx\relax#1\relax + \colorlet{CurrCadreBkgColor}{CadreBkgColor}% + \else + \colorlet{CurrCadreBkgColor}{#1}% + \fi + \def\smc@cadre@color{#1}% + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr \linewidth-\CadreSep*2-\CadreLineWidth*2}% +} +\def\endcadre +{% + \endminipage + \end{lrbox}% + \par\addvspace{\BeforeCadreVSpace} + \begin{pspicture}(0,\dimexpr\ht\smc@boxa+\CadreSep+\CadreLineWidth) + (\linewidth,-\dimexpr\dp\smc@boxa+\CadreSep+\CadreLineWidth) + \pnode(0,\dimexpr\ht\smc@boxa+\CadreSep+\CadreLineWidth){A} + \pnode(\linewidth,-\dimexpr\dp\smc@boxa+\CadreSep+\CadreLineWidth){C} + \pnode(A|C){B} + \pnode(C|A){D} + \pnode([nodesep=-\SquareWidth]C){C1} + \pnode([offset=\SquareWidth]C){C2} + \pspolygon[linecolor=CurrCadreLineColor, + linewidth=\CadreLineWidth, fillstyle=solid, + fillcolor=CurrCadreBkgColor] + (A)(B)(C1)(C2)(D) + \rput[Bl](\dimexpr\CadreSep+\CadreLineWidth,0) + {\usebox{\smc@boxa}} + \end{pspicture} + \par\addvspace{\AfterCadreVSpace} +} +\newcommand*\smc@cadre[2][0,0,0,0]{% + \def\smc@framecorner{#1}% + \def\smc@framebkgcolor{#2}% + \smc@@cadre +} +\newcommand*\smc@@cadre[1][]{% + \def\smc@framelinecolor{#1}% + \ifx\smc@framelinecolor\empty + \edef\smc@framehoffset{\the\dimexpr\FrameSep*2}% + \edef\smc@framewidth + {\the\dimexpr\linewidth-\smc@framehoffset}% + \else + \edef\smc@framehoffset{\the\dimexpr\FrameSep*2+\FrameLineWidth*2}% + \edef\smc@framewidth + {\the\dimexpr\linewidth-\smc@framehoffset}% + \fi + \setbox0=\hbox\bgroup + \minipage{\smc@framewidth}% + \ignorespaces +} +\def\endsmc@cadre{% + \endminipage + \egroup + \ifx\smc@framelinecolor\empty + \edef\smc@ymin{\the\dimexpr-\dp0-\FrameSep}% + \edef\smc@ymax{\the\dimexpr\ht0+\FrameSep}% + \psset{linewidth=0pt, linestyle=none, + fillstyle=solid, fillcolor=\smc@framebkgcolor} + \else + \edef\smc@ymin{\the\dimexpr -\dp0-\FrameSep-\FrameLineWidth}% + \edef\smc@ymax{\the\dimexpr\ht0+\FrameSep+\FrameLineWidth}% + \psset{linewidth=\FrameLineWidth, linecolor=\smc@framelinecolor, + fillstyle=solid, fillcolor=\smc@framebkgcolor} + \def\FrameLineWidth{0pt}% + \fi + \smc@parse@corner{\smc@framecorner}% + \begin{pspicture}(0,\smc@ymin)(\linewidth,\smc@ymax) + \pscustom{% + \psarc(\dimexpr \FrameArc/10*\smc@corner@dl, + \dimexpr \smc@ymin+\FrameArc/10*\smc@corner@dl) + {\dimexpr \FrameArc/10*\smc@corner@dl}{180}{270} + \psline(\dimexpr \FrameArc/10*\smc@corner@dl, + \smc@ymin) + (\dimexpr \linewidth-\FrameArc/10*\smc@corner@dr, + \smc@ymin) + \psarc(\dimexpr \linewidth-\FrameArc/10*\smc@corner@dr, + \dimexpr \smc@ymin+\FrameArc/10*\smc@corner@dr) + {\dimexpr \FrameArc/10*\smc@corner@dr}{270}{360} + \psline(\linewidth, + \dimexpr \smc@ymin+\FrameArc/10*\smc@corner@dr) + (\linewidth, + \dimexpr \smc@ymax-\FrameArc/10*\smc@corner@ur) + \psarc(\dimexpr \linewidth-\FrameArc/10*\smc@corner@ur, + \dimexpr \smc@ymax-\FrameArc/10*\smc@corner@ur) + {\dimexpr \FrameArc/10*\smc@corner@ur}{0}{90} + \psline(\dimexpr \linewidth-\FrameArc/10*\smc@corner@ur, + \smc@ymax) + (\dimexpr \FrameArc/10*\smc@corner@ul, + \smc@ymax) + \psarc(\dimexpr \FrameArc/10*\smc@corner@ul, + \dimexpr \smc@ymax-\FrameArc/10*\smc@corner@ul) + {\dimexpr \FrameArc/10*\smc@corner@dr}{90}{180} + \psline(0, + \dimexpr \smc@ymax-\FrameArc/10*\smc@corner@ul) + (0, + \dimexpr \smc@ymin+\FrameArc/10*\smc@corner@dl) + } + \rput[Bl](\dimexpr \FrameSep+\FrameLineWidth,0){\box0} + \end{pspicture}% +} +\newcommand*\smc@parse@corner[1]{% + \expandafter\smc@@parse@corner#1,,,,\@nil +} +\def\smc@@parse@corner#1,#2,#3,#4,#5\@nil{% + \def\smc@corner@dl{#1}% + \ifx\smc@corner@dl\empty + \def\smc@corner@dl{0}% + \fi + \def\smc@corner@dr{#2}% + \ifx\smc@corner@dr\empty + \def\smc@corner@dr{0}% + \fi + \def\smc@corner@ur{#3}% + \ifx\smc@corner@ur\empty + \def\smc@corner@ur{0}% + \fi + \def\smc@corner@ul{#4}% + \ifx\smc@corner@ul\empty + \def\smc@corner@ul{0}% + \fi +} +\newcommand{\tableau}[1][c]{% + \arrayrulecolor{FiletTableauColor}% + \renewcommand\tabularxcolumn[1]{>{\centering\arraybackslash}m{##1}}% + \ifcsname#1tableau\endcsname + \expandafter\let\expandafter\smc@next\csname#1tableau\endcsname + \expandafter\let\expandafter\endtableau\csname end#1tableau\endcsname + \else + \ClassError{sesamanuel} + {Le type de tableau #1 n'existe pas} + {Les types possibles sont 't', 'c', 'l', 'cl', 'T', 'C', + 'L', 'CL' et 'pr'.}% + \let\smc@next\ctableau + \let\endtableau\endctableau + \fi + \par\addvspace{\BeforeTableVSpace} + \smc@next +} +\newenvironment{ttableau}[2] +{\tabularx{#1}{|*{#2}{X|}}} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{Ttableau}[3] +{\tabularx{#1}{|#3|*{\numexpr#2-1}{X|}}} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{ctableau}[2] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}X| + *{\numexpr#2-1}{X|}}% +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{Ctableau}[3] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}#3| + *{\numexpr#2-1}{X|}}% +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{ltableau}[2] +{% + \tabularx{#1}{|*{#2}{X|}} + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{Ltableau}[3] +{% + \tabularx{#1}{|#3|*{\numexpr#2-1}{X|}} + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{cltableau}[2] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}X| + *{\numexpr#2-1}{X|}}% + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{CLtableau}[3] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}#3| + *{\numexpr#2-1}{X|}}% + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\let\lctableau\cltableau +\let\endlctableau\endcltableau +\let\LCtableau\CLtableau +\let\endLCtableau\endCLtableau +\newenvironment{prtableau}[1] +{% + \def\propriete{% + \refstepcounter{propriete}% + \psframebox*[fillcolor=TablePropertyTitleBkgColor]{% + \ProprieteFont + \textcolor{TablePropertyTitleTextColor}{ \MakeUppercase{\StringPropriete}} + \NumProprieteFont + \textcolor{TablePropertyTitleTextColor}{\thepropriete} + } + }% + \longtable{% + >{\leavevmode\endgraf\vspace{-0.3\baselineskip}} + m{0.24\dimexpr#1-6\tabcolsep} + <{\endgraf\vspace{-0.3\baselineskip}} + >{% + \leavevmode\endgraf\vspace{-0.3\baselineskip} + \columncolor{TablePropertyBkgColor} + } + m{0.46\dimexpr#1-6\tabcolsep} + <{\endgraf\vspace{-0.3\baselineskip}} + >{% + \centering\arraybackslash + \leavevmode\endgraf\vspace{-0.3\baselineskip} + } + m{0.30\dimexpr#1-6\tabcolsep} + <{\endgraf\vspace{-0.3\baselineskip}} + }% +} +{\endlongtable\par\addvspace{\AfterTableVSpace}} +\newcommand\tabX[1][\ht\@arstrutbox,\dp\@arstrutbox]{% + \smc@GetVTabX#1,,\@nil + \vrule width0pt height\smc@htTabX depth-\smc@dpTabX + \pnode(-\tabcolsep,\smc@htTabX){ul} + \pnode(-\tabcolsep,\smc@dpTabX){dl} + \hspace*{\stretch{1}}% + \pnode(\tabcolsep,\smc@htTabX){ur} + \pnode(\tabcolsep,\smc@dpTabX){dr} + \psline(ul)(dr) + \psline(dl)(ur) +} +\def\smc@GetVTabX#1,#2,{% + \edef\smc@htTabX{\the\dimexpr#1}% + \edef\smc@dpTabX{-\the\dimexpr#2}% + \smc@gobblenil +} +\def\smc@gobblenil#1\@nil{} +\newenvironment{debordedroite}{% + \changemargin{0mm}{-\ExtraMarginRight}% +} +{\par\endchangemargin} +\newcommand*\habillage[1]{% + \setbox\smc@boxb=\hbox{#1}% + \smc@dimb = \dimexpr\wd\smc@boxb-\ExtraMarginRight\relax + \ifdim \smc@dimb<\z@ + \smc@dimb = 0.1pt + \fi + \parpic[r]{\makebox[\smc@dimb][l]{{#1}}} +} +\let\uori\u +\let\Uori\U +\let\U\relax +\newcommand\U[1]{\ensuremath{#1}} +\renewcommand\u[1]{\ensuremath{\nombre{#1}}} +\newcommand\newunit[2]{% + \expandafter\newcommand\csname u#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{\nombre{##1}\,#2}}% + }% + \expandafter\newcommand\csname U#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{##1\,#2}}% + }% +} +\newcommand\renewunit[2]{% + \expandafter\renewcommand\csname u#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{\nombre{##1}\,#2}}% + }% + \expandafter\renewcommand\csname U#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{##1\,#2}}% + }% +} +\newunit{ym}{\text{ym}} +\newunit{zm}{\text{zm}} +\newunit{am}{\text{am}} +\newunit{fm}{\text{fm}} +\newunit{pm}{\text{pm}} +\newunit{nm}{\text{nm}} +\newunit{micron}{\mu\text{m}} +\newunit{mm}{\text{mm}} +\newunit{cm}{\text{cm}} +\newunit{dm}{\text{dm}} +\newunit{m}{\text{m}} +\newunit{dam}{\text{dam}} +\newunit{hm}{\text{hm}} +\newunit{km}{\text{km}} +\newunit{Mm}{\text{Mm}} +\newunit{Gm}{\text{Gm}} +\newunit{Tm}{\text{Tm}} +\newunit{Pm}{\text{Pm}} +\newunit{Em}{\text{Em}} +\newunit{Zm}{\text{Zm}} +\newunit{Ym}{\text{Ym}} +\newunit{mmq}{\text{mm}^2} +\newunit{cmq}{\text{cm}^2} +\newunit{dmq}{\text{dm}^2} +\newunit{mq}{\text{m}^2} +\newunit{damq}{\text{dam}^2} +\newunit{hmq}{\text{hm}^2} +\newunit{kmq}{\text{km}^2} +\newunit{ha}{\text{ha}} +\newunit{mmc}{\text{mm}^3} +\newunit{cmc}{\text{cm}^3} +\newunit{dmc}{\text{dm}^3} +\newunit{mc}{\text{m}^3} +\newunit{damc}{\text{dam}^3} +\newunit{hmc}{\text{hm}^3} +\newunit{kmc}{\text{km}^3} +\newunit{hl}{\text{hl}} +\newunit{dal}{\text{dal}} +\newunit{l}{\text{l}} +\newunit{dl}{\text{dl}} +\newunit{cl}{\text{cl}} +\newunit{ml}{\text{ml}} +\newunit{hel}{\text{h$\ell$}} +\newunit{dael}{\text{da$\ell$}} +\newunit{el}{\text{$\ell$}} +\newunit{del}{\text{d$\ell$}} +\newunit{cel}{\text{c$\ell$}} +\newunit{mel}{\text{m$\ell$}} +\newunit{s}{\text{s}} +\newunit{min}{\text{min}} +\newunit{h}{\text{h}} +\newunit{ms}{\text{m$\cdot$s}^{-1}} +\newunit{mh}{\text{m$\cdot$h}^{-1}} +\newunit{kms}{\text{km$\cdot$s}^{-1}} +\newunit{kmmin}{\text{km$\cdot$min}^{-1}} +\newunit{kmh}{\text{km$\cdot$h}^{-1}} +\newunit{ls}{\text{$\ell\cdot$s}^{-1}} +\newunit{mg}{\text{mg}} +\newunit{cg}{\text{cg}} +\newunit{dg}{\text{dg}} +\newunit{g}{\text{g}} +\newunit{dag}{\text{dag}} +\newunit{hg}{\text{hg}} +\newunit{kg}{\text{kg}} +\newunit{pc}{\%} +\newunit{deg}{\text{\degre}} +\newunit{degc}{\text{\degre C}} +\newunit{euro}{\text{\euro}} +\newcommand*\algo{% + \psframebox[framesep=1pt,linewidth=\LogoLineWidth, + linecolor=AlgoLineColor, fillstyle=solid, + fillcolor=AlgoBkgColor, framearc=0.6]{% + \AlgoFont + \textcolor{AlgoTextColor}{\StringALGO}% + } +} +\newcommand*\tice{% + \psframebox[framesep=1pt,linewidth=\LogoLineWidth, + linecolor=TiceLineColor, fillstyle=solid, + fillcolor=TiceBkgColor, framearc=0.6]{% + \TiceFont + \textcolor{TiceTextColor}{\StringTICE}% + } +} +\newcounter{smc@line} +\newenvironment{oldalgorithme}{% + \ttfamily + \c@smc@line \z@ + \def\par{% + \@@par + \afterassignment\smc@displaynum\let\next=% + }% + \def\smc@displaynum{% + \ifx\next\end + \expandafter\end + \else + \global\advance\c@smc@line\@ne% + \leavevmode\hb@xt@\AlgorithmeNumWidth{\the\c@smc@line.\hss}% + \expandafter\next + \fi% + }% + \shorthandoff{;:!?}% + \@vobeyspaces + \obeylines + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\AlgorithmeRuleWidth*2-\AlgorithmeSep*2}% +} +{% + \endminipage + \end{lrbox}% + \@@par\addvspace{\BeforeAlgorithmeVSpace} + \psframebox[linecolor=AlgorithmeRuleColor, + linewidth=\AlgorithmeRuleWidth, + fillstyle=solid, + fillcolor=AlgorithmeBkgColor, + framesep=\AlgorithmeSep, + cornersize=absolute, + linearc=\AlgorithmeSep]% + {\usebox{\smc@boxa}}% + \@@par\addvspace{\AfterAlgorithmeVSpace} +} +\newcount\smc@indent +\newcommand*\smc@inc@indent{% + \advance\smc@indent\@ne +} +\newcommand*\smc@dec@indent{% + \ifnum\smc@indent>\z@ + \advance\smc@indent\m@ne + \fi +} +\newcommand*\smc@write@indent{% + \par + \refstepcounter{smc@line}% + \dimen0 \dimexpr\AlgoIndent*\smc@indent + \leavevmode\hb@xt@\AlgorithmeNumWidth{\texttt{\the\c@smc@line.}\hss}% + \hspace*{\dimen0}% +} +\newcommand*\BlocVariables{% + \smc@dec@indent + \smc@write@indent + \textit{Liste des variables utilis\'ees}% + \smc@inc@indent +} +\newcommand*\BlocEntrees{% + \smc@dec@indent + \smc@write@indent + \textit{Entr\'ees}% + \smc@inc@indent +} +\newcommand*\BlocTraitements{% + \smc@dec@indent + \smc@write@indent + \textit{Traitements} + \smc@inc@indent +} +\newcommand*\BlocAffichage{% + \smc@dec@indent + \smc@write@indent + \textit{Affichage} + \smc@inc@indent +} +\newcommand\BlocTraitementsEtAffichage{% + \smc@dec@indent + \smc@write@indent + \textit{Traitements et affichage} + \smc@inc@indent +} +\newcommand*\DeclareVar[3]{% + \smc@write@indent + \texttt{#1 \string: }% + \textit{#2}\hfill + \textcolor{CouleurAlgoCommentaire}{#3}% +} +\newcommand*\TantQue[2]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Tant que} (\texttt{#1})} + \texttt{\bfseries faire} + \smc@inc@indent + #2 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Fin Tant que}}% +} +\newcommand*\Pour[4]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoPour}{\bfseries Pour}} + \texttt{#1} + \textcolor{CouleurAlgoPour}{\bfseries variant de} + \texttt{#2} + \textcolor{CouleurAlgoPour}{\bfseries \`a} + \texttt{#3} + \texttt{\bfseries faire} + \smc@inc@indent + #4 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Fin Pour}}% +} +\newcommand*\PourAvecPas[5]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoPour}{\bfseries Pour}} + \texttt{#1} + \textcolor{CouleurAlgoPour}{\bfseries variant de} + \texttt{#2} + \textcolor{CouleurAlgoPour}{\bfseries \`a} + \texttt{#3} + \textcolor{CouleurAlgoPour}{\bfseries avec un pas de} + \texttt{#4} + \texttt{faire} + \smc@inc@indent + #5 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Fin Pour}}% +} +\newcommand*\SiAlors[2]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Si}} + {#1} + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Alors}} + \smc@inc@indent + #2 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Fin Si}}% +} +\newcommand*\SiAlorsSinon[3]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Si}} + {#1} + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Alors}} + \smc@inc@indent + #2 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Sinon}} + \smc@inc@indent + #3 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Fin Si}}% +} +\newcommand*\AfficherVar[1]{% + \smc@write@indent + \textcolor{CouleurAlgoAffiche}{Afficher la valeur de} + \texttt{#1}% +} +\newcommand*\Afficher[1]{% + \smc@write@indent + \textcolor{CouleurAlgoAffiche}{Afficher} + #1% +} +\newcommand*\Calculer[1]{% + \smc@write@indent + \textcolor{CouleurAlgoCalcule}{Calculer} + #1% +} +\newcommand*\Demander[1]{% + \smc@write@indent + \textcolor{CouleurAlgoDemander}{Demander} + \texttt{#1}% +} +\newcommand*\Saisir[1]{% + \smc@write@indent + \textcolor{CouleurAlgoSaisir}{Saisir} + \texttt{#1}% +} +\newcommand*\Stocker[1]{% + \smc@write@indent + \textcolor{CouleurAlgoStocker}{Stocker} la r\'eponse dans + \texttt{#1}% +} +\newcommand*\DonnerValeur[2]{% + \smc@write@indent + \textcolor{CouleurAlgoDonnerValeur}{Donner} \`a \texttt{#1} + la valeur de \texttt{#2}% +} +\newcommand*\TitreAlgo[1]{% + \smc@write@indent + \textit{Algorithme \string: }#1 +} +\newcommand*\FinAlgo{% + \smc@dec@indent + \smc@write@indent + \textit{Fin de l'algorithme}% +} +\newenvironment{algorithme}{% + \c@smc@line\z@ + \shorthandoff{;:!?}% + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\AlgorithmeRuleWidth*2-\AlgorithmeSep*2}% +} +{% + \endminipage + \end{lrbox}% + \par\addvspace{\BeforeAlgorithmeVSpace} + \psframebox[linecolor=AlgorithmeRuleColor, + linewidth=\AlgorithmeRuleWidth, + fillstyle=solid, + fillcolor=AlgorithmeBkgColor, + framesep=\AlgorithmeSep, + cornersize=absolute, + linearc=\AlgorithmeSep]% + {\usebox{\smc@boxa}}% + \par\addvspace{\AfterAlgorithmeVSpace} +} +\newcommand*\Strut[1][1]{% + \leavevmode + \vrule \@height #1\ht\strutbox + \@depth #1\dp\strutbox + \@width\z@ +} +\newcommand*\TopStrut[1][1]{% + \leavevmode + \vrule \@height #1\ht\strutbox + \@depth \z@ + \@width \z@ +} +\newcommand*\BotStrut[1][1]{% + \leavevmode + \vrule \@height \z@ + \@depth #1\dp\strutbox + \@width \z@ +} +\newcommand*\RefExercice{% + \@ifstar{\smc@sRefExercice}{\smc@nsRefExercice}% +} +\newcommand*\smc@sRefExercice[1]{% + \psframebox*[linewidth=0pt, fillcolor=ExerciceCorrigeNumFrameColor, + framesep=2pt]{\textcolor{ExerciceNumColor}{\bfseries \ref{#1}}}% +} +\newcommand*\smc@nsRefExercice[1]{% + \psframebox*[linewidth=0pt, fillcolor=ExerciceNumFrameColor, framesep=2pt] + {\textcolor{ExerciceNumColor}{\bfseries \ref{#1}}}% +} +\newcommand*\MethodeRefExercice{% + \@ifstar{\smc@sMethodeRefExercice}{\smc@nsMethodeRefExercice}% +} +\newcommand\smc@sMethodeRefExercice[1]{% + \begingroup + \normalcolor + \normalfont + \MethodeRefExerciceFont + \hfill + \begin{pspicture}(0,0)(0.8em,1.2ex) + \pspolygon*[linewidth=0pt, linecolor=MethodeTitleFrameColor] + (0,0)(0,1.2ex)(0.8em,0.6ex) + \end{pspicture}~% + Ex.~\RefExercice*{#1}~p.~\pageref{#1}% + \endgroup +} +\newcommand\smc@nsMethodeRefExercice[1]{% + \begingroup + \normalcolor + \normalfont + \MethodeRefExerciceFont + \hfill + \begin{pspicture}(0,0)(0.8em,1.2ex) + \pspolygon*[linewidth=0pt, linecolor=MethodeTitleFrameColor] + (0,0)(0,1.2ex)(0.8em,0.6ex) + \end{pspicture}~% + Ex.~\RefExercice{#1}~p.~\pageref{#1}% + \endgroup +} +\newcommand*\RefMethode[1]{% + \textcolor{MethodeTitleFrameColor}{\bfseries \ref{#1}}% +} +\newcommand*\ExerciceRefMethode[1]{% + \begingroup + \quad + \begin{pspicture}(0,0)(0.8em,1.2ex) + \pspolygon*[linewidth=0pt, linecolor=MethodeTitleFrameColor] + (0,0)(0,1.2ex)(0.8em,0.6ex) + \end{pspicture}~% + \psframebox*[fillcolor=ExerciceRefMethodeColor] + {% + \textcolor{Blanc}{% + {% + \ExerciceRefMethodeFont + \StringMETHODE~\ref{#1}% + }% + }% + }% + \textcolor{Noir}{% + {% + \normalfont + \ExercicePageRefMethodeFont + ~p.~\pageref{#1}% + }% + }% + \endgroup +} +\newcommand*\RefItem[1]{% + \textcolor{\smc@curr@itemcolor}{\smc@curr@itemcmd\ref{#1}}% +} +\newcommand*\RefQCM[1]{% + \begingroup + \fboxsep \QCMRefHSep + \colorbox{QCMFrameColor}{\textcolor{QCMTextFrameColor}{\ref{#1}}}% + \endgroup +} +\newcommand*\RefPartie[1]{% + \psframebox*[fillcolor=smc@curr@partiebkgcolor] + {\textcolor{smc@curr@partiecolor}{\smc@curr@partiefont \ref{#1}}}% +} +\newcommand*\SudokuWidth{5mm} +\newcommand\sudoku[2][\SudokuWidth]{% + \begingroup + \psset{unit=#1, dimen=middle, linewidth=0.3pt, linecolor=FiletTableauColor} + \begin{pspicture}(0,0)(10,10) + \multido{\n=1+1}{9}{% + \rput[B](\n.5,9.25){\symbol{\numexpr 96+\n}} + \rput[B](0.5,\dimexpr\n\psyunit-0.75\psyunit){\symbol{\numexpr 74-\n}} + } + \def\x{1}\def\y{8}% + \let\smc@next\smc@parsesudoku + \smc@next#2\@nil\@@nil + \psset{linewidth=1.2pt} + \multido{\n=0+3,\nn=1+3}{4}{% + \psline(1,\n)(10,\n) + \psline(\nn,-0.5\pslinewidth)(\nn,\dimexpr 9\psyunit+0.5\pslinewidth) + } + \end{pspicture}% + \endgroup +} +\def\smc@parsesudoku#1{% + \def\smc@arg{#1}% + \ifx\smc@arg\@nnil + \let\smc@next\smc@endsudoku + \else + \rput(\x,\y){% + \if#1.% + \psframe(0,0)(1,1) + \else\if#1*% + \psframe[fillstyle=solid, fillcolor=FondSudokuColor](0,0)(1,1) + \else + \psframe(0,0)(1,1) + \rput[B](0.5,0.3\psyunit){#1} + \fi\fi + } + \fi + \edef\x{\the\numexpr\x+1}% + \ifnum\x=10 + \def\x{1}% + \edef\y{\the\numexpr\y-1}% + \ifnum\y=-1 + \let\smc@next\smc@endsudoku + \fi + \fi + \smc@next +} +\def\smc@endsudoku#1\@@nil{% + \ifnum\y>-1 + \let\smc@next\smc@@endsudoku + \smc@next + \fi +} +\def\smc@@endsudoku{% + \rput(\x,\y){\psframe(0,0)(1,1)} + \edef\x{\the\numexpr\x+1}% + \ifnum\x=10 + \def\x{1}% + \edef\y{\the\numexpr\y-1}% + \ifnum\y=-1 + \let\smc@next\relax + \fi + \fi + \smc@next +} +\newcommand\smc@nobsbs[1]{% + \begingroup + \def\\{\space\ignorespaces}% + \protected@edef\smc@tmp{#1}% + \smc@tmp + \endgroup +} +\newcommand*\smc@headeven[2]{% + \begin{pspicture}(0,0)(\HeadFrameWidth,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \psframe[fillcolor=#15Color] + (\dimexpr -\smc@marginleft-\smc@bleed,-\HeadFrameDepth) + (\HeadFrameWidth,\dimexpr \HeadFrameHeight+\smc@bleed) + \smc@diagonal(\HeadFrameWidth-\SquareWidth*3,-\HeadFrameDepth){#1} + \setbox0=\hbox{\textcolor{#10Color}{\HeadTitleFont #2}}% + \ifdim\wd0>\HeadTitleMaxWidth + \rput[Bl](0,0){% + {% + \HeadTitleFont\color{#10Color}% + \resizebox{\HeadTitleMaxWidth}{\dimexpr\ht0+\dp0}{#2}% + }% + } + \else + \rput[Bl](0,0){\unhbox0} + \fi + \end{pspicture} +} +\newcommand\smc@headodd[2]{% + \begin{pspicture}(0,0)(\HeadFrameWidth,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \psframe[fillcolor=#15Color] + (0,-\HeadFrameDepth) + (\dimexpr \HeadFrameWidth+\smc@marginright+\smc@bleed, + \dimexpr \HeadFrameHeight+\smc@bleed) + \smc@antidiagonal(0pt,-\HeadFrameDepth){#1} + \setbox0=\hbox{\textcolor{#10Color}{\HeadTitleFont #2}}% + \ifdim\wd0>\HeadTitleMaxWidth + \rput[Br](\HeadFrameWidth,0){% + {% + \HeadTitleFont\color{#10Color}% + \resizebox{\HeadTitleMaxWidth}{\dimexpr\ht0+\dp0}{#2}% + }% + } + \else + \rput[Br](\HeadFrameWidth,0){\unhbox0} + \fi + \end{pspicture} +} +\newcommand*\smc@roundheadeven[3]{% + \begin{pspicture}(0,0)(\RoundHeadFrameWidth,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \psframe[fillcolor=#15Color] + (\dimexpr -\smc@marginleft-\smc@bleed,-\HeadFrameDepth) + (\RoundHeadFrameWidth,\dimexpr \HeadFrameHeight+\smc@bleed) + \psframe[fillcolor=#2] + (\dimexpr \RoundHeadFrameWidth-\SquareWidth/2, + -\HeadFrameDepth) + (\RoundHeadFrameWidth, + \dimexpr -\HeadFrameDepth+\SquareWidth/2) + \smc@rounddiagonal(\RoundHeadFrameWidth-\SquareWidth*3,-\HeadFrameDepth){#1} + \setbox0=\hbox{\textcolor{#10Color}{\HeadTitleFont #3}}% + \ifdim\wd0>\RoundHeadTitleMaxWidth + \rput[Bl](0,0){% + {% + \HeadTitleFont\color{#10Color}% + \resizebox{\RoundHeadTitleMaxWidth}{\dimexpr\ht0+\dp0}{#3}% + }% + } + \else + \rput[Bl](0,0){\unhbox0} + \fi + \end{pspicture} +} +\newcommand\smc@roundheadodd[3]{% + \begin{pspicture}(0,0)(\RoundHeadFrameWidth,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \psframe[fillcolor=#15Color] + (0,-\HeadFrameDepth) + (\dimexpr \RoundHeadFrameWidth+\smc@marginright+\smc@bleed, + \dimexpr \HeadFrameHeight+\smc@bleed) + \psframe[fillcolor=#2] + (0, -\HeadFrameDepth) + (\dimexpr \SquareWidth/2, \dimexpr -\HeadFrameDepth+\SquareWidth/2) + \smc@roundantidiagonal(0pt,-\HeadFrameDepth){#1} + \setbox0=\hbox{\textcolor{#10Color}{\HeadTitleFont #3}}% + \ifdim\wd0>\RoundHeadTitleMaxWidth + \rput[Br](\RoundHeadFrameWidth,0){% + {% + \HeadTitleFont\color{#10Color}% + \resizebox{\RoundHeadTitleMaxWidth}{\dimexpr\ht0+\dp0}{#3}% + }% + } + \else + \rput[Br](\RoundHeadFrameWidth,0){\unhbox0} + \fi + \end{pspicture}% +} +\newcommand*\smc@footpage[1]{% + \begin{pspicture}(0,0)(\FootFrameWidth,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \rput[B](.25,0){\FootPageFont \thepage} + \psframe[fillcolor=#1](0,-\FootFrameSep) + (\FootFrameWidth, \dimexpr \smc@footskip+\FootFrameSep + -\smc@marginbottom-\smc@bleed) + \end{pspicture}% +} +\newcommand*\smc@foottitleeven{% + {% + \space + {% + \color{FootTitleHeadColor}% + \FootTitleHeadFont \@chapapp\space + \MakeUppercase{\smc@thema@init}\thechapter. + }\space + {% + \FootTitleChapterFont \smc@nobsbs{\smc@chaptertitle}% + }% + }% +} +\newcommand*\smc@foottitleodd{% + {% + \leavevmode + {% + \color{FootTitleHeadColor}% + \FootTitleHeadFont \@chapapp\space + \MakeUppercase{\smc@thema@init}\thechapter. + }\space + {% + \FootTitleChapterFont \smc@nobsbs{\smc@chaptertitle}% + }% + }% + \space +} +\newcommand*\smc@bkgeven[1]{% + \begin{pspicture}(0,0)(0,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \psframe[fillcolor=#1] + (\dimexpr -\smc@marginleft-\smc@bleed, + \dimexpr \smc@margintop-\smc@headsep+\smc@bleed) + (\dimexpr \linewidth+\smc@marginright+\smc@bleed, + \dimexpr -\smc@headsep-\textheight-\smc@marginbottom-\smc@bleed) + \end{pspicture}% +} +\newcommand*\smc@bkgodd[1]{% + \begin{pspicture}(0,0)(0,0) + \psset{linewidth=0pt, linestyle=none, fillstyle=solid} + \psframe[fillcolor=#1] + (\dimexpr -\smc@marginright-\smc@bleed, + \dimexpr \smc@margintop-\smc@headsep+\smc@bleed) + (\dimexpr \linewidth+\smc@marginleft+\smc@bleed, + \dimexpr -\smc@headsep-\textheight-\smc@marginbottom-\smc@bleed) + \end{pspicture}% +} +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0pt} +\fancypagestyle{firstchapter}{% + \fancyhf{} + \fancyhead[LE]{} + \fancyhead[RO]{} + \fancyfoot[LE]{\smc@footpage{FirstChapterFootColor}} + \fancyfoot[RO]{\smc@footpage{FirstChapterFootColor}} +} +\fancypagestyle{activites}{% + \fancyhf{} + \fancyhead[LE]{\smc@headeven{ActiviteHeadFrame}{\StringActivitesApproche}} + \fancyhead[RO]{\smc@headodd{ActiviteHeadFrame}{\StringActivitesApproche}} + \fancyfoot[LE]{\smc@footpage{ActiviteFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{ActiviteFootColor}} +} +\fancypagestyle{cours}{% + \fancyhf{} + \fancyhead[LE]{\smc@headeven{CoursHeadFrame}{\StringCoursMethodes}} + \fancyhead[RO]{\smc@headodd{CoursHeadFrame}{\StringCoursMethodes}} + \fancyfoot[LE]{\smc@footpage{CoursFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{CoursFootColor}} +} +\fancypagestyle{exercicesbase}{% + \fancyhf{} + \fancyhead[LE]{\smc@headeven{ExoBaseHeadFrame}{\StringExercicesBase}} + \fancyhead[RO]{\smc@headodd{ExoBaseHeadFrame}{\StringExercicesBase}} + \fancyfoot[LE]{\smc@footpage{ExoBaseFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{ExoBaseFootColor}} +} +\fancypagestyle{exercicesappr}{% + \fancyhf{} + \fancyhead[LE]{\smc@headeven{ExoApprHeadFrame}{\StringExercicesAppr}} + \fancyhead[RO]{\smc@headodd{ExoApprHeadFrame}{\StringExercicesAppr}} + \fancyfoot[LE]{\smc@footpage{ExoApprFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{ExoApprFootColor}} +} +\fancypagestyle{connaissances}{% + \fancyhf{} + \fancyfoot[LE]{\smc@footpage{ConnFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{ConnFootColor}} +} +\fancypagestyle{firstconnaissances}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@roundheadeven{ConnHeadFrame}{Blanc} + {\StringTestConnaissances}% + } + \fancyhead[RO]{% + \smc@roundheadodd{ConnHeadFrame}{Blanc} + {\StringTestConnaissances}% + } + \fancyfoot[LE]{\smc@footpage{ConnFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{ConnFootColor}} +} +\fancypagestyle{TP}{% + \fancyhf{} + \fancyhead[LE]{\smc@headeven{TPHeadFrame}{\StringTravauxPratiques}} + \fancyhead[RO]{\smc@headodd{TPHeadFrame}{\StringTravauxPratiques}} + \fancyfoot[LE]{\smc@footpage{TPFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{TPFootColor}} +} +\fancypagestyle{recreation}{% + \fancyhf{} + \fancyhead[LE]{\smc@headeven{RecreationHeadFrame}{\StringRecreation}} + \fancyhead[RO]{\smc@headodd{RecreationHeadFrame}{\StringRecreation}} + \fancyfoot[LE]{\smc@footpage{RecreationFootColor}\smc@foottitleeven} + \fancyfoot[RO]{\smc@foottitleodd\smc@footpage{RecreationFootColor}} +} +\newcommand*\smc@firstheadevenannexe[1]{% + \begin{pspicture}(0,0)(0,0) + \rput(-\smc@marginleft, \dimexpr \smc@margintop-\smc@headsep){% + \pspolygon[linestyle=none, linewidth=0pt, + fillstyle=solid, fillcolor=#1] + (-\smc@bleed, \smc@bleed) + (-\smc@bleed, \dimexpr -\smc@paperheight-\smc@bleed) + (\CorrigeHeadFrameWidth, \dimexpr -\smc@paperheight-\smc@bleed) + (\CorrigeHeadFrameWidth, -\CorrigeHeadFrameWidth) + (\dimexpr \CorrigeHeadFrameWidth*2, -\CorrigeHeadFrameWidth) + (\dimexpr \CorrigeHeadFrameWidth*2, \smc@bleed) + } + \end{pspicture}% +} +\newcommand*\smc@firstheadoddannexe[1]{% + \begin{pspicture}(0,0)(0,0) + \rput(\smc@marginright,\dimexpr \smc@margintop-\smc@headsep){% + \pspolygon[linestyle=none, linewidth=0pt, fillstyle=solid, fillcolor=#1] + (\smc@bleed, \smc@bleed) + (\smc@bleed, \dimexpr -\smc@paperheight-\smc@bleed) + (-\CorrigeHeadFrameWidth, \dimexpr -\smc@paperheight-\smc@bleed) + (-\CorrigeHeadFrameWidth, -\CorrigeHeadFrameWidth) + (\dimexpr -\CorrigeHeadFrameWidth*2, -\CorrigeHeadFrameWidth) + (\dimexpr -\CorrigeHeadFrameWidth*2, \smc@bleed) + } + \end{pspicture}% +} +\newcommand*\smc@headevenannexe[1]{% + \begin{pspicture}(0,0)(0,0) + \rput(-\smc@marginleft, \dimexpr \smc@margintop-\smc@headsep){% + \pspolygon[linestyle=none, linewidth=0pt, fillstyle=solid, fillcolor=#1] + (-\smc@bleed, \smc@bleed) + (-\smc@bleed, \dimexpr -\smc@paperheight-\smc@bleed) + (\CorrigeHeadFrameWidth, \dimexpr -\smc@paperheight-\smc@bleed) + (\CorrigeHeadFrameWidth, \smc@bleed) + } + \end{pspicture}% +} +\newcommand*\smc@headoddannexe[1]{% + \begin{pspicture}(0,0)(0,0) + \rput(\smc@marginright,\dimexpr \smc@margintop-\smc@headsep){% + \pspolygon[linestyle=none, linewidth=0pt, + fillstyle=solid, fillcolor=#1] + (\smc@bleed,\smc@bleed) + (\smc@bleed, \dimexpr -\smc@paperheight-\smc@bleed) + (-\CorrigeHeadFrameWidth, + \dimexpr -\smc@paperheight-\smc@bleed) + (-\CorrigeHeadFrameWidth, \smc@bleed) + } + \end{pspicture}% +} +\fancypagestyle{firstcorrige}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@firstheadevenannexe{CorrigeHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@firstheadoddannexe{CorrigeHeadFrameColor}% + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\StringCorriges}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\StringCorriges}} + {\FootAnnexePageFont \thepage}% + } +} +\fancypagestyle{corrige}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@headevenannexe{CorrigeHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@headoddannexe{CorrigeHeadFrameColor} + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\StringCorriges}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\StringCorriges}} + {\FootAnnexePageFont \thepage}% + } +} +\fancypagestyle{firstannexe}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@firstheadevenannexe{AnnexeHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@firstheadoddannexe{AnnexeHeadFrameColor}% + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\smc@TitleAnnexe}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\smc@TitleAnnexe}} + {\FootAnnexePageFont \thepage}% + } +} +\fancypagestyle{annexe}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@headevenannexe{AnnexeHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@headoddannexe{AnnexeHeadFrameColor} + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\smc@TitleAnnexe}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\smc@TitleAnnexe}} + {\FootAnnexePageFont \thepage}% + } +} +\fancypagestyle{firstlexique}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@firstheadevenannexe{LexiqueHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@firstheadoddannexe{LexiqueHeadFrameColor}% + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\StringLexique}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\StringLexique}} + {\FootAnnexePageFont \thepage}% + } +} +\fancypagestyle{lexique}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@headevenannexe{LexiqueHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@headoddannexe{LexiqueHeadFrameColor} + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\StringLexique}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\StringLexique}} + {\FootAnnexePageFont \thepage}% + } +} +\fancypagestyle{firstaffichemethode}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@firstheadevenannexe{ListeMethodeHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@firstheadoddannexe{ListeMethodeHeadFrameColor}% + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\StringListeMethode}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\StringListeMethode}} + {\FootAnnexePageFont \thepage}% + } +} +\fancypagestyle{affichemethode}{% + \fancyhf{} + \fancyhead[LE]{% + \smc@headevenannexe{ListeMethodeHeadFrameColor}% + } + \fancyhead[RO]{% + \smc@headoddannexe{ListeMethodeHeadFrameColor} + } + \fancyfoot[LE]{% + {\FootAnnexePageFont \thepage} + {\FootAnnexeTxtFont \MakeUppercase{\StringListeMethode}}% + } + \fancyfoot[RO]{% + {\FootAnnexeTxtFont \MakeUppercase{\StringListeMethode}} + {\FootAnnexePageFont \thepage}% + } +} +\fancypagestyle{firstlibre}{% + \fancyhf{} + \fancyfoot[LE]{% + {\ifsmc@page\FootLibrePageFont \thepage\fi} + } + \fancyfoot[RO]{% + {\ifsmc@page\FootLibrePageFont \thepage\fi}% + } +} +\fancypagestyle{libre}{% + \fancyhf{} + \fancyfoot[LE]{% + {\ifsmc@page\FootLibrePageFont \thepage\fi} + } + \fancyfoot[RO]{% + {\ifsmc@page\FootLibrePageFont \thepage\fi}% + } +} +\fancypagestyle{empty}{% + \fancyhead{} +} +\definecolor{A1} {cmyk}{1.00, 0.00, 0.00, 0.50} +\definecolor{A2} {cmyk}{0.60, 0.00, 0.00, 0.10} +\definecolor{A3} {cmyk}{0.30, 0.00, 0.00, 0.05} +\definecolor{A4} {cmyk}{0.10, 0.00, 0.00, 0.00} +\definecolor{B1} {cmyk}{0.00, 1.00, 0.60, 0.40} +\definecolor{B2} {cmyk}{0.00, 0.85, 0.60, 0.15} +\definecolor{B3} {cmyk}{0.00, 0.20, 0.15, 0.05} +\definecolor{B4} {cmyk}{0.00, 0.05, 0.05, 0.00} +\definecolor{C1} {cmyk}{0.00, 1.00, 0.00, 0.50} +\definecolor{C2} {cmyk}{0.00, 0.60, 0.00, 0.20} +\definecolor{C3} {cmyk}{0.00, 0.30, 0.00, 0.05} +\definecolor{C4} {cmyk}{0.00, 0.10, 0.00, 0.05} +\definecolor{D1} {cmyk}{0.00, 0.00, 1.00, 0.50} +\definecolor{D2} {cmyk}{0.20, 0.20, 0.80, 0.00} +\definecolor{D3} {cmyk}{0.00, 0.00, 0.20, 0.10} +\definecolor{D4} {cmyk}{0.00, 0.00, 0.20, 0.05} +\definecolor{F1} {cmyk}{0.00, 0.80, 0.50, 0.00} +\definecolor{F2} {cmyk}{0.00, 0.40, 0.30, 0.00} +\definecolor{F3} {cmyk}{0.00, 0.15, 0.10, 0.00} +\definecolor{F4} {cmyk}{0.00, 0.07, 0.05, 0.00} +\definecolor{G1} {cmyk}{1.00, 0.00, 0.50, 0.00} +\definecolor{G2} {cmyk}{0.50, 0.00, 0.20, 0.00} +\definecolor{G3} {cmyk}{0.20, 0.00, 0.10, 0.00} +\definecolor{G4} {cmyk}{0.10, 0.00, 0.05, 0.00} +\definecolor{H1} {cmyk}{0.40, 0.00, 1.00, 0.10} +\definecolor{H2} {cmyk}{0.20, 0.00, 0.50, 0.05} +\definecolor{H3} {cmyk}{0.10, 0.00, 0.20, 0.00} +\definecolor{H4} {cmyk}{0.07, 0.00, 0.15, 0.00} +\definecolor{J1} {cmyk}{0.00, 0.50, 1.00, 0.00} +\definecolor{J2} {cmyk}{0.00, 0.20, 0.50, 0.00} +\definecolor{J3} {cmyk}{0.00, 0.10, 0.20, 0.00} +\definecolor{J4} {cmyk}{0.00, 0.07, 0.15, 0.00} +\definecolor{FondOuv} {cmyk}{0.00, 0.05, 0.10, 0.00} +\definecolor{FondAutoEvaluation}{cmyk}{0.00, 0.03, 0.15, 0.00} +\definecolor{FondTableaux} {cmyk}{0.00, 0.00, 0.20, 0.00} +\definecolor{FondAlgo} {cmyk}{0.07, 0.00, 0.30, 0.00} +\definecolor{BleuOuv} {cmyk}{1.00, 0.00, 0.00, 0.00} +\definecolor{PartieFonction} {cmyk}{1.00, 0.00, 0.00, 0.00} +\definecolor{PartieGeometrie} {cmyk}{0.80, 0.80, 0.00, 0.00} +\definecolor{PartieStatistique} {cmyk}{0.60, 0.95, 0.00, 0.20} +\definecolor{PartieStatistiqueOLD}{cmyk}{0.95, 0.60, 0.20, 0.00} +\definecolor{PartieStatistique*}{cmyk}{0.30, 1.00, 0.00, 0.00} +\definecolor{U1} {cmyk}{0.50, 0.10, 0.00, 0.10} +\definecolor{U2} {cmyk}{0.20, 0.15, 0.00, 0.00} +\definecolor{U3} {cmyk}{0.50, 0.00, 1.00, 0.00} +\definecolor{U4} {cmyk}{0.40, 0.00, 0.00, 0.00} +\definecolor{Blanc} {cmyk}{0.00, 0.00, 0.00, 0.00} +\definecolor{Gris1} {cmyk}{0.00, 0.00, 0.00, 0.20} +\definecolor{Gris2} {cmyk}{0.00, 0.00, 0.00, 0.40} +\definecolor{Gris3} {cmyk}{0.00, 0.00, 0.00, 0.50} +\definecolor{Noir} {cmyk}{0.00, 0.00, 0.00, 1.00} +\AtBeginDocument{\def\default@color{cmyk 0 0 0 1}\normalcolor} +\colorlet{AlgoLineColor}{F3} +\colorlet{AlgoBkgColor}{F1} +\colorlet{AlgoTextColor}{Blanc} +\colorlet{TiceLineColor}{A3} +\colorlet{TiceBkgColor}{A1} +\colorlet{TiceTextColor}{Blanc} +\colorlet{CadreLineColor}{D3} +\colorlet{CadreBkgColor}{Blanc} +\colorlet{AlgorithmeRuleColor}{D2} +\colorlet{AlgorithmeBkgColor}{FondAlgo} +\colorlet{CouleurAlgoAffiche}{Noir} +\colorlet{CouleurAlgoDemander}{Noir} +\colorlet{CouleurAlgoSaisir}{Noir} +\colorlet{CouleurAlgoStocker}{Noir} +\colorlet{CouleurAlgoSi}{Noir} +\colorlet{CouleurAlgoTantque}{Noir} +\colorlet{CouleurAlgoPour}{Noir} +\colorlet{CouleurAlgoCalcule}{Noir} +\colorlet{CouleurAlgoInitialiser}{Noir} +\colorlet{CouleurAlgoIncrementer}{Noir} +\colorlet{CouleurAlgoCommentaire}{Noir} +\colorlet{CouleurAlgoDonnerValeur}{Noir} +\colorlet{CommentaireItemColor}{Noir} +\colorlet{FiletTableauColor}{Gris3} +\colorlet{FondSudokuColor}{FondTableaux} +\definecolor{FootFonctionColor}{cmyk}{0.50, 0.00, 0.00, 0.00} +\definecolor{FootGeometrieColor}{cmyk}{0.40, 0.40, 0.00, 0.00} +\definecolor{FootStatistiqueColor}{cmyk}{0.30, 0.48, 0.00, 0.10} +\definecolor{FootStatistiqueOLDColor}{cmyk}{0.48, 0.30, 0.10, 0.00} +\definecolor{FootStatistique*Color}{cmyk}{0.20, 0.00, 0.00, 0.00} +\colorlet{ChapterBottomFrameColor}{J4} +\colorlet{ThemaTopFrameColor}{J1} +\colorlet{ThemaBottomFrameColor}{J2} +\colorlet{ThemaTitleColor}{Blanc} +\colorlet{ChapterNumBkgColor}{H2} +\colorlet{ChapterNumSquare0Color}{Blanc} +\colorlet{ChapterNumSquare1Color}{H1} +\colorlet{ChapterNumSquare2Color}{H2} +\colorlet{ChapterNumSquare3Color}{H4} +\colorlet{ChapterTitleColor}{B1} +\colorlet{ChapAppColor}{Blanc} +\colorlet{ChapterNumColor}{Blanc} +\colorlet{PrerequisTitleColor}{B2} +\colorlet{PrerequisBkgColor}{A4} +\colorlet{PrerequisItemColor}{B2} +\colorlet{AEItemColor}{B2} +\colorlet{AETitleFrame0Color}{Blanc} +\colorlet{AETitleFrame1Color}{B2} +\colorlet{AETitleFrame2Color}{B3} +\colorlet{AETitleFrame3Color}{A4} +\colorlet{AETitleFrame4Color}{A3} +\colorlet{AETitleFrame5Color}{A2} +\colorlet{AETitleColor}{Blanc} +\colorlet{AEExoNumColor}{Blanc} +\colorlet{AEExoNumFrameColor}{J1} +\colorlet{AEFrameColor}{FondAutoEvaluation} +\colorlet{AECartoucheCorrBkgColor}{J2} +\colorlet{AECartoucheCorrArrowColor}{G2} +\colorlet{AECartoucheCorrVCPColor}{B2} +\colorlet{ActiviteHeadFrame0Color}{Blanc} +\colorlet{ActiviteHeadFrame1Color}{C1} +\colorlet{ActiviteHeadFrame2Color}{C2} +\colorlet{ActiviteHeadFrame3Color}{C3} +\colorlet{ActiviteHeadFrame4Color}{D3} +\colorlet{ActiviteHeadFrame5Color}{G1} +\definecolor{ActiviteFootColor}{cmyk}{0.50, 0.00, 0.25, 0.00} +\colorlet{FootChapterNumColor}{U1} +\colorlet{ActiviteSubtitleColor}{H1} +\colorlet{ActiviteNumColor}{Blanc} +\colorlet{ActiviteDebatTopColor}{G4} +\colorlet{ActiviteDebatBottomColor}{D4} +\colorlet{ActiviteActiviteTopColor}{D3} +\colorlet{ActiviteActiviteBottomColor}{G2} +\colorlet{ActiviteTitleColor}{C1} +\colorlet{ActiviteItemColor}{C1} +\colorlet{ActivitePartieColor}{A2} +\colorlet{CoursHeadFrame0Color}{Blanc} +\colorlet{CoursHeadFrame1Color}{J1} +\colorlet{CoursHeadFrame2Color}{J2} +\colorlet{CoursHeadFrame3Color}{J4} +\colorlet{CoursHeadFrame4Color}{A3} +\colorlet{CoursHeadFrame5Color}{A2} +\definecolor{CoursFootColor}{cmyk}{0.15, 0.00, 0.00, 0.03} +\colorlet{SectionFrame1Color}{J4} +\colorlet{SectionFrame2Color}{J2} +\colorlet{SectionFrame3Color}{J1} +\colorlet{SectionNumColor}{A1} +\colorlet{SectionTitleColor}{A1} +\colorlet{SubsectionNumColor}{B2} +\colorlet{SubsectionTitleColor}{J1} +\colorlet{DefSquareColor}{B2} +\colorlet{DefTitleColor}{A1} +\colorlet{DefSubtitleColor}{B2} +\colorlet{DefItemColor}{B2} +\colorlet{DefFrameColor}{J3} +\colorlet{RemTitleColor}{H1} +\colorlet{RemItemColor}{H1} +\colorlet{ExempleRuleColor}{J1} +\colorlet{ExempleEdgeFrameColor}{J2} +\colorlet{ExempleBkgFrameColor}{F4} +\colorlet{ExempleTitleColor}{A1} +\colorlet{ExempleItemColor}{J1} +\colorlet{MethodeTitleFrameColor}{A2} +\colorlet{MethodeTitleColor}{Blanc} +\colorlet{MethodeSubtitleColor}{B2} +\colorlet{MethodeIntroBkgFrameColor}{A4} +\colorlet{ExAppEdgeFrameColor}{A2} +\colorlet{ExAppBkgFrameColor}{H1} +\colorlet{ExAppTitleColor}{Blanc} +\colorlet{ExAppCorrEdgeFrameColor}{H1} +\colorlet{ExAppCorrBkgFrameColor}{A2} +\colorlet{ExAppCorrTitleColor}{Blanc} +\colorlet{ExAppItemColor}{A2} +\colorlet{MethodeRuleColor}{A3} +\colorlet{ProofRuleColor}{B1} +\colorlet{ProofTitleColor}{A1} +\colorlet{ProofTopFrameColor}{B4} +\colorlet{ProofBottomFrameColor}{B3} +\colorlet{ProofTriangleFrameColor}{B1} +\colorlet{ProofItemColor}{J2} +\colorlet{ExoBaseHeadFrame0Color}{Blanc} +\colorlet{ExoBaseHeadFrame1Color}{G1} +\colorlet{ExoBaseHeadFrame2Color}{G2} +\colorlet{ExoBaseHeadFrame3Color}{G4} +\colorlet{ExoBaseHeadFrame4Color}{J2} +\colorlet{ExoBaseHeadFrame5Color}{J1} +\definecolor{ExoBaseFootColor}{cmyk}{0.00, 0.25, 0.50, 0.00} +\colorlet{ExerciceColumnRuleColor}{J1} +\colorlet{ExercicesTitleColor}{C1} +\colorlet{ExercicesTitleVRuleColor}{G2} +\colorlet{ExercicesTitleSquareColor}{J1} +\colorlet{ExercicesTitleHRuleColor}{C3} +\colorlet{ExerciceNumColor}{Blanc} +\colorlet{ExerciceTitleColor}{F1} +\colorlet{ExerciceNumFrameColor}{G1} +\colorlet{ExerciceCorrigeNumFrameColor}{J1} +\colorlet{ExerciceItemColor}{G1} +\colorlet{ExercicePartieColor}{J1} +\colorlet{ExerciceRefMethodeColor}{A2} +\colorlet{ExoApprHeadFrame0Color}{Blanc} +\colorlet{ExoApprHeadFrame1Color}{G1} +\colorlet{ExoApprHeadFrame2Color}{G2} +\colorlet{ExoApprHeadFrame3Color}{G4} +\colorlet{ExoApprHeadFrame4Color}{J2} +\colorlet{ExoApprHeadFrame5Color}{J1} +\definecolor{ExoApprFootColor}{cmyk}{0.00, 0.25, 0.50, 0.00} +\colorlet{ConnHeadFrame0Color}{Blanc} +\colorlet{ConnHeadFrame1Color}{A2} +\colorlet{ConnHeadFrame2Color}{A3} +\colorlet{ConnHeadFrame3Color}{J2} +\colorlet{ConnHeadFrame4Color}{J1} +\colorlet{ConnHeadFrame5Color}{F1} +\colorlet{ConnFootColor}{F2} +\colorlet{AcquisTitleColor}{G1} +\colorlet{AcquisBkgColor}{A4} +\colorlet{AcquisItemColor}{F1} +\colorlet{QCMAEFrameColor}{G1} +\colorlet{QCMAETitleCircle1Color}{J1} +\colorlet{QCMAETitleCircle2Color}{J2} +\colorlet{QCMAETitleCircle3Color}{F1} +\colorlet{QCMAETitleColor}{Blanc} +\colorlet{QCMItemNumColor}{G1} +\colorlet{QCMFrameColor}{J1} +\colorlet{QCMTextFrameColor}{Blanc} +\colorlet{QCMExoNumColor}{Blanc} +\colorlet{QCMExoNumFrameColor}{J1} +\colorlet{QCMLineColor}{A4} +\colorlet{TPHeadFrame0Color}{Blanc} +\colorlet{TPHeadFrame1Color}{H1} +\colorlet{TPHeadFrame2Color}{H2} +\colorlet{TPHeadFrame3Color}{H3} +\colorlet{TPHeadFrame4Color}{C3} +\colorlet{TPHeadFrame5Color}{C2} +\definecolor{TPFootColor}{cmyk}{0.00, 0.30, 0.00, 0.10} +\colorlet{TPTopColor}{J3} +\colorlet{TPBottomColor}{C3} +\colorlet{TPTitleColor}{H1} +\colorlet{TPPartieColor}{J1} +\colorlet{TPPartieBkgColor}{C2} +\colorlet{TPPartieNumColor}{Blanc} +\colorlet{RecreationHeadFrame0Color}{Blanc} +\colorlet{RecreationHeadFrame1Color}{J1} +\colorlet{RecreationHeadFrame2Color}{J2} +\colorlet{RecreationHeadFrame3Color}{H4} +\colorlet{RecreationHeadFrame4Color}{H2} +\colorlet{RecreationHeadFrame5Color}{H1} +\definecolor{RecreationFootColor}{cmyk}{0.20, 0.00, 0.50, 0.05} +\colorlet{RecreationTitleColor}{H1} +\colorlet{RecreationItemColor}{U3} +\colorlet{RecreationPartieColor}{J1} +\colorlet{CorrigeHeadFrameColor}{J2} +\colorlet{CorrigeColumnRuleColor}{J1} +\colorlet{CorrigeAETitleColor}{F1} +\colorlet{CorrigeExercicesBaseTitleColor}{C2} +\colorlet{CorrigeExercicesApprTitleColor}{C2} +\colorlet{CorrigeConnaissancesTitleColor}{G1} +\colorlet{CorrigeQCMItemNumColor}{G1} +\colorlet{ListeMethodeHeadFrameColor}{G3} +\colorlet{ListeMethodeColumnRuleColor}{A1} +\colorlet{ListeMethodeTitleColor}{B2} +\colorlet{TablePropertyBkgColor}{J4} +\colorlet{TablePropertyTitleBkgColor}{PartieStatistique} +\colorlet{TablePropertyTitleTextColor}{Blanc} +\colorlet{AnnexePartieColor}{A1} +\colorlet{LexiqueHeadFrameColor}{F2} +\colorlet{LexiqueColumnRuleColor}{B2} +\colorlet{FirstLetterTxtColor}{B1} +\colorlet{FirstLetterBkgColor}{J3} +\colorlet{LexiqueEntreeColor}{B2} +\colorlet{LexiqueItemColor}{B2} +\colorlet{LibrePartieColor}{A1} +\newcommand*\AlgoFont{\fontsize{9.5}{9.5}\sffamily\bfseries} +\newcommand*\TiceFont{\fontsize{9.5}{9.5}\sffamily\bfseries} +\newcommand*\ThemaTitleFont{\fontsize{20}{24}\sffamily} +\newcommand*\ChapterTitleFont{\fontsize{40}{40}\sffamily\bfseries} +\newcommand*\ChapAppFont{\fontsize{15}{18}\sffamily} +\newcommand*\ChapterNumFont{\fontsize{88}{106}\sffamily} +\newcommand*\PrerequisTitleFont{\fontsize{14.4}{17.28}\sffamily\bfseries} +\newcommand*\PrerequisTextFont{\fontsize{9.5}{14.4}\sffamily} +\newcommand*\AETitleFont{\fontsize{15}{18}\sffamily\bfseries} +\newcommand*\AEExoNumFont{\fontsize{9.5}{14.4}\sffamily\bfseries} +\newcommand*\AECartoucheCorrArrowFont{\fontsize{12}{14.4}} +\newcommand*\AECartoucheCorrVCPFont{\fontsize{9.5}{14.4}\sffamily} +\newcommand*\AEManuelFont{\fontsize{9.5}{10.5}\sffamily} +\newcommand*\LogoManuelFont{\fontsize{9.5}{10.5}\sffamily\bfseries} +\newcommand*\LogoURLManuelFont{\fontsize{9.5}{10.5}\sffamily\bfseries} +\newcommand*\HeadTitleFont{\fontsize{24}{28.8}\sffamily\bfseries} +\newcommand*\RoundHeadTitleFont{\fontsize{24}{28.8}\sffamily\bfseries\itshape} +\newcommand*\FootChapterNumFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\FootTitleHeadFont{\fontsize{9.5}{12}\sffamily\bfseries} +\newcommand*\FootTitleChapterFont{\fontsize{9.5}{12}\sffamily} +\newcommand*\FootPageFont{\fontsize{9.5}{12}\sffamily\bfseries} +\newcommand*\ActiviteTitleFont{\fontsize{15}{18}\sffamily\bfseries} +\newcommand*\ActiviteNumFont{\fontsize{15}{18}\sffamily\bfseries} +\newcommand*\ActiviteSubtitleFont{\fontsize{15}{18}\sffamily\bfseries} +\newcommand*\ActivitePartieFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\SectionNumFont{\fontsize{21}{25}\sffamily\bfseries} +\newcommand*\SectionTitleFont{\fontsize{17.28}{21}\sffamily\bfseries} +\newcommand*\SubsectionNumFont{\fontsize{17.28}{21}\sffamily\bfseries} +\newcommand*\SubsectionTitleFont{\fontsize{14.4}{17.28}\sffamily\bfseries} +\newcommand*\DefTitleFont{\fontsize{12}{14.4}\sffamily} +\newcommand*\DefSubtitleFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\RemTitleFont{\fontsize{9.5}{14.4}\scshape\bfseries} +\newcommand*\ExempleTitleFont{\fontsize{9.5}{14.4}\sffamily} +\newcommand*\MethodeTitleFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\MethodeSubtitleFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\MethodeRefExerciceFont{\fontsize{9.5}{14.4}\sffamily} +\newcommand*\ExAppTitleFont{\normalsize\sffamily} +\newcommand*\ExAppCorrTitleFont{\normalsize\sffamily} +\newcommand*\ProofTitleFont{\fontsize{9.5}{14.4}\sffamily} +\newcommand*\ExercicesTitleFont{\fontsize{14.4}{17.28}\sffamily\bfseries} +\newcommand*\ExerciceNumFont{\fontsize{10.5}{14.4}\sffamily\bfseries} +\newcommand*\ExerciceTitleFont{\fontsize{10.5}{14.4}\sffamily\bfseries} +\newcommand*\ExercicePartieFont{\fontsize{10.5}{14.4}\bfseries} +\newcommand*\ExerciceRefMethodeFont{\fontsize{9.5}{14.4}\sffamily\bfseries} +\newcommand*\ExercicePageRefMethodeFont{\fontsize{9.5}{14.4}\sffamily} +\newcommand*\AcquisTitleFont{\fontsize{17.28}{17.28}\sffamily\bfseries} +\newcommand*\AcquisTextFont{\fontsize{9.5}{14.4}\sffamily} +\newcommand*\QCMAETitleFont{\fontsize{20}{20}\sffamily\bfseries} +\newcommand*\QCMAEManuelFont{\fontsize{9.5}{10.5}\sffamily} +\newcommand*\QCMAETextAfterTitleFont{\bfseries} +\newcommand*\QCMExoNumFont{\fontsize{9.5}{14.4}\sffamily\bfseries} +\newcommand*\QCMItemNumFont{\fontsize{9.5}{14.4}\sffamily\bfseries} +\newcommand*\TPPartieFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\RecreationFont{\fontsize{20}{20}\scriptfamily\bfseries} +\newcommand*\RecreationTitleFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\RecreationPartieFont{\fontsize{10}{14.4}\scshape\bfseries} +\newcommand*\RecreationPartieTitleFont{\fontsize{10}{14.4}\bfseries} +\newcommand*\ListeMethodeChapterFont{\fontsize{40}{40}\sffamily} +\newcommand*\ListeMethodeTitleFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\ListeMethodePageFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\CorrigeTitleFont{\fontsize{40}{40}\sffamily} +\newcommand*\CorrigeChapterFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\CorrigePartieFont{\fontsize{11}{14.4}\sffamily\bfseries} +\newcommand*\CorrigeNumExerciceFont{\fontsize{9.5}{14.4}\sffamily\bfseries} +\newcommand*\CorrigeQCMItemNumFont{\fontsize{9.5}{14.4}\sffamily} +\newcommand*\FootAnnexeTxtFont{\fontsize{11}{14.4}\sffamily} +\newcommand*\FootAnnexePageFont{\fontsize{11}{14.4}\sffamily\bfseries} +\newcommand*\AnnexeTitleFont{\fontsize{35}{35}\sffamily} +\newcommand*\AnnexeSectionTitleFont{\fontsize{14.4}{14.4}\sffamily\bfseries} +\newcommand*\ProprieteFont{\fontsize{10}{14.4}\sffamily} +\newcommand*\NumProprieteFont{\fontsize{10}{14.4}\sffamily\bfseries} +\newcommand*\AnnexePartieFont{\fontsize{10.5}{14.4}\bfseries} +\newcommand*\LexiqueTitleFont{\fontsize{50}{50}\sffamily} +\newcommand*\FirstLetterFont{\fontsize{16}{16}\sffamily\bfseries} +\newcommand*\LexiqueEntreeFont{\fontsize{12}{14.4}\sffamily\bfseries} +\newcommand*\LexiqueFont{\sffamily\upshape\bfseries} +\newcommand*\FootLibrePageFont{\fontsize{11}{14.4}\sffamily\bfseries} +\newcommand*\LibreSectionTitleFont{\fontsize{14.4}{14.4}\sffamily\bfseries} +\newcommand*\LibrePartieFont{\fontsize{10.5}{14.4}\bfseries} +\def\SquareWidth{3mm} +\def\ItemRuleWidth{1.5mm} +\def\ItemRuleHeight{1.5mm} +\def\ItemRuleDepth{0mm} +\def\ListLabelWidth{4mm} +\def\EnumerateLabelWidth{5mm} +\def\ListHSep{2mm} +\def\AlgorithmeRuleWidth{1pt} +\def\AlgorithmeSep{2mm} +\def\AlgorithmeNumWidth{6mm} +\def\HeadFrameWidth{11cm} +\def\RoundHeadFrameWidth{12.8cm} +\def\HeadTitleSep{1cm} +\edef\HeadTitleMaxWidth + {\the\dimexpr \HeadFrameWidth-\SquareWidth*3-\HeadTitleSep} +\edef\RoundHeadTitleMaxWidth + {\the\dimexpr \RoundHeadFrameWidth-\SquareWidth*3-\HeadTitleSep} +\edef\HeadFrameHeight{\the\dimexpr \smc@margintop-\smc@headsep} +\def\HeadFrameDepth{3mm} +\def\FootFrameWidth{6mm} +\def\FootFrameSep{1mm} +\def\AlgoIndent{1em} +\def\CadreSep{2mm} +\def\CadreLineWidth{0.5mm} +\def\FrameSep{3mm} +\def\FrameLineWidth{1pt} +\edef\FrameArc{\the\dimexpr \SquareWidth/2} +\def\RuleWidth{1pt} +\def\BeforeCadreVSpace{1.5mm} +\def\AfterCadreVSpace{1.5mm} +\def\BeforeTableVSpace{1.5mm} +\def\AfterTableVSpace{1.5mm} +\def\HabillageGap{2mm} +\def\LogoLineWidth{1pt} +\def\BeforeAlgorithmeVSpace{1.5mm} +\def\AfterAlgorithmeVSpace{1.5mm} +\edef\ChapterTopFrameHeight{\the\dimexpr 2.1cm+\smc@bleed} +\def\ChapterBottomFrameHeight{6cm} +\edef\ChapterTotalFrameHeight{% + \the\dimexpr\ChapterTopFrameHeight+\ChapterBottomFrameHeight} +\def\ChapterBottomPicture{5.5cm} +\def\ChapterNumLeftFrame{13.4cm} +\AtBeginDocument{% + \edef\ChapterTitleThemaWidth{% + \the\dimexpr\linewidth-\ChapterNumLeftFrame-6mm + }% +} +\def\ChapterNumBase{3.6cm} +\def\ChapterNumBottomFrame{2.1cm} +\edef\ChapterNumTopFrame{\the\dimexpr 8.1cm+\smc@bleed} +\def\ChapterTitleBase{2.1cm} +\def\ChapterTitleSep{1cm} +\def\ThemaBottomFrame{5.7cm} +\def\ThemaTopFrame{6.6cm} +\def\PrerequisTitleVSpace{1mm} +\def\AETitleWidth{8cm} +\edef\AETitleHeight{\the\dimexpr \SquareWidth*3} +\def\AEFrameVSep{4mm} +\edef\AEFrameHSep{\SquareWidth} +\edef\AEFrameRuleWidth{\the\dimexpr\SquareWidth/2} +\edef\AEExoFrameWidth{\the\dimexpr \SquareWidth*2} +\def\AEExoFrameTopSep{1mm} +\def\AfterAEExoFrameHSpace{2mm} +\def\AECartoucheCorrSep{4mm} +\def\AECartoucheCorrHeight{6mm} +\def\AECartoucheCorrWidth{50mm} +\def\AEManuelWidth{55mm} +\def\AEManuelRightSpace{1mm} +\def\AELogoManuelWidth{9mm} +\def\AfterAEManuelVSpace{3mm} +\def\BeforeActiviteVSpace{5mm} +\newdimen\ActiviteTitleTopHeight +\ActiviteTitleTopHeight 6mm +\def\ActiviteTitleBottomHeight{1.5mm} +\def\ActiviteTitleLeftSpace{2mm} +\def\ActiviteTitleRightSpace{1mm} +\def\AfterActiviteTitleHSpace{2mm} +\def\AfterActiviteTitleVSpace{3mm} +\def\BeforeActivitePartieVSpace{1.5mm} +\def\AfterActivitePartieVSpace{1mm} +\def\BeforeSectionVSpace{10mm} +\def\AfterSectionVSpace{2mm} +\def\SectionNumTitleHSpace{3mm} +\def\SectionCorrectionChassePoint{-0.25pt} +\def\BeforeSubsectionVSpace{4mm} +\def\AfterSubsectionVSpace{1mm} +\def\BeforeDefVSpace{3mm} +\def\AfterDefVSpace{1.5mm} +\def\DefFrameHSep{3mm} +\def\DefFrameVSep{1mm} +\def\DefTitleFrameVSep{1mm} +\def\BeforeRemVSpace{3mm} +\def\AfterRemVSpace{1.5mm} +\def\BeforeExempleVSpace{4mm} +\def\ExempleVRuleWidthFrame{1.25mm} +\def\ExempleHRuleWidthFrame{0.75mm} +\def\ExempleWidthFrame{15mm} +\def\ExempleHeightFrame{3mm} +\def\BeforeMethodeVSpace{3mm} +\edef\MethodeTitleLeftSpace{\SquareWidth} +\edef\MethodeTitleRightSpace{\SquareWidth} +\def\MethodeSubtitleLeftSpace{2mm} +\def\AfterMethodeTitleVspace{1.5mm} +\def\MethodeFrameHSep{3mm} +\def\MethodeFrameTopSep{2mm} +\def\MethodeFrameBottomSep{1mm} +\def\ExAppWidthFrame{30mm} +\def\ExAppHeightFrame{3mm} +\def\ExAppDepthFrame{0.75mm} +\def\ExAppCorrWidthFrame{15mm} +\def\ExAppCorrHeightFrame{3mm} +\def\ExAppCorrDepthFrame{0.75mm} +\def\AfterCartoucheHSpace{1.5mm} +\def\AfterExAppMethodeVSpace{3mm} +\def\BeforeProofVSpace{3mm} +\def\AfterProofVSpace{1.5mm} +\def\ProofHeightFrame{3mm} +\def\ProofDepthFrame{0.75mm} +\def\ProofLeftSpace{1mm} +\def\ProofRightSpace{1.5mm} +\def\AfterProofTitleHSpace{1.5mm} +\def\BeforeExercicesTitleVSpace{3mm} +\def\AfterExercicesTitleVSpace{1.5mm} +\def\ExercicesTitleHSep{3mm} +\def\ExercicesTitleVSep{2mm} +\def\BeforeExerciceVSpace{1.5mm} +\def\ExerciceNumFrameWidth{6mm} +\def\ExerciceNumFrameHeight{3.25mm} +\def\ExerciceNumFrameDepth{0.75mm} +\def\ExerciceTextHSep{2mm} +\def\BeforeExercicePartieVSpace{1.5mm} +\def\AfterExercicePartieVSpace{1mm} +\def\AcquisTitleVSpace{1mm} +\def\BeforeQCMAEVSpace{6mm plus2mm minus2mm} +\def\QCMAETitleHeight{9mm} +\def\QCMAETitleWidth{110mm} +\def\QCMAETitleLeftSpace{17mm} +\def\QCMAEManuelWidth{40mm} +\def\QCMAEManuelRightSpace{1mm} +\def\QCMAELogoManuelWidth{9mm} +\def\AfterQCMAEManuelVSpace{0mm} +\def\AfterQCMAETitleVSpace{5mm plus2mm minus1mm} +\def\AfterQCMAETextVSpace{3mm plus1mm minus1mm} +\def\QCMRefHSep{1pt} +\edef\QCMExoFrameWidth{\the\dimexpr \SquareWidth*2} +\def\QCMExoFrameTopSep{1mm} +\def\AfterQCMExoFrameHSpace{2mm} +\def\QCMLabelWidth{6mm} +\def\BeforeQCMVSpace{2mm plus1mm minus1mm} +\def\AfterQCMVSpace{0mm plus1mm} +\def\QCMLineWidth{2mm} +\def\QCMFrameSep{1mm} +\edef\QCMLineArc{\SquareWidth} +\def\BeforeTPPartieVSpace{3mm plus1mm minus1mm} +\def\AfterTPPartieVSpace{0mm plus1mm} +\def\TPPartieHSep{2mm} +\def\BeforeRecreationVSpace{6mm} +\def\AfterRecreationVSpace{3mm} +\def\BeforeRecreationPartieVSpace{1.5mm minus 1mm} +\def\AfterRecreationPartieVSpace{1mm minus 0.5mm} +\def\ListeMethodeRuleWidth{0.2pt} +\def\AfterMethodeVSpace{3pt} +\def\TriangleMethodeSize{1ex} +\def\CorrigeRuleWidth{0.2pt} +\def\CorrigeHeadFrameWidth{9mm} +\def\CorrigeChapterFrameHeight{5mm} +\def\BeforeCorrigePartieTitleVSpace{1mm minus 0.5mm} +\def\BeforeCorrigeChapterVspace{3mm plus1mm minus1mm} +\def\QCMHSep{1mm} +\def\BeforeAnnexeTitleVSpace{-20mm} +\def\AfterAnnexeTitleVSpace{0mm plus0.5mm} +\edef\AnnexeSectionRuleWidth{\SquareWidth} +\def\AnnexeSectionRuleHSpace{1mm} +\def\BeforeAnnexeSectionVSpace{5mm} +\def\AfterAnnexeSectionVSpace{2mm} +\def\BeforeAnnexePartieVSpace{1.5mm} +\def\AfterAnnexePartieVSpace{1mm} +\def\LexiqueRuleWidth{0.2pt} +\def\AfterFirstLetterVSpace{2mm} +\def\BeforeFirstLetterVSpace{2mm} +\def\FirstLetterFrameHSep{1mm} +\def\AfterEntreeVSpace{5mm} +\edef\LibreSectionRuleWidth{\SquareWidth} +\def\LibreSectionRuleHSpace{1mm} +\def\BeforeLibreSectionVSpace{5mm} +\def\AfterLibreSectionVSpace{2mm} +\def\BeforeLibrePartieVSpace{1.5mm} +\def\AfterLibrePartieVSpace{1mm} +\newcommand*\StringColitemize{colitemize} +\newcommand*\StringColenumerate{colenumerate} +\newcommand*\StringPrerequis{Connaissances du coll\`ege + n\'ecessaires \`a ce chapitre} +\newcommand*\StringActivitesApproche{Activit\'es d'approche} +\newcommand*\StringCoursMethodes{Cours~-~M\'ethodes} +\newcommand*\StringExercicesBase{S'entra\^iner} +\newcommand*\StringExercicesAppr{Approfondir} +\newcommand*\StringTestConnaissances{Je teste mes connaissances} +\newcommand*\StringConnaissances{Auto-\'evaluation QCM} +\newcommand*\StringTravauxPratiques{Travaux pratiques} +\newcommand*\StringAE{Auto-\'evaluation} +\newcommand*\StringVoirCorriges{Voir solutions p.} +\newcommand*\StringManuel{Des ressources num\'eriques pour pr\'eparer + le chapitre sur + \textcolor{U4}{\LogoURLManuelFont manuel.sesamath.net}} +\newcommand*\StringALGO{ALGO} +\newcommand*\StringTICE{INFO} +\newcommand*\StringRecreation{R\'ecr\'eation, \'enigmes} +\newcommand*\StringAcquisTitle{\`A la fin de ce chapitre, je dois + \^etre capable de\,:} +\newcommand*\StringQCMAE{QCM d'auto-\'evaluation} +\newcommand*\StringQCM{QCM} +\newcommand*\StringChapitre{Chapitre} +\newcommand*\StringEnigme{\'Enigme} +\newcommand*\StringPropriete{Propri\'et\'e} +\newcommand*\StringPROPRIETE{PROPRI\'ET\'E} +\newcommand*\StringDEFINITION{D\'EFINITION} +\newcommand*\StringTHEOREME{TH\'EOR\`EME} +\newcommand*\StringLexique{Lexique} +\newcommand*\LogoManuel{\textcolor{U4}{\LogoManuelFont @}} +\newcommand\StringDEBAT{D\'EBAT} +\newcommand\StringACTIVITE{ACTIVIT\'E} +\newcommand\StringTP{TP} +\newcommand*\StringExemple{Exemple} +\newcommand*\StringCorrection{Correction} +\newcommand*\StringMETHODE{M\'ETHODE} +\newcommand*\StringPREUVE{PREUVE} +\newcommand*\StringMethode{M\'ethode} +\newcommand*\StringExApp{Exercice d'application} +\newcommand*\StringPartie{Partie} +\newcommand*\StringListeMethode{Liste des m\'ethodes} +\newcommand*\StringCorriges{Solutions} +\newcommand*\StringListeMethodeF{Fonctions} +\newcommand*\StringListeMethodeG{G\'eom\'etrie} +\newcommand*\StringListeMethodeSP{Stat. et probabilit\'es} +\def\smc@diagonal(#1,#2)#3{% + \psframe[linewidth=0pt, linestyle=none, fillcolor=#33Color] + (\dimexpr #1, \dimexpr #2) + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#32Color] + (\dimexpr #1+\SquareWidth, \dimexpr #2) + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#31Color] + (\dimexpr #1+\SquareWidth*2, \dimexpr #2) + (\dimexpr #1+\SquareWidth*3, \dimexpr #2+\SquareWidth) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#34Color] + (\dimexpr #1, \dimexpr #2+\SquareWidth) + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth*2) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#33Color] + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth) + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth*2) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#32Color] + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth) + (\dimexpr #1+\SquareWidth*3, \dimexpr #2+\SquareWidth*2) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#35Color] + (\dimexpr #1, \dimexpr #2+\SquareWidth*2) + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth*3) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#34Color] + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth*2) + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth*3) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#33Color] + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth*2) + (\dimexpr #1+\SquareWidth*3, \dimexpr #2+\SquareWidth*3) + \ignorespaces +} +\def\smc@antidiagonal(#1,#2)#3{% + \psframe[linewidth=0pt, linestyle=none, fillcolor=#31Color] + (\dimexpr #1, \dimexpr #2) + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#32Color] + (\dimexpr #1+\SquareWidth, \dimexpr #2) + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#33Color] + (\dimexpr #1+\SquareWidth*2, \dimexpr #2) + (\dimexpr #1+\SquareWidth*3, \dimexpr #2+\SquareWidth) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#32Color] + (\dimexpr #1, \dimexpr #2+\SquareWidth) + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth*2) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#33Color] + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth) + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth*2) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#34Color] + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth) + (\dimexpr #1+\SquareWidth*3, \dimexpr #2+\SquareWidth*2) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#33Color] + (\dimexpr #1, \dimexpr #2+\SquareWidth*2) + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth*3) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#34Color] + (\dimexpr #1+\SquareWidth, \dimexpr #2+\SquareWidth*2) + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth*3) + \psframe[linewidth=0pt, linestyle=none, fillcolor=#35Color] + (\dimexpr #1+\SquareWidth*2, \dimexpr #2+\SquareWidth*2) + (\dimexpr #1+\SquareWidth*3, \dimexpr #2+\SquareWidth*3) + \ignorespaces +} +\def\smc@rounddiagonal(#1,#2)#3{% + \pscircle*[linecolor=#33Color] + (\dimexpr #1+\SquareWidth/2, + \dimexpr #2+\SquareWidth/2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#32Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth, + \dimexpr #2+\SquareWidth/2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#31Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth*2, + \dimexpr #2+\SquareWidth/2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#34Color] + (\dimexpr #1+\SquareWidth/2, + \dimexpr #2+\SquareWidth/2+\SquareWidth) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#33Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth, + \dimexpr #2+\SquareWidth/2+\SquareWidth) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#32Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth*2, + \dimexpr #2+\SquareWidth/2+\SquareWidth) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#35Color] + (\dimexpr #1+\SquareWidth/2, + \dimexpr #2+\SquareWidth/2+\SquareWidth*2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#34Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth, + \dimexpr #2+\SquareWidth/2+\SquareWidth*2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#33Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth*2, + \dimexpr #2+\SquareWidth/2+\SquareWidth*2) + {\dimexpr \SquareWidth/2} + \ignorespaces +} +\def\smc@roundantidiagonal(#1,#2)#3{% + \pscircle*[linecolor=#31Color] + (\dimexpr #1+\SquareWidth/2, + \dimexpr #2+\SquareWidth/2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#32Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth, + \dimexpr #2+\SquareWidth/2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#33Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth*2, + \dimexpr #2+\SquareWidth/2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#32Color] + (\dimexpr #1+\SquareWidth/2, + \dimexpr #2+\SquareWidth/2+\SquareWidth) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#33Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth, + \dimexpr #2+\SquareWidth/2+\SquareWidth) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#34Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth*2, + \dimexpr #2+\SquareWidth/2+\SquareWidth) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#33Color] + (\dimexpr #1+\SquareWidth/2, + \dimexpr #2+\SquareWidth/2+\SquareWidth*2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#34Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth, + \dimexpr #2+\SquareWidth/2+\SquareWidth*2) + {\dimexpr \SquareWidth/2} + \pscircle*[linecolor=#35Color] + (\dimexpr #1+\SquareWidth/2+\SquareWidth*2, + \dimexpr #2+\SquareWidth/2+\SquareWidth*2) + {\dimexpr \SquareWidth/2} + \ignorespaces +} +\newcommand*\themaF{% + \cleardoubleoddpage + \def\smc@thema{fonctions}% + \def\smc@themacap{FONCTIONS}% + \def\smc@thema@init{f}% + \def\smc@thema@initcap{F}% + \smc@themaFColor + \setcounter{chapter}{0}% +} +\newcommand*\smc@themaFColor{% + \def\CorrigeChapterFrameColor{PartieFonction}% + \def\CorrigeChapterTextColor{Blanc}% + \colorlet{ChapterNumFrameColor}{PartieFonction}% + \colorlet{FootTitleHeadColor}{PartieFonction}% + \colorlet{ChapterTopFrameColor}{A3}% + \colorlet{ChapterNumSquare4Color}{A3}% + \colorlet{ChapterNumSquare5Color}{PartieFonction}% + \colorlet{FirstChapterFootColor}{FootFonctionColor}% +} +\newcommand*\themaG{% + \cleardoubleoddpage + \def\smc@thema{g\'eom\'etrie}% + \def\smc@themacap{G\'EOM\'ETRIE}% + \def\smc@thema@init{g}% + \def\smc@thema@initcap{G}% + \smc@themaGColor + \setcounter{chapter}{0}% +} +\newcommand*\smc@themaGColor{% + \def\CorrigeChapterFrameColor{PartieGeometrie}% + \def\CorrigeChapterTextColor{Blanc}% + \colorlet{ChapterNumFrameColor}{PartieGeometrie}% + \colorlet{FootTitleHeadColor}{PartieGeometrie}% + \colorlet{ChapterTopFrameColor}{G3}% + \colorlet{ChapterNumSquare4Color}{G3}% + \colorlet{ChapterNumSquare5Color}{PartieGeometrie}% + \colorlet{FirstChapterFootColor}{FootGeometrieColor}% +} +\newcommand*\themaS{% + \cleardoubleoddpage + \def\smc@thema{statistiques\\probabilit\'es}% + \def\smc@themacap{STATISTIQUES\\PROBABILIT\'ES}% + \def\smc@thema@init{sp}% + \def\smc@thema@initcap{SP}% + \smc@themaSColor + \setcounter{chapter}{0}% +} +\newcommand*\smc@themaSColor{% + \def\CorrigeChapterFrameColor{PartieStatistique}% + \def\CorrigeChapterTextColor{Blanc}% + \colorlet{ChapterNumFrameColor}{PartieStatistique}% + \colorlet{FootTitleHeadColor}{PartieStatistique}% + \colorlet{ChapterTopFrameColor}{U2}% + \colorlet{ChapterNumSquare4Color}{U2}% + \colorlet{ChapterNumSquare5Color}{PartieStatistique}% + \colorlet{FirstChapterFootColor}{FootStatistiqueColor}% +} +\newcommand*\themaL{% + \def\smc@thema{}% + \def\smc@themacap{}% + \def\smc@thema@init{l}% + \def\smc@thema@initcap{L}% + \smc@themaLColor + \setcounter{chapter}{0}% +} +\newcommand*\smc@themaLColor{% + \def\CorrigeChapterFrameColor{Blanc}% + \def\CorrigeChapterTextColor{Blanc}% + \colorlet{ChapterNumFrameColor}{Blanc}% + \colorlet{FootTitleHeadColor}{Blanc}% + \colorlet{ChapterTopFrameColor}{Blanc}% + \colorlet{ChapterNumSquare4Color}{Blanc}% + \colorlet{ChapterNumSquare5Color}{Blanc}% + \colorlet{FirstChapterFootColor}{Blanc}% +} +\newcommand*\NewThema[7]{% + \ifcsname thema#1\endcsname + \ClassError{sesamanuel} + {le theme \string\thema#1 existe deja} + {Vous ne pouvez pas creer un theme deja existant.}% + \else + \protected@write\@auxout{} + {% + \protect\expandafter + \protect\newif \protect\csname ifsmc@lom#2\protect\endcsname + }% + \expandafter \newif \csname ifsmc@lom#2\endcsname + \@namedef{smc@thema#1Color}{% + \def\CorrigeChapterFrameColor{#6}% + \def\CorrigeChapterTextColor{Blanc}% + \colorlet{ChapterNumFrameColor}{#6}% + \colorlet{FootTitleHeadColor}{#6}% + \colorlet{ChapterTopFrameColor}{#7}% + \colorlet{ChapterNumSquare4Color}{#7}% + \colorlet{ChapterNumSquare5Color}{#6}% + \colorlet{FirstChapterFootColor}{#7}% + }% + \expandafter\def\csname thema#1\endcsname{% + \cleardoubleoddpage + \def\smc@thema{#3}% + \edef\smc@themacap{#5}% + \def\smc@thema@init{#2}% + \def\smc@thema@initcap{#1}% + \def\CorrigeChapterFrameColor{#6}% + \expandafter\def\csname StringListeMethode#1\endcsname{#4}% + \def\CorrigeChapterTextColor{Blanc}% + \colorlet{ChapterNumFrameColor}{#6}% + \colorlet{FootTitleHeadColor}{#6}% + \colorlet{ChapterTopFrameColor}{#7}% + \colorlet{ChapterNumSquare4Color}{#7}% + \colorlet{ChapterNumSquare5Color}{#6}% + \colorlet{FirstChapterFootColor}{#7}% + }% + \fi +} +\newcommand\smc@fixwidth[2]{% + \smc@dima=0pt + \expandafter\smc@@width#2\\\@nil\\% + \setbox0=\hbox{% + \minipage[b]{\smc@dima} + #2% + \endminipage + }% + \smc@dima=\dimexpr\ht0+\dp0\relax + \psscaleboxto(#1,\the\smc@dima){% + \unhbox0 + }% + \ignorespaces +} +\def\smc@@width#1\\{% + \def\smc@arg{#1}% + \unless\ifx\smc@arg\@nnil + \setbox0=\hbox{#1}% + \ifdim\wd0>\smc@dima + \smc@dima=\wd0\relax + \fi + \expandafter\smc@@width + \fi +} +\newcommand\smc@fixwidthcenter[2]{% + \smc@dima=0pt + \expandafter\smc@@width#2\\\@nil\\% + \setbox0=\hbox{% + \minipage[b]{\smc@dima} + \centering + #2% + \endminipage + }% + \smc@dima=\dimexpr\ht0+\dp0\relax + \psscaleboxto(#1,\the\smc@dima){% + \unhbox0 + }% + \ignorespaces +} +\renewcommand*\@makechapterhead[1]{% + \def\smc@chaptertitle{#1}% + \addtocontents{cor}{% + \protect\smc@corrigechapter{% + \StringChapitre{} + \smc@thema@initcap\the\c@chapter} + {\smc@chaptertitle}% + {\CorrigeChapterFrameColor}% + {\CorrigeChapterTextColor}% + }% + \begin{pspicture}(0,0)(\linewidth,\ChapterBottomPicture) + \psset{linewidth=0pt,linestyle=none,fillstyle=solid} + \psframe[fillcolor=ChapterTopFrameColor] + (\dimexpr-\smc@bleed-\smc@marginleft,\ChapterBottomFrameHeight) + (\dimexpr\linewidth+\smc@marginright+\smc@bleed, + \ChapterTotalFrameHeight) + \psframe[fillcolor=ChapterBottomFrameColor] + (\dimexpr-\smc@bleed-\smc@marginleft,0) + (\dimexpr\linewidth+\smc@marginright+\smc@bleed, + \ChapterBottomFrameHeight) + \psframe[fillcolor=ChapterNumBkgColor] + (\ChapterNumLeftFrame,0) + (\linewidth,\ChapterTotalFrameHeight) + \psframe[fillcolor=ChapterNumFrameColor] + (\ChapterNumLeftFrame,\ChapterNumBottomFrame) + (\linewidth,\ChapterNumTopFrame) + \smc@antidiagonal(\ChapterNumLeftFrame,\ChapterNumBottomFrame) + {ChapterNumSquare} + \rput[B](\dimexpr \linewidth/2+\ChapterNumLeftFrame/2, + \ChapterBottomFrameHeight) + {\textcolor{ThemaTitleColor} + {% + \ChapAppFont + \smc@fixwidthcenter{\ChapterTitleThemaWidth} + {\smc@themacap}% + }% + } + \rput[B](\dimexpr \linewidth/2+\ChapterNumLeftFrame/2, + \ChapterNumBase) + {\textcolor{ChapterNumColor} + {\ChapterNumFont \thechapter}} + \rput[Bl](0,\ChapterTitleBase){% + \begin{minipage}[b]{\dimexpr\ChapterNumLeftFrame-\ChapterTitleSep} + \ChapterTitleFont \color{ChapterTitleColor}#1% + \end{minipage} + } + \end{pspicture} + \thispagestyle{firstchapter} +} +\newenvironment{prerequis}[1][\StringPrerequis] +{% + \par\vspace*{\stretch{1}} + \let\itemize\smc@prerequisitemize + \let\enditemize\endsmc@prerequisitemize + \let\colitemize\smc@prerequiscolitemize + \let\endcolitemize\endsmc@prerequiscolitemize + \let\enumerate\smc@prerequisenumerate + \let\endenumerate\endsmc@prerequisenumerate + \let\colenumerate\smc@prerequiscolenumerate + \let\endcolenumerate\endsmc@prerequiscolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Prerequis}% + {% + \PrerequisTitleFont + \textcolor{PrerequisTitleColor}{#1}% + \par\vspace{\PrerequisTitleVSpace}% + }% + \edef\FrameSep{\SquareWidth}% + \smc@cadre{PrerequisBkgColor} + \vspace*{-4.5pt} + \begin{multicols}{2} + \PrerequisTextFont +} +{% + \end{multicols}% + \endsmc@cadre + \par +} +\newenvironment{autoeval} +{% + \addtocontents{cor}{\protect\smc@corrigeautoeval}% + \par\vspace{\stretch{1}} + \begingroup + \linewidth=\AETitleWidth + \def\FrameSep{0pt}% + \edef\FrameArc{\the\dimexpr \SquareWidth/2}% + \def\FrameLineWidth{0pt}% + \begin{smc@cadre}[0,0,10,10]{AETitleFrame1Color}% + \minipage[b][\AETitleHeight]{\AETitleWidth}% + \begin{pspicture}(0,0)(\dimexpr\SquareWidth*3,\dimexpr\SquareWidth*2) + \smc@rounddiagonal(0mm,0mm){AETitleFrame}% + \end{pspicture}% + \hspace*{\stretch{1}}% + \AETitleFont + \raisebox{\dimexpr\SquareWidth*3/4}{\textcolor{AETitleColor}{\StringAE}}% + \hspace*{\stretch{1}}% + \endminipage + \end{smc@cadre} + \endgroup + \hspace*{\stretch{1}}% + \begin{minipage}[b]{\AEManuelWidth} + \raggedright + \AEManuelFont + \StringManuel + \par\vspace*{\AfterAEManuelVSpace} + \end{minipage}% + \hspace{\AEManuelRightSpace}% + \raisebox{\AfterAEManuelVSpace} + {\psscaleboxto(\AELogoManuelWidth,0){\LogoManuel}}% + \\[-1pt] + \let\itemize\smc@AEitemize + \let\enditemize\endsmc@AEitemize + \let\colitemize\smc@AEcolitemize + \let\endcolitemize\endsmc@AEcolitemize + \let\enumerate\smc@AEenumerate + \let\endenumerate\endsmc@AEenumerate + \let\colenumerate\smc@AEcolenumerate + \let\endcolenumerate\endsmc@AEcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@AEexercice + \let\endexercice\endsmc@AEexercice + \let\corrige\smc@AEcorrige + \let\endcorrige\endsmc@AEcorrige + \def\smc@currpart{AE}% + \begin{lrbox}{\smc@boxa} + \minipage[b]{\dimexpr\linewidth-\AEFrameHSep*2}% + \ignorespaces +} +{% + \par + \vspace*{\dimexpr\AECartoucheCorrSep+\AECartoucheCorrHeight-\SquareWidth} + \hspace*{\stretch{1}}% + \endminipage + \end{lrbox}% + \psframebox[framesep=\the\dimexpr\AEFrameHSep-\AEFrameRuleWidth, + linewidth=\AEFrameRuleWidth, linecolor=AEFrameColor]{\box\smc@boxa}% + \hspace*{-\AECartoucheCorrWidth}% + \raisebox{-\SquareWidth}{% + \begin{pspicture}(0,0)(\AECartoucheCorrWidth,0) + \psframe*[linecolor=AECartoucheCorrBkgColor, + cornersize=absolute, linearc=\dimexpr\SquareWidth/2] + (0,0)(\AECartoucheCorrWidth,\AECartoucheCorrHeight) + \psframe*[linecolor=AECartoucheCorrBkgColor] + (0,0)(\AECartoucheCorrWidth,3mm) + \psframe*[linecolor=AECartoucheCorrBkgColor] + (3mm,0)(\AECartoucheCorrWidth,\AECartoucheCorrHeight) + \rput(\dimexpr\AECartoucheCorrWidth/2,\dimexpr\AECartoucheCorrHeight/2) + {% + \AECartoucheCorrArrowFont + \textcolor{AECartoucheCorrArrowColor} + {\ding{228}\ding{228}\ding{228}} + \AECartoucheCorrVCPFont + \textcolor{AECartoucheCorrVCPColor} + {\StringVoirCorriges\space\pageref{toutes-solutions}}% + }% + \end{pspicture}% + }% +} +\newcounter{AEexo}[chapter] +\newenvironment{smc@AEexercice}{% + \par + \refstepcounter{AEexo}% + \psframebox*[linestyle=none, linewidth=0pt, + fillcolor=AEExoNumFrameColor, framesep=\AEExoFrameTopSep]{% + \hbox to\dimexpr\AEExoFrameWidth-\AEExoFrameTopSep*2{% + \hss + \AEExoNumFont + \textcolor{AEExoNumColor}{\theAEexo}% + \hss + }% + }% + \hspace{\AfterAEExoFrameHSpace}% + \ignorespaces +} +{\par} +\newcommand*\activites{% + \clearpage + \pagestyle{activites} + \addtocontents{cor}{\protect\smc@corrigeactivite}% + \let\itemize\smc@noitemize + \let\enditemize\endsmc@noitemize + \let\colitemize\smc@nocolitemize + \let\endcolitemize\endsmc@nocolitemize + \let\enumerate\smc@noenumerate + \let\endenumerate\endsmc@noenumerate + \let\colenumerate\smc@nocolenumerate + \let\endcolenumerate\endsmc@nocolenumerate + \let\exercice\smc@noexercice + \let\correction\smc@nocorrection + \let\partie\smc@activite@partie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@activitecorrige + \let\endcorrige\endsmc@activitecorrige + \def\smc@currpart{Activite}% +} +\newcounter{activite}[chapter] +\newcounter{partie}[activite] +\newcommand*\DeclareActivityLike[5]{% + \expandafter\newcommand\csname#1\endcsname[1][]{% + \def\smc@activite@title{##1}% + \csname#1@aux\endcsname + }% + \expandafter\newcommand\csname#1@aux\endcsname[1][]{% + \par + \addvspace{\BeforeActiviteVSpace} + \refstepcounter{activite} + \setbox\smc@boxa=\hbox{% + \ActiviteTitleFont + #2% + }% + \begin{pspicture}(0,0) + (\dimexpr \ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace+1.4142\ActiviteTitleTopHeight,\ActiviteTitleTopHeight) + \psframe*[linewidth=0, linecolor= #3] + (0,0)(\dimexpr\ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace+0.7071\ActiviteTitleTopHeight, + \ActiviteTitleTopHeight) + \psframe*[linewidth=0, linecolor= #4] + (0,0)(\dimexpr\ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace+0.7071\ActiviteTitleTopHeight, + -\ActiviteTitleBottomHeight) + \rput[l](\ActiviteTitleLeftSpace, + 0.5\dimexpr\ActiviteTitleTopHeight-\ActiviteTitleBottomHeight){% + \ActiviteTitleFont + \textcolor{#5}{#2}% + } + \rput + (\dimexpr\ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace, + 0.5\dimexpr\ActiviteTitleTopHeight-\ActiviteTitleBottomHeight) + {% + \pspolygon*[linewidth=0, linecolor=#5] + (0,0) + (0.7071\ActiviteTitleTopHeight,0.7071\ActiviteTitleTopHeight) + (1.4142\ActiviteTitleTopHeight,0) + (0.7071\ActiviteTitleTopHeight,-0.7071\ActiviteTitleTopHeight) + \rput(0.7071\ActiviteTitleTopHeight,0){% + \ActiviteNumFont + \textcolor{ActiviteNumColor}{\theactivite}% + } + } + \end{pspicture}% + \hspace*{\AfterActiviteTitleHSpace}% + \@ifmtarg{##1} + {\setbox0=\hbox{}} + {\setbox0=\hbox{##1\ }}% + \minipage[t]{\dimexpr\linewidth-\ActiviteTitleLeftSpace-\wd\smc@boxa-\ActiviteTitleRightSpace-1.4142\ActiviteTitleTopHeight-\AfterActiviteTitleHSpace-\wd0} + \ActiviteSubtitleFont + \textcolor{ActiviteSubtitleColor}{\smc@activite@title}% + \endminipage + \@ifnotmtarg{##1}{\hfill##1}% + \par\vspace{\AfterActiviteTitleVSpace} + \let\itemize\smc@activiteitemize + \let\enditemize\endsmc@activiteitemize + \let\colitemize\smc@activitecolitemize + \let\endcolitemize\endsmc@activitecolitemize + \let\enumerate\smc@activiteenumerate + \let\endenumerate\endsmc@activiteenumerate + \let\colenumerate\smc@activitecolenumerate + \let\endcolenumerate\endsmc@activitecolenumerate + \let\partie\smc@activite@partie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Activite}% + \begin{changemargin}{\dimexpr\SquareWidth*4}{\ExtraMarginRight} + }% + \expandafter\def\csname end#1\endcsname{% + \end{changemargin} + }% +} +\DeclareActivityLike{debat}{\StringDEBAT} + {ActiviteDebatTopColor} + {ActiviteDebatBottomColor} + {ActiviteTitleColor} +\DeclareActivityLike{activite}{\StringACTIVITE} + {ActiviteActiviteTopColor} + {ActiviteActiviteBottomColor} + {ActiviteTitleColor} +\newcommand*\cours{% + \clearpage + \pagestyle{cours} + \let\itemize\smc@noitemize + \let\enditemize\endsmc@noitemize + \let\colitemize\smc@nocolitemize + \let\endcolitemize\endsmc@nocolitemize + \let\enumerate\smc@noenumerate + \let\endenumerate\endsmc@noenumerate + \let\colenumerate\smc@nocolenumerate + \let\endcolenumerate\endsmc@nocolenumerate + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \let\correction\smc@nocorrection + \let\partie\smc@nopartie + \def\smc@currpart{Cours}% +} +\renewcommand\thesection{\arabic{section}} +\renewcommand*\section{\@ifstar{\smc@sec}{\smc@sec}} +\newcommand*\smc@sec[2][]{% + \ifx\relax#1\relax + \smc@@sec{#2}{#2}% + \else + \smc@@sec{#1}{#2}% + \fi +} +\newcommand*\smc@@sec[2]{% + \par\goodbreak\addvspace{\BeforeSectionVSpace}% + \refstepcounter{section}% + \relax + \setbox\smc@boxa=\hbox{% + \begin{pspicture}[shift=-\SquareWidth] + (0,0)(\dimexpr\SquareWidth*3,\dimexpr\SquareWidth*3) + \psframe*[linecolor=SectionFrame1Color,linewidth=0pt] + (0,0)(\dimexpr\SquareWidth*3,\dimexpr\SquareWidth*3) + \psframe*[linecolor=SectionFrame2Color,linewidth=0pt] + (0,0)(\SquareWidth,\dimexpr\SquareWidth*3) + \psframe*[linecolor=SectionFrame2Color,linewidth=0pt] + (0,0)(\dimexpr\SquareWidth*3,\SquareWidth) + \psframe*[linecolor=SectionFrame3Color,linewidth=0pt] + (0,0)(\SquareWidth,\SquareWidth) + \rput[Br](\dimexpr\SquareWidth*3,\SquareWidth){% + \SectionNumFont + \textcolor{SectionNumColor}{\thesection}% + \SectionNumFont + \textcolor{SectionNumColor}{.}% + \hspace*{\SectionCorrectionChassePoint}% + } + \end{pspicture}% + \hspace{\SectionNumTitleHSpace}% + \begin{minipage}[t]{\dimexpr\linewidth-\SectionNumTitleHSpace-\SquareWidth*3} + \SectionTitleFont + \textcolor{SectionTitleColor}{#2}% + \end{minipage}% + }% + \smc@dima=\dimexpr \ht\smc@boxa-\SquareWidth + \ht\smc@boxa \smc@dima + \leavevmode\box\smc@boxa + \par\nobreak\addvspace{\AfterSectionVSpace} +} +\let\smc@normalsection\section +\newcommand*\RestoreSection{\let\section\smc@normalsection} +\renewcommand{\thesubsection}{\Alph{subsection}} +\renewcommand\subsection{\@ifstar{\smc@subsec}{\smc@subsec}} +\newcommand*\smc@subsec[2][]{% + \ifx\relax#1\relax + \smc@@subsec{#2}{#2}% + \else + \smc@@subsec{#1}{#2}% + \fi +} +\newcommand*\smc@@subsec[2]{% + \ifdim\lastskip=\AfterSectionVSpace + \par\nobreak + \else + \par\goodbreak\addvspace{\BeforeSubsectionVSpace} + \fi + \refstepcounter{subsection}% + \relax + \setbox\smc@boxa=\hbox{% + \SubsectionNumFont + \textcolor{SubsectionNumColor}{\thesubsection.~}% + }% + \leavevmode\copy\smc@boxa + \begin{minipage}[t]{\dimexpr\linewidth-\wd\smc@boxa} + \SubsectionTitleFont + \textcolor{SubsectionTitleColor}{#2}% + \end{minipage} + \par\nobreak\addvspace{\AfterSubsectionVSpace} +} +\newcommand*\smc@error@section[1]{% + \ClassError{sesamanuel}{La commande \string#1 n'existe pas}{Les seules + commandes disponibles sont \string\chapter\space + \string\section\space et \string\subsection.}% +} +\renewcommand\part{% + \@ifstar{\smc@part}{\smc@part}% +} +\newcommand\smc@part[2][]{% + \smc@error@section{\part}% +} +\renewcommand\subsubsection{% + \@ifstar{\smc@subsubsection}{\smc@subsubsection}% +} +\newcommand\smc@subsubsection[2][]{% + \smc@error@section{\subsubsection}% +} +\renewcommand\paragraph{% + \@ifstar{\smc@paragraph}{\smc@paragraph}% +} +\newcommand\smc@paragraph[2][]{% + \smc@error@section{\paragraph}% +} +\renewcommand\subparagraph{% + \@ifstar{\smc@subparagraph}{\smc@subparagraph}% +} +\newcommand\smc@subparagraph[2][]{% + \smc@error@section{\subparagraph}% +} +\newcommand*\DeclareDefLike[2]{% + \newenvironment{#1}[1][]{% + \par\addvspace{\BeforeDefVSpace} + \let\itemize\smc@defitemize + \let\enditemize\endsmc@defitemize + \let\colitemize\smc@defcolitemize + \let\endcolitemize\endsmc@defcolitemize + \let\enumerate\smc@defenumerate + \let\endenumerate\endsmc@defenumerate + \let\colenumerate\smc@defcolenumerate + \let\endcolenumerate\endsmc@defcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{#1}% + \hspace*{\dimexpr\SquareWidth*2}% + \textcolor{DefSquareColor}{\rule{\SquareWidth}{\SquareWidth}}% + \space + \ifx\relax##1\relax + {% + \DefTitleFont + \textcolor{DefTitleColor}{#2}% + }% + \else + {% + \DefTitleFont + \textcolor{DefTitleColor}{#2 : }% + }% + {% + \DefSubtitleFont + \textcolor{DefSubtitleColor}{##1}% + }% + \fi + \par\nobreak\addvspace{\DefTitleFrameVSep} + \begin{lrbox}{\smc@boxa} + \minipage{\dimexpr\linewidth-\SquareWidth*3-\DefFrameHSep*2-\ExtraMarginRight} + \par\vspace{\DefFrameVSep} + \ignorespaces + } + {% + \par\vspace{\DefFrameVSep} + \endminipage + \end{lrbox} + {% + \setlength{\fboxsep}{0pt}% + \hspace*{\dimexpr\SquareWidth*3}% + \colorbox{DefFrameColor}{% + \hspace*{\DefFrameHSep}% + \usebox{\smc@boxa}% + \hspace*{\DefFrameHSep}% + } + }% + \par + } +} +\DeclareDefLike{definition}{\StringDEFINITION} +\DeclareDefLike{propriete}{\StringPROPRIETE} +\DeclareDefLike{theoreme}{\StringTHEOREME} +\newcommand*\DeclareRemLike[2]{% + \newenvironment{#1}{% + \par\addvspace{\BeforeRemVSpace} + \hspace*{\dimexpr\SquareWidth*3+\DefFrameHSep}% + \let\itemize\smc@remitemize + \let\enditemize\endsmc@remitemize + \let\colitemize\smc@remcolitemize + \let\endcolitemize\endsmc@remcolitemize + \let\enumerate\smc@remenumerate + \let\endenumerate\endsmc@remenumerate + \let\colenumerate\smc@remcolenumerate + \let\endcolenumerate\endsmc@remcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{#1}% + \minipage{\dimexpr\linewidth-\SquareWidth*3-\DefFrameHSep*2-\ExtraMarginRight} + \strut + {\RemTitleFont \textcolor{RemTitleColor}{#2 : }}% + \ignorespaces + } + {% + \endminipage + \par\addvspace{\AfterRemVSpace} + } +} +\DeclareRemLike{remarque}{Remarque} +\DeclareRemLike{remarques}{Remarques} +\DeclareRemLike{notation}{Notation} +\DeclareRemLike{notations}{Notations} +\DeclareRemLike{vocabulaire}{Vocabulaire} +\newcommand*\DeclareProofLike[2]{% + \newenvironment{#1} + {% + \par\addvspace{\BeforeProofVSpace} + \hspace*{\dimexpr\SquareWidth*3}% + {% + \color{ProofRuleColor}% + \vrule width \RuleWidth + } + \hspace*{\dimexpr \SquareWidth-\RuleWidth}% + \let\itemize\smc@proofitemize + \let\enditemize\endsmc@proofitemize + \let\colitemize\smc@proofcolitemize + \let\endcolitemize\endsmc@proofcolitemize + \let\enumerate\smc@proofenumerate + \let\endenumerate\endsmc@proofenumerate + \let\colenumerate\smc@proofcolenumerate + \let\endcolenumerate\endsmc@proofcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{#1}% + \minipage{\dimexpr\linewidth-\SquareWidth*4-\ExtraMarginRight} + \setbox\smc@boxa=\hbox{% + \hspace*{\dimexpr\ProofHeightFrame+\ProofLeftSpace}% + \ProofTitleFont + \textcolor{ProofTitleColor}{#2}% + \hspace*{\ProofRightSpace}% + }% + \begin{pspicture}(0,0)(\wd\smc@boxa,\ProofHeightFrame) + \psframe*[linestyle=none,linecolor=ProofBottomFrameColor] + (0,-\ProofDepthFrame)(\wd\smc@boxa,0) + \psframe*[linestyle=none,linecolor=ProofTopFrameColor] + (0,0)(\wd\smc@boxa,\ProofHeightFrame) + \pspolygon*[linestyle=none,linecolor=ProofTriangleFrameColor] + (0,0)(0,\ProofHeightFrame)(\ProofHeightFrame,\ProofHeightFrame) + \rput[Bl](\dimexpr\ProofHeightFrame+\ProofLeftSpace,0){% + \ProofTitleFont + \textcolor{ProofTitleColor}{#2}% + } + \end{pspicture}% + \hspace{\AfterProofTitleHSpace}% + \ignorespaces + } + {% + \endminipage + \par\addvspace{\AfterProofVSpace} + } +} +\DeclareProofLike{preuve}{\StringPREUVE} +\newcommand*\smc@cartoucheexemple{% + \begin{pspicture}(-\ExempleVRuleWidthFrame,0) + (\ExempleWidthFrame,\ExempleHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExempleEdgeFrameColor] + (-\ExempleVRuleWidthFrame,-\ExempleHRuleWidthFrame) + (\ExempleWidthFrame,\ExempleHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExempleBkgFrameColor] + (0mm,-0mm)(\ExempleWidthFrame,\ExempleHeightFrame) + \rput[B](\dimexpr\ExempleWidthFrame/2,0){% + \ExempleTitleFont + \textcolor{ExempleTitleColor}{\StringExemple}% + } + \end{pspicture}% +} +\newcommand*\smc@cartouchecorrection{% + \begin{pspicture}(-\ExempleVRuleWidthFrame,0) + (\ExempleWidthFrame,\ExempleHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExempleEdgeFrameColor] + (-\ExempleVRuleWidthFrame,-\ExempleHRuleWidthFrame) + (\ExempleWidthFrame,\ExempleHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExempleBkgFrameColor] + (0mm,-0mm)(\ExempleWidthFrame,\ExempleHeightFrame) + \rput[B](\dimexpr\ExempleWidthFrame/2,0){% + \ExempleTitleFont + \textcolor{ExempleTitleColor}{\StringCorrection}% + } + \end{pspicture}% +} +\newenvironment{exemple}[1][0.4]{% + \par\addvspace{\BeforeExempleVSpace} + \let\correction\smc@exemplecorrection + \let\itemize\smc@exempleitemize + \let\enditemize\endsmc@exempleitemize + \let\colitemize\smc@exemplecolitemize + \let\endcolitemize\endsmc@exemplecolitemize + \let\enumerate\smc@exempleenumerate + \let\endenumerate\endsmc@exempleenumerate + \let\colenumerate\smc@exemplecolenumerate + \let\endcolenumerate\endsmc@exemplecolenumerate + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Exemple}% + \let\partie\smc@nopartie + \def\smc@ratio{#1}% + \hspace*{\dimexpr \SquareWidth*3}% + \color{ExempleRuleColor}% + \vrule width \RuleWidth + \hspace*{\dimexpr \SquareWidth-\RuleWidth}% + \minipage[t]{\smc@ratio\dimexpr\linewidth-\SquareWidth*6} + \smc@cartoucheexemple + \par + \color{Noir}% + \ignorespaces +} +{% + \endminipage + \par +} +\newenvironment{exemple*1}[1][]{% + \par\addvspace{\BeforeExempleVSpace} + \let\correction\smc@one@exemplecorrection + \let\itemize\smc@exempleitemize + \let\enditemize\endsmc@exempleitemize + \let\colitemize\smc@exemplecolitemize + \let\endcolitemize\endsmc@exemplecolitemize + \let\enumerate\smc@exempleenumerate + \let\endenumerate\endsmc@exempleenumerate + \let\colenumerate\smc@exemplecolenumerate + \let\endcolenumerate\endsmc@exemplecolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Exemple}% + \hspace*{\dimexpr \SquareWidth*3}% + \color{ExempleRuleColor}% + \vrule width \RuleWidth + \hspace*{\dimexpr \SquareWidth-\RuleWidth}% + \minipage[t]{\dimexpr\linewidth-\SquareWidth*4-\ExtraMarginRight} + \smc@cartoucheexemple + \space + \color{Noir}% + \ignorespaces +} +{% + \strut + \endminipage + \par +} +\newcommand*\smc@nocorrection{% + \ClassError{sesamanuel}{Vous ne pouvez pas utilisez la macro + \string\correction\space ici}{Reportez-vous à la documentation + pour l'utilisation de la macro \string\correction.}% +} +\newcommand*\smc@exemplecorrection{% + \endminipage + \hspace{\SquareWidth}% + \color{ExempleRuleColor}% + \vrule width \RuleWidth + \hspace*{\dimexpr \SquareWidth-\RuleWidth}% + \dimen0=\dimexpr\linewidth-\SquareWidth*6 + \minipage[t]{\dimen0-\smc@ratio\dimen0}% + \smc@cartouchecorrection + \par + \color{Noir}% + \ignorespaces +} +\newcommand*\smc@one@exemplecorrection{% + \par + \smc@cartouchecorrection + \space +} +\newcounter{methode}[chapter] +\newcommand*\smc@titremethode[1][]{% + \smc@addtolom{#1}% + \refstepcounter{methode}% + {% + \setlength{\fboxsep}{0pt}% + \colorbox{MethodeTitleFrameColor}{% + \hspace*{\MethodeTitleLeftSpace}% + \textcolor{MethodeTitleColor}{% + \MethodeTitleFont + \vrule width0pt height\ht\strutbox depth 1pt + \StringMETHODE\space \themethode + }% + \hspace*{\MethodeTitleRightSpace}% + }% + }% + \ifx\relax#1\relax + \else + \hspace{\MethodeSubtitleLeftSpace}% + \textcolor{MethodeSubtitleColor}{\MethodeSubtitleFont #1}% + \fi + \par\vspace{\AfterMethodeTitleVspace} +} +\newcommand*\smc@cartoucheexapp{% + \begin{pspicture}(0,-\ExAppDepthFrame) + (\ExAppWidthFrame,\ExAppHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExAppEdgeFrameColor] + (0,-\ExAppDepthFrame) + (\ExAppWidthFrame,\ExAppHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExAppBkgFrameColor] + (0mm,-0mm)(\ExAppWidthFrame,\ExAppHeightFrame) + \rput[B](\dimexpr\ExAppWidthFrame/2,0){% + \ExAppTitleFont + \textcolor{ExAppTitleColor}{\StringExApp}% + } + \end{pspicture}% +} +\newcommand*\smc@cartouchecorr{% + \begin{pspicture}(0,-\ExAppCorrDepthFrame) + (\ExAppCorrWidthFrame,\ExAppCorrHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExAppCorrEdgeFrameColor] + (0,-\ExAppCorrDepthFrame) + (\ExAppCorrWidthFrame,\ExAppCorrHeightFrame) + \psframe*[linewidth=0pt,linecolor=ExAppCorrBkgFrameColor] + (0mm,-0mm)(\ExAppCorrWidthFrame,\ExAppCorrHeightFrame) + \rput[B](\dimexpr\ExAppCorrWidthFrame/2,0){% + \ExAppCorrTitleFont + \textcolor{ExAppCorrTitleColor}{\StringCorrection}% + } + \end{pspicture}% +} +\newenvironment{methode}[1][]{% + \par\addvspace{\BeforeMethodeVSpace} + \let\itemize\smc@exappitemize + \let\enditemize\endsmc@exappitemize + \let\colitemize\smc@exappcolitemize + \let\endcolitemize\endsmc@exappcolitemize + \let\enumerate\smc@exappenumerate + \let\endenumerate\endsmc@exappenumerate + \let\colenumerate\smc@exappcolenumerate + \let\endcolenumerate\endsmc@exappcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@exappexercice + \let\correction\smc@exappcorrection + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Methode}% + \hspace*{\dimexpr\SquareWidth*2}% + {% + \color{MethodeRuleColor}% + \vrule width \SquareWidth + }% + \hspace{\SquareWidth}% + \minipage{\dimexpr\linewidth-\SquareWidth*4}% + \hspace*{\dimexpr-\SquareWidth*2}% + \smc@titremethode[#1]% + \par + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\SquareWidth*5-\MethodeFrameHSep*2}% + \ignorespaces +} +{% + \endminipage + \endminipage + \par +} +\newcommand*\smc@exappexercice[1][0.4]{% + \endminipage + \end{lrbox}% + \def\smc@ratio{#1}% + \ifdim\dimexpr\ht\smc@boxa+\dp\smc@boxa > 2.4pt + {% + \setlength{\fboxsep}{0pt}% + \ht\smc@boxa=\dimexpr\ht\smc@boxa+\MethodeFrameTopSep + \dp\smc@boxa=\dimexpr\dp\smc@boxa+\MethodeFrameBottomSep + \hspace*{-\SquareWidth}% + \colorbox{MethodeIntroBkgFrameColor}{% + \hspace*{\MethodeFrameHSep}% + \usebox{\smc@boxa}% + \hspace*{\MethodeFrameHSep}% + }% + \par\vspace{5mm} + }% + \fi + \minipage[t]{\smc@ratio\dimexpr\linewidth-\SquareWidth*2-\RuleWidth}% + \smc@cartoucheexapp + \par +} +\newcommand*\smc@exappcorrection{% + \endminipage + \hspace{\SquareWidth}% + {% + \color{MethodeRuleColor}% + \vrule width \RuleWidth + }% + \hspace{\SquareWidth}% + \dimen0=\dimexpr\linewidth-\SquareWidth*2-\RuleWidth + \minipage[t]{\dimen0-\smc@ratio\dimen0}% + \smc@cartouchecorr + \par +} +\newenvironment{methode*1}[1][]{% + \par\addvspace{\BeforeMethodeVSpace} + \let\itemize\smc@exappitemize + \let\enditemize\endsmc@exappitemize + \let\colitemize\smc@exappcolitemize + \let\endcolitemize\endsmc@exappcolitemize + \let\enumerate\smc@exappenumerate + \let\endenumerate\endsmc@exappenumerate + \let\colenumerate\smc@exappcolenumerate + \let\endcolenumerate\endsmc@exappcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@one@exappexercice + \let\correction\smc@one@exappcorrection + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Methode}% + \hspace*{\dimexpr\SquareWidth*2}% + {% + \color{MethodeRuleColor}% + \vrule width \SquareWidth + }% + \hspace{\SquareWidth}% + \minipage{\dimexpr\linewidth-\SquareWidth*4}% + \hspace*{\dimexpr-\SquareWidth*2}% + \smc@titremethode[#1]% + \par + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\SquareWidth*5-\MethodeFrameHSep*2}% + \ignorespaces +} +{% + \end{changemargin} + \endminipage + \par +} +\newcommand*\smc@one@exappexercice[1][]{% + \endminipage + \end{lrbox}% + \ifdim\dimexpr\ht\smc@boxa+\dp\smc@boxa > 2.4pt + {% + \setlength{\fboxsep}{0pt}% + \ht\smc@boxa=\dimexpr\ht\smc@boxa+\MethodeFrameTopSep + \dp\smc@boxa=\dimexpr\dp\smc@boxa+\MethodeFrameBottomSep + \hspace*{-\SquareWidth}% + \colorbox{MethodeIntroBkgFrameColor}{% + \hspace*{\MethodeFrameHSep}% + \usebox{\smc@boxa}% + \hspace*{\MethodeFrameHSep}% + }% + \par\vspace{5mm} + }% + \fi + \let\exercice\smc@one@@exappexercice + \begin{changemargin}{0mm}{\dimexpr\ExtraMarginRight}% + \smc@cartoucheexapp + \hspace{\AfterCartoucheHSpace}% +} +\newcommand*\smc@one@exappcorrection{% + \par\vspace{\AfterExAppMethodeVSpace} + \smc@cartouchecorr + \hspace{\AfterCartoucheHSpace}% +} +\newcommand\smc@one@@exappexercice[1][]{% + \par\vspace{\AfterExAppMethodeVSpace} + \smc@cartoucheexapp + \hspace{\AfterCartoucheHSpace}% +} +\newenvironment{methode*2*2}[1][]{% + \par\addvspace{\BeforeMethodeVSpace} + \let\itemize\smc@exappitemize + \let\enditemize\endsmc@exappitemize + \let\colitemize\smc@exappcolitemize + \let\endcolitemize\endsmc@exappcolitemize + \let\enumerate\smc@exappenumerate + \let\endenumerate\endsmc@exappenumerate + \let\colenumerate\smc@exappcolenumerate + \let\endcolenumerate\endsmc@exappcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@@exappexercice + \let\correction\smc@@exappcorrection + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Methode}% + \hspace*{\dimexpr\SquareWidth*2}% + {% + \color{MethodeRuleColor}% + \vrule width \SquareWidth + }% + \hspace{\SquareWidth}% + \minipage{\dimexpr\linewidth-\SquareWidth*4}% + \hspace*{\dimexpr-\SquareWidth*2}% + \smc@titremethode[#1]% + \par + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\SquareWidth*5-\MethodeFrameHSep*2}% + \ignorespaces +} +{% + \endminipage + \endminipage + \par +} +\newcommand*\smc@@exappexercice[1][0.5]{% + \endminipage + \end{lrbox}% + \def\smc@ratio{#1}% + \ifdim\dimexpr\ht\smc@boxa+\dp\smc@boxa > 2.4pt + {% + \setlength{\fboxsep}{0pt}% + \ht\smc@boxa=\dimexpr\ht\smc@boxa+\MethodeFrameTopSep + \dp\smc@boxa=\dimexpr\dp\smc@boxa+\MethodeFrameBottomSep + \hspace*{-\SquareWidth}% + \colorbox{MethodeIntroBkgFrameColor}{% + \hspace*{\MethodeFrameHSep}% + \usebox{\smc@boxa}% + \hspace*{\MethodeFrameHSep}% + }% + \par\vspace{5mm} + }% + \fi + \let\exercice\smc@@@exappexercice + \minipage[t]{\smc@ratio\dimexpr\linewidth-\SquareWidth*3}% + \smc@cartoucheexapp + \hspace{\AfterCartoucheHSpace}% +} +\newcommand\smc@@exappcorrection{% + \par\vspace{\AfterExAppMethodeVSpace} + \smc@cartouchecorr + \hspace{\AfterCartoucheHSpace}% + \let\correction\smc@@@exappcorrection +} +\newcommand\smc@@@exappexercice{% + \endminipage + \hspace{\SquareWidth}% + {% + \color{MethodeRuleColor}% + \vrule width \SquareWidth + }% + \hspace{\SquareWidth}% + \dimen0=\dimexpr\linewidth-\SquareWidth*3 + \minipage[t]{\dimen0-\smc@ratio\dimen0}% + \smc@cartoucheexapp + \hspace{\AfterCartoucheHSpace}% +} +\newcommand\smc@@@exappcorrection{% + \par\vspace{\AfterExAppMethodeVSpace} + \smc@cartouchecorr + \hspace{\AfterCartoucheHSpace}% +} +\newenvironment{methode*2}[1][]{% + \par\addvspace{\BeforeMethodeVSpace} + \let\itemize\smc@exappitemize + \let\enditemize\endsmc@exappitemize + \let\colitemize\smc@exappcolitemize + \let\endcolitemize\endsmc@exappcolitemize + \let\enumerate\smc@exappenumerate + \let\endenumerate\endsmc@exappenumerate + \let\colenumerate\smc@exappcolenumerate + \let\endcolenumerate\endsmc@exappcolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@@@@exappexercice + \let\correction\smc@@@exappcorrection + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Methode}% + \hspace*{\dimexpr\SquareWidth*2}% + {% + \color{MethodeRuleColor}% + \vrule width \SquareWidth + }% + \hspace{\SquareWidth}% + \minipage{\dimexpr\linewidth-\SquareWidth*4}% + \hspace*{\dimexpr-\SquareWidth*2}% + \smc@titremethode[#1]% + \par + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\SquareWidth*5-\MethodeFrameHSep*2}% + \ignorespaces +} +{% + \egroup + \dimen0=\dimexpr (\ht\smc@boxa+\dp\smc@boxa)/2 + \setbox\smc@boxb = \vsplit\smc@boxa to \dimen0 + \hsize \smc@hsize + \linewidth \smc@linewidth + \usebox{\smc@boxb} + \hspace{\SquareWidth}% + {% + \color{MethodeRuleColor}% + \vrule width \RuleWidth + }% + \hspace{\SquareWidth}% + \usebox{\smc@boxa} + \endminipage + \par +} +\newcommand*\smc@@@@exappexercice{% + \endminipage + \end{lrbox}% + \ifdim\dimexpr\ht\smc@boxa+\dp\smc@boxa > 2.4pt + {% + \setlength{\fboxsep}{0pt}% + \ht\smc@boxa=\dimexpr\ht\smc@boxa+\MethodeFrameTopSep + \dp\smc@boxa=\dimexpr\dp\smc@boxa+\MethodeFrameBottomSep + \hspace*{-\SquareWidth}% + \colorbox{MethodeIntroBkgFrameColor}{% + \hspace*{\MethodeFrameHSep}% + \usebox{\smc@boxa}% + \hspace*{\MethodeFrameHSep}% + }% + \par\vspace{5mm} + }% + \fi + \edef\smc@hsize{\the\hsize}% + \edef\smc@linewidth{\the\linewidth}% + \hsize = \dimexpr (\linewidth-\SquareWidth*3-\RuleWidth)/2 + \linewidth = \hsize + \setbox\smc@boxa = \vbox\bgroup + \smc@cartoucheexapp + \hspace{\AfterCartoucheHSpace}% +} +\newenvironment{commentaire}{% + \let\itemize\smc@commentaireitemize + \let\enditemize\endsmc@commentaireitemize + \let\colitemize\smc@commentairecolitemize + \let\endcolitemize\endsmc@commentairecolitemize + \let\enumerate\smc@commentaireenumerate + \let\endenumerate\endsmc@commentaireenumerate + \let\colenumerate\smc@commentairecolenumerate + \let\endcolenumerate\endsmc@commentairecolenumerate + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \begin{changemargin}{\dimexpr\SquareWidth*4} + {\dimexpr\ExtraMarginRight+\SquareWidth} +} +{\end{changemargin}} +\newcommand*\exercicesbase{% + \clearpage + \pagestyle{exercicesbase} + \addtocontents{cor}{\protect\smc@corrigeexercicesbase}% + \let\itemize\smc@exerciceitemize + \let\enditemize\endsmc@exerciceitemize + \let\colitemize\smc@exercicecolitemize + \let\endcolitemize\endsmc@exercicecolitemize + \let\enumerate\smc@exerciceenumerate + \let\endenumerate\endsmc@exerciceenumerate + \let\colenumerate\smc@exercicecolenumerate + \let\endcolenumerate\endsmc@exercicecolenumerate + \let\exercice\smc@exobaseexercice + \let\endexercice\endsmc@exobaseexercice + \let\corrige\smc@exobasecorrige + \let\endcorrige\endsmc@exobasecorrige + \let\correction\smc@nocorrection + \let\partie\smc@exercice@partie + \def\smc@currpart{ExoBase}% +} +\newenvironment{colonne*exercice}{% + \columnsep \dimexpr \SquareWidth*2 + \columnseprule \RuleWidth + \def\columnseprulecolor{\color{ExerciceColumnRuleColor}}% + \begin{multicols}{2}% + \ignorespaces +} +{\end{multicols}} +\newcommand*\serie[1]{% + \par\addvspace{\BeforeExercicesTitleVSpace} + \begin{pspicture}(0,-\SquareWidth) + (\linewidth,\dimexpr\SquareWidth*2) + \psframe*[linewidth=0pt,linecolor=ExercicesTitleHRuleColor] + (0,-\SquareWidth)(\linewidth,0) + \psframe*[linewidth=0pt,linecolor=ExercicesTitleVRuleColor] + (0,-\SquareWidth)(\SquareWidth,\dimexpr \SquareWidth*2) + \psframe*[linewidth=0pt,linecolor=ExercicesTitleSquareColor] + (0,-\SquareWidth)(\SquareWidth,0) + \rput[Bl](\dimexpr \SquareWidth+\ExercicesTitleHSep, + \ExercicesTitleVSep) + {\ExercicesTitleFont \textcolor{ExercicesTitleColor}{#1}} + \end{pspicture}% +} +\newcommand\smc@noexercice{% + \ClassError{sesamanuel}{Vous ne pouvez pas utiliser la macro + \string\exercice\space ici}{Reportez-vous à la documentation pour + l'utilisation de la macro \string\exercice.} +} +\let\exercice\smc@noexercice +\let\correction\smc@nocorrection +\newif\ifsmc@exercicecorrige +\newcounter{exercice}[chapter] +\newcommand*\smc@exobaseexercice{% + \@ifstar + {% + \smc@exercicecorrigetrue + \smc@@exercice + } + {% + \smc@exercicecorrigefalse + \smc@@exercice + } +} +\newcommand*\smc@@exercice[1][]{% + \def\smc@exercicetitle{#1}% + \smc@@@exercice +} +\newcommand*\smc@@@exercice[1][]{% + \par\addvspace{\BeforeExerciceVSpace} + \setcounter{partie}{0} + \@ifnotmtarg{#1}{% + \setbox0=\hbox{#1}% + \parpic[r]{\makebox[\wd0][l]{{#1}}} + }% + \refstepcounter{exercice}% + \begin{pspicture}(0,0)(\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \ifsmc@exercicecorrige + \psframe*[linewidth=0pt, linecolor=ExerciceCorrigeNumFrameColor] + (0,-\ExerciceNumFrameDepth) + (\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \else + \psframe*[linewidth=0pt, linecolor=ExerciceNumFrameColor] + (0,-\ExerciceNumFrameDepth) + (\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \fi + \rput[B](\dimexpr\ExerciceNumFrameWidth/2,0){% + \textcolor{ExerciceNumColor}{\ExerciceNumFont \theexercice}% + } + \end{pspicture}% + \ifx\smc@exercicetitle\empty + \hspace{\ExerciceTextHSep}% + \else + \hspace{\ExerciceTextHSep}% + \textcolor{ExerciceTitleColor} + {\ExerciceTitleFont \smc@exercicetitle}% + \par\nobreak + \fi +} +\def\endsmc@exercice{\par} +\newenvironment{exercice*} +{% + \smc@exercicecorrigetrue + \smc@@exercice +} +{\par} +\let\smc@exoapprexercice\smc@exobaseexercice +\let\endsmc@exoapprexercice\endsmc@exobaseexercice +\newcommand\killienc{} +\count@128 +\@whilenum\count@<\@cclvi\do{% + \edef\killienc{\killienc\catcode\the\count@=12}% + \advance\count@\@ne} +\newenvironment{smc@nocorrige} +{% + \ClassError{sesamanuel}{Il est interdit d'utiliser corrige ici} + {Consultez la documentation pour plus de renseignements.}% +} +{} +\newenvironment{smc@AEcorrige} +{% + \addtocontents{cor}{% + \protect\inputcor{\smc@currpart}{\smc@thema@initcap\thechapter} + {\the\c@AEexo}% + }% + \killienc + \VerbatimEnvironment + \begin{VerbatimOut}{\PrefixeCorrection corr-\smc@currpart-\smc@thema@initcap\thechapter-\the\c@AEexo}} +{% + \end{VerbatimOut} +} +\newenvironment{smc@exobasecorrige} +{% + \addtocontents{cor}{% + \protect\inputcor{\smc@currpart}{\smc@thema@initcap\thechapter} + {\the\c@exercice}% + }% + \killienc + \VerbatimEnvironment + \begin{VerbatimOut}{\PrefixeCorrection corr-\smc@currpart-\smc@thema@initcap\thechapter-\the\c@exercice}} +{% + \end{VerbatimOut} +} +\let\smc@exoapprcorrige\smc@exobasecorrige +\let\endsmc@exoapprcorrige\endsmc@exobasecorrige +\let\smc@recreationcorrige\smc@exobasecorrige +\let\endsmc@recreationcorrige\endsmc@exobasecorrige +\let\smc@QCMcorrige\smc@exobasecorrige +\let\endsmc@QCMcorrige\endsmc@exobasecorrige +\let\smc@librecorrige\smc@exobasecorrige +\let\endsmc@librecorrige\endsmc@exobasecorrige +\newenvironment{smc@enigmecorrige} +{% + \addtocontents{cor}{% + \protect\inputcor{\smc@currpart}{\smc@thema@initcap\thechapter}{}% + }% + \killienc + \VerbatimEnvironment + \begin{VerbatimOut}{\PrefixeCorrection corr-\smc@currpart-\smc@thema@initcap\thechapter}} +{% + \end{VerbatimOut} +} +\newenvironment{smc@TPcorrige} +{% + \addtocontents{cor}{% + \protect\inputcor{\smc@currpart}{\smc@thema@initcap\thechapter} + {\the\c@activite}% + }% + \killienc + \VerbatimEnvironment + \begin{VerbatimOut}{\PrefixeCorrection corr-\smc@currpart-\smc@thema@initcap\thechapter-\the\c@activite}} +{% + \end{VerbatimOut} +} +\newcommand*\exercicesappr{% + \clearpage + \pagestyle{exercicesappr} + \addtocontents{cor}{\protect\smc@corrigeexercicesappr}% + \let\itemize\smc@exerciceitemize + \let\enditemize\endsmc@exerciceitemize + \let\colitemize\smc@exercicecolitemize + \let\endcolitemize\endsmc@exercicecolitemize + \let\enumerate\smc@exerciceenumerate + \let\endenumerate\endsmc@exerciceenumerate + \let\colenumerate\smc@exercicecolenumerate + \let\endcolenumerate\endsmc@exercicecolenumerate + \let\exercice\smc@exoapprexercice + \let\endexercice\endsmc@exoapprexercice + \let\corrige\smc@exoapprcorrige + \let\endcorrige\endsmc@exoapprcorrige + \let\correction\smc@nocorrection + \let\partie\smc@exercice@partie + \def\smc@currpart{ExoAppr}% +} +\newcommand*\recreation{% + \par\addvspace{\BeforeRecreationVSpace} + \begin{pspicture}(0,0)(\linewidth,\dimexpr\SquareWidth*3) + \psframe*[linewidth=0pt,linecolor=RecreationHeadFrame5Color] + (0,0)(\linewidth,\dimexpr\SquareWidth*3) + \psset{fillstyle=solid} + \smc@antidiagonal(0mm,0mm){RecreationHeadFrame} + \rput[Bl](\dimexpr \SquareWidth*4,\SquareWidth){% + \textcolor{RecreationHeadFrame0Color}{\RecreationFont \StringRecreation}% + } + \psset{linewidth=0pt} + \smc@putsquare(32,2){J1} + \smc@putsquare(33,0){H4} + \smc@putsquare(34,1){H2} + \smc@putsquare(37,1){F3} + \smc@putsquare(39,0){H2} + \smc@putsquare(42,2){J2} + \smc@putsquare(46,1){H4} + \end{pspicture} + \par\addvspace{\AfterRecreationVSpace} +} +\def\smc@putsquare(#1,#2)#3{% + \rput(\dimexpr \SquareWidth*#1,\dimexpr \SquareWidth*#2) + {\psframe*[linecolor=#3](0,0)(\SquareWidth,\SquareWidth)} + \ignorespaces +} +\newcommand*\Recreation{% + \clearpage + \pagestyle{recreation} +} +\newcommand*\connaissances{% + \clearpage + \pagestyle{connaissances} + \thispagestyle{firstconnaissances} + \addtocontents{cor}{\protect\smc@corrigeconnaissances}% + \let\itemize\smc@noitemize + \let\enditemize\endsmc@noitemize + \let\colitemize\smc@nocolitemize + \let\endcolitemize\endsmc@nocolitemize + \let\enumerate\smc@noenumerate + \let\endenumerate\endsmc@noenumerate + \let\colenumerate\smc@nocolenumerate + \let\endcolenumerate\endsmc@nocolenumerate + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \let\correction\smc@nocorrection + \let\partie\smc@nopartie + \def\smc@currpart{Connaissances}% +} +\newenvironment{acquis}{% + \par + \let\itemize\smc@acquisitemize + \let\enditemize\endsmc@acquisitemize + \let\colitemize\smc@acquiscolitemize + \let\endcolitemize\endsmc@acquiscolitemize + \let\enumerate\smc@acquisenumerate + \let\endenumerate\endsmc@acquisenumerate + \let\colenumerate\smc@acquiscolenumerate + \let\endcolenumerate\endsmc@acquiscolenumerate + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \let\correction\smc@nocorrection + \let\partie\smc@nopartie + \def\smc@currpart{Acquis}% + {% + \AcquisTitleFont + \textcolor{AcquisTitleColor}{\StringAcquisTitle}% + \par\vspace{\AcquisTitleVSpace}% + }% + \smc@cadre{AcquisBkgColor} + \vspace*{-4.5pt} + \begin{multicols}{2} + \AcquisTextFont +} +{% + \end{multicols}% + \endsmc@cadre + \par +} +\newcommand*\QCMautoevaluation[1]{% + \def\smc@currpart{QCM}% + \par\addvspace{\BeforeQCMAEVSpace} + \begingroup + \def\FrameSep{0pt}% + \edef\FrameArc{\QCMAETitleHeight}% + \minipage[b][\QCMAETitleHeight]{\QCMAETitleWidth}% + \begin{smc@cadre}[5,0,5,5]{QCMAEFrameColor}% + \minipage[b][\QCMAETitleHeight]{\QCMAETitleWidth}% + \begin{pspicture}(1pt,0)(\QCMAETitleHeight,\QCMAETitleHeight) + \pscircle*[linecolor=QCMAETitleCircle1Color] + (\dimexpr\QCMAETitleHeight/2, + \dimexpr\QCMAETitleHeight/2) + {\dimexpr\QCMAETitleHeight/2} + \pscircle*[linecolor=QCMAETitleCircle2Color] + (\dimexpr\QCMAETitleHeight*5/12, + \dimexpr\QCMAETitleHeight*7/12) + {\dimexpr\QCMAETitleHeight*5/12} + \pscircle*[linecolor=QCMAETitleCircle3Color] + (\dimexpr\QCMAETitleHeight/3, + \dimexpr\QCMAETitleHeight*2/3) + {\dimexpr\QCMAETitleHeight/3} + \rput[Bl](\QCMAETitleLeftSpace,\dimexpr\QCMAETitleHeight/6) + {\textcolor{QCMAETitleColor}{\QCMAETitleFont\StringQCMAE}} + \end{pspicture}% + \endminipage + \end{smc@cadre} + \endminipage + \endgroup + \hspace*{\stretch{1}}% + \begin{minipage}[b]{\QCMAEManuelWidth} + \raggedright + \QCMAEManuelFont + \StringManuel + \par\vspace*{\AfterQCMAEManuelVSpace} + \end{minipage}% + \hspace{\QCMAEManuelRightSpace}% + \raisebox{\AfterQCMAEManuelVSpace} + {\psscaleboxto(\AELogoManuelWidth,0){\LogoManuel}}% + \par\nobreak\vspace{\AfterQCMAETitleVSpace} + {\QCMAETextAfterTitleFont #1\par\nobreak} + \par\nobreak\addvspace{\AfterQCMAETextVSpace} +} +\newenvironment{QCM}{% + \begin{lrbox}{\smc@boxa} + \minipage{\dimexpr\linewidth-\QCMLineWidth*2-\QCMFrameSep*2} + \par\null + \pnode(\dimexpr -\QCMFrameSep-\QCMLineWidth/2, + \dimexpr \QCMFrameSep+\QCMLineWidth/2){A} + \pnode(\dimexpr \linewidth+\QCMFrameSep+\QCMLineWidth/2, + \dimexpr +\QCMFrameSep+\QCMLineWidth/2){B} + \par +} +{% + \par\vspace{-\baselineskip} + \pnode(\dimexpr -\QCMFrameSep-\QCMLineWidth/2, + \dimexpr -\QCMFrameSep-\QCMLineWidth/2){C} + \pnode(\dimexpr \linewidth+\QCMFrameSep+\QCMLineWidth/2, + \dimexpr -\QCMFrameSep-\QCMLineWidth/2){D} + \psRelNode(A)(C){0.5}{AC} + \psRelNode(B)(D){0.5}{BD} + \endminipage + \end{lrbox} + \par\addvspace{\BeforeQCMVSpace} + \vspace{\dimexpr\QCMLineWidth+\QCMFrameSep} + \hspace*{\dimexpr\QCMLineWidth+\QCMFrameSep}% + \copy\smc@boxa + \psline[linewidth=\QCMLineWidth, linecolor=QCMLineColor](AC)(C)(D)(BD) + \psline[linewidth=\QCMLineWidth, linecolor=QCMLineColor, + linearc=\QCMLineArc](C)(A)(B)(D) + \par\vspace{\dimexpr\QCMLineWidth+\QCMFrameSep} + \addvspace{\AfterQCMVSpace} +} +\newenvironment{EnonceCommunQCM}{% +} +{% +} +\newenvironment{GroupeQCM}{% + \let\exercice\smc@QCMexercice + \let\endexercice\endsmc@QCMexercice + \let\corrige\smc@QCMcorrige + \let\endcorrige\endsmc@QCMcorrige +} +{% +} +\newenvironment{smc@QCMexercice}{% + \par + \refstepcounter{exercice}% + \psframebox*[linestyle=none, linewidth=0pt, + fillcolor=QCMExoNumFrameColor, framesep=\QCMExoFrameTopSep]{% + \hbox to\dimexpr\QCMExoFrameWidth-\QCMExoFrameTopSep*2{% + \hss + \QCMExoNumFont + \textcolor{QCMExoNumColor}{\theexercice}% + \hss + }% + }% + \hspace{\AfterQCMExoFrameHSpace}% + \ignorespaces +} +{\par} +\newcounter{QCM} +\newcommand*\QCMLabel[1]{% + \textcolor{QCMItemNumColor} + {% + \QCMItemNumFont + \pscirclebox[linewidth=0.4pt, framesep=1pt, + linecolor=QCMItemNumColor, boxsep=true] + {\vphantom{dp}\@alph{#1}} + }% +}% +\newenvironment{ChoixQCM}[1]{% + \par\leavevmode + \def\smc@nbcolumn{#1}% + \smc@nbitem \z@ + \def\StringColCurrent{ChoixQCM}% + \toks@{}% + \smc@getbody +} +{% + \expandafter\smc@splititem\the\toks@\item\@nil\item + \smc@nbline \numexpr \smc@nbitem+\smc@nbcolumn-1 + \divide\smc@nbline \smc@nbcolumn + \multido{\n=1+1}{\smc@nbline}{% + \multido{\ni=\n+\the\smc@nbline}{\smc@nbcolumn}{% + \unless\ifnum\ni>\smc@nbitem + \makebox[\QCMLabelWidth]{\QCMLabel{\ni}\hss}% + \begin{minipage}[t]{\dimexpr + (\linewidth-\ListHSep*(\smc@nbcolumn-1))% + /\smc@nbcolumn-\QCMLabelWidth} + \strut\@nameuse{smc@item\ni}\strut + \end{minipage}% + \hspace{\ListHSep}% + \fi + }% + \\ + }% +} +\newcommand*\TravauxPratiques{% + \clearpage + \pagestyle{TP} + \def\smc@currpart{TP}% + \setcounter{activite}{0}% + \let\partie\smc@TP@partie +} +\newcommand*\DeclareTPLike[5]{% + \expandafter\newcommand\csname#1\endcsname[1][]{% + \def\smc@activite@title{##1}% + \csname#1@aux\endcsname + }% + \expandafter\newcommand\csname#1@aux\endcsname[1][]{% + \par + \addvspace{\BeforeActiviteVSpace} + \refstepcounter{activite} + \setbox\smc@boxa=\hbox{% + \ActiviteTitleFont + #2% + }% + \begin{pspicture}(0,0) + (\dimexpr \ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace+1.4142\ActiviteTitleTopHeight,\ActiviteTitleTopHeight) + \psframe*[linewidth=0, linecolor= #3] + (0,0)(\dimexpr\ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace+0.7071\ActiviteTitleTopHeight, + \ActiviteTitleTopHeight) + \psframe*[linewidth=0, linecolor= #4] + (0,0)(\dimexpr\ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace+0.7071\ActiviteTitleTopHeight, + -\ActiviteTitleBottomHeight) + \rput[l](\ActiviteTitleLeftSpace, + 0.5\dimexpr\ActiviteTitleTopHeight-\ActiviteTitleBottomHeight){% + \ActiviteTitleFont + \textcolor{#5}{#2}% + } + \rput + (\dimexpr\ActiviteTitleLeftSpace+\wd\smc@boxa+\ActiviteTitleRightSpace, + 0.5\dimexpr\ActiviteTitleTopHeight-\ActiviteTitleBottomHeight) + {% + \pspolygon*[linewidth=0, linecolor=#5] + (0,0) + (0.7071\ActiviteTitleTopHeight,0.7071\ActiviteTitleTopHeight) + (1.4142\ActiviteTitleTopHeight,0) + (0.7071\ActiviteTitleTopHeight,-0.7071\ActiviteTitleTopHeight) + \rput(0.7071\ActiviteTitleTopHeight,0){% + \ActiviteNumFont + \textcolor{ActiviteNumColor}{\theactivite}% + } + } + \end{pspicture}% + \hspace*{\AfterActiviteTitleHSpace}% + \@ifmtarg{##1} + {\setbox0=\hbox{}} + {\setbox0=\hbox{##1\ }}% + \minipage[t]{\dimexpr\linewidth-\ActiviteTitleLeftSpace-\wd\smc@boxa-\ActiviteTitleRightSpace-1.4142\ActiviteTitleTopHeight-\AfterActiviteTitleHSpace-\wd0} + \ActiviteSubtitleFont + \textcolor{ActiviteSubtitleColor}{\smc@activite@title}% + \endminipage + \@ifnotmtarg{##1}{\hfill##1}% + \par\vspace{\AfterActiviteTitleVSpace} + \let\itemize\smc@activiteitemize + \let\enditemize\endsmc@activiteitemize + \let\colitemize\smc@activitecolitemize + \let\endcolitemize\endsmc@activitecolitemize + \let\enumerate\smc@activiteenumerate + \let\endenumerate\endsmc@activiteenumerate + \let\colenumerate\smc@activitecolenumerate + \let\endcolenumerate\endsmc@activitecolenumerate + \let\partie\smc@TP@partie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Activite}% + \begin{changemargin}{\dimexpr\SquareWidth*4}{\ExtraMarginRight} + }% + \expandafter\def\csname end#1\endcsname{% + \end{changemargin} + }% +} +\DeclareTPLike{TP}{\StringTP} + {TPTopColor} + {TPBottomColor} + {TPTitleColor} +\newenvironment{enigme}[1][]{% + \addtocontents{cor}{\protect\smc@corrigeenigme}% + \let\itemize\smc@recreationitemize + \let\enditemize\endsmc@recreationitemize + \let\colitemize\smc@recreationcolitemize + \let\endcolitemize\endsmc@recreationcolitemize + \let\enumerate\smc@recreationenumerate + \let\endenumerate\endsmc@recreationenumerate + \let\colenumerate\smc@recreationcolenumerate + \let\endcolenumerate\endsmc@recreationcolenumerate + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \let\correction\smc@nocorrection + \let\partie\smc@recreation@partie + \def\smc@currpart{Enigme}% + \par + \@ifmtarg{#1}{}{% + {\RecreationTitleFont \textcolor{RecreationTitleColor}{#1}\par}% + } + \setcounter{partie}{0} +} +{\par} +\newcommand*\smc@nopartie{% + \ClassError{sesamanuel} + {La commande \string\partie\space est interdite ici.} + {Reportez-vous à la documentation pour + l'utilisation de la macro \string\partie.}% +} +\let\partie\smc@nopartie +\newcommand*\smc@activite@partie[1][]{% + \colorlet{smc@curr@partiecolor}{ActivitePartieColor}% + \colorlet{smc@curr@partiebkgcolor}{Blanc}% + \let\smc@curr@partiefont\ActivitePartieFont + \par\addvspace{\BeforeActivitePartieVSpace} + \refstepcounter{partie}% + \@ifmtarg{#1} + {% + \textcolor{ActivitePartieColor} + {\ActivitePartieFont \StringPartie{} \thepartie} + } + {% + \textcolor{ActivitePartieColor} + {\ActivitePartieFont \StringPartie{} \thepartie{} : #1} + } + \par\nobreak\addvspace{\AfterActivitePartieVSpace} +} +\newcommand*\smc@exercice@partie[1][]{% + \colorlet{smc@curr@partiecolor}{ExercicePartieColor}% + \colorlet{smc@curr@partiebkgcolor}{Blanc}% + \let\smc@curr@partiefont\ExercicePartieFont + \par\addvspace{\BeforeExercicePartieVSpace} + \refstepcounter{partie}% + \@ifmtarg{#1} + {% + \textcolor{ExercicePartieColor} + {\ExercicePartieFont \textsc{\StringPartie} \Alph{partie}} + } + {% + \textcolor{ExercicePartieColor} + {\ExercicePartieFont \textsc{\StringPartie} \Alph{partie} : #1} + } + \par\nobreak\addvspace{\AfterExercicePartieVSpace} +} +\newcommand*\smc@TP@partie[1]{% + \colorlet{smc@curr@partiecolor}{TPPartieNumColor}% + \colorlet{smc@curr@partiebkgcolor}{TPPartieBkgColor}% + \let\smc@curr@partiefont\TPPartieFont + \par\addvspace{\BeforeTPPartieVSpace} + \refstepcounter{partie}% + \leavevmode + \hbox to\z@{% + \hss + \psframebox[linestyle=none, linewidth=0pt, fillstyle=solid, + fillcolor=TPPartieBkgColor] + {\textcolor{TPPartieNumColor}{\TPPartieFont \thepartie}}% + \hspace*{\TPPartieHSep}% + }% + \textcolor{TPPartieColor}{\TPPartieFont #1} + \par\nobreak\addvspace{\AfterTPPartieVSpace} +} +\newcommand*\smc@recreation@partie[1][]{% + \colorlet{smc@curr@partiecolor}{RecreationPartieColor}% + \colorlet{smc@curr@partiebkgcolor}{Blanc}% + \let\smc@curr@partiefont\RecreationPartieFont + \par\addvspace{\BeforeRecreationPartieVSpace} + \refstepcounter{partie}% + \@ifmtarg{#1} + {% + \textcolor{RecreationPartieColor} + {\RecreationPartieFont \StringPartie{} \Alph{partie}} + } + {% + \textcolor{RecreationPartieColor} + {\RecreationPartieFont \StringPartie{} \Alph{partie} :} + \textcolor{RecreationPartieColor}{\RecreationPartieTitleFont #1} + } + \par\nobreak\addvspace{\AfterRecreationPartieVSpace} +} +\newcommand\smc@annexe@partie[1][]{% + \colorlet{smc@curr@partiecolor}{AnnexePartieColor}% + \colorlet{smc@curr@partiebkgcolor}{Blanc}% + \let\smc@curr@partiefont\AnnexePartieFont + \par\addvspace{\BeforeAnnexePartieVSpace} + \refstepcounter{partie}% + \@ifmtarg{#1} + {% + \textcolor{AnnexePartieColor} + {\AnnexePartieFont \textsc{\StringPartie} \Alph{partie}} + } + {% + \textcolor{AnnexePartieColor} + {\AnnexePartieFont \textsc{\StringPartie} \Alph{partie} : #1} + } + \par\nobreak\addvspace{\AfterAnnexePartieVSpace} +} +\newcommand\smc@libre@partie[1][]{% + \colorlet{smc@curr@partiecolor}{LibrePartieColor}% + \colorlet{smc@curr@partiebkgcolor}{Blanc}% + \let\smc@curr@partiefont\LibrePartieFont + \par\addvspace{\BeforeLibrePartieVSpace} + \refstepcounter{partie}% + \@ifmtarg{#1} + {% + \textcolor{LibrePartieColor} + {\LibrePartieFont \textsc{\StringPartie} \Alph{partie}} + } + {% + \textcolor{LibrePartieColor} + {\LibrePartieFont \textsc{\StringPartie} \Alph{partie} : #1} + } + \par\nobreak\addvspace{\AfterLibrePartieVSpace} +} +\newcommand*\NombreColonnesCorriges{3} +\newcommand*\PrefixeCorrection{} +\newcommand*\AfficheCorriges[1][\NombreColonnesCorriges]{% + \clearpage + \label{toutes-solutions} + \pagestyle{corrige} + \thispagestyle{firstcorrige} + \rput[Bl](0,9mm){\CorrigeTitleFont \MakeUppercase{\StringCorriges}} + \vspace*{-5mm} + \begingroup + \columnsep \dimexpr \SquareWidth*2 + \columnseprule \CorrigeRuleWidth + \def\columnseprulecolor{\color{ExerciceColumnRuleColor}}% + \xdef\smc@NbColonneCorrige{#1}% + \ifnum#1>\@ne + \begin{multicols}{#1}% + \@starttoc{cor} + \end{multicols} + \vfill~\par + \else + \@starttoc{cor} + \vfill~\par + \fi + \endgroup +} +\newcommand*\smc@corrigechapter[4]{% + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \let\correction\smc@nocorrection + \par\addvspace{\BeforeCorrigeChapterVspace} + \begin{pspicture}(0,0)(\linewidth,4.5mm) + \psframe[linestyle=none, linewidth=0pt, + fillstyle=solid, fillcolor=#3] + (0,0)(\linewidth,4.5mm) + \rput[B](0.5\linewidth,1mm){% + \textcolor{#4}{\CorrigeChapterFont #1}% + } + \end{pspicture}% + \\[-1mm] + {% + \centering + \color{#3} + \CorrigeChapterFont \smc@nobsbs{#2} + \par\nobreak + }% +} +\newcommand\smc@corrigeautoeval{% + \let\itemize\smc@corrAEitemize + \let\enditemize\endsmc@corrAEitemize + \let\colitemize\smc@AEcolitemize + \let\endcolitemize\endsmc@AEcolitemize + \let\enumerate\smc@corrAEenumerate + \let\endenumerate\endsmc@corrAEenumerate + \let\colenumerate\smc@AEcolenumerate + \let\endcolenumerate\endsmc@AEcolenumerate + \let\partie\smc@nopartie + \def\smc@currpart{CorrigeAE}% + \def\smc@BeforeCorrige{% + \par\addvspace{\BeforeCorrigePartieTitleVSpace} + \textcolor{CorrigeAETitleColor} + {\CorrigePartieFont \StringAE} + \par\nobreak + \def\smc@BeforeCorrige{\par}% + }% + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +\newcommand\smc@corrigeactivite{% + \let\itemize\smc@noitemize + \let\enditemize\endsmc@noitemize + \let\colitemize\smc@nocolitemize + \let\endcolitemize\endsmc@nocolitemize + \let\enumerate\smc@noenumerate + \let\endenumerate\endsmc@noenumerate + \let\colenumerate\smc@nocolenumerate + \let\endcolenumerate\endsmc@nocolenumerate + \def\smc@currpart{CorrectionActivite}% + \def\smc@BeforeCorrige{% + \par\addvspace{\BeforeCorrigePartieTitleVSpace} + \textcolor{CorrigeActiviteTitleColor} + {\CorrigePartieFont \StringACTIVITE} + \par\nobreak + \def\smc@BeforeCorrige{\par}% + }% + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +\newcommand\smc@corrigeexercicesbase{% + \let\itemize\smc@correxerciceitemize + \let\enditemize\endsmc@correxerciceitemize + \let\colitemize\smc@exercicecolitemize + \let\endcolitemize\endsmc@exercicecolitemize + \let\enumerate\smc@correxerciceenumerate + \let\endenumerate\endsmc@correxerciceenumerate + \let\colenumerate\smc@exercicecolenumerate + \let\endcolenumerate\endsmc@exercicecolenumerate + \let\partie\smc@exercice@partie + \def\smc@currpart{CorrigeExoBase}% + \def\smc@BeforeCorrige{% + \par\addvspace{\BeforeCorrigePartieTitleVSpace} + \textcolor{CorrigeExercicesBaseTitleColor} + {\CorrigePartieFont \StringExercicesBase} + \par\nobreak + \def\smc@BeforeCorrige{\par}% + }% + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +\newcommand\smc@corrigeexercicesappr{% + \let\itemize\smc@correxerciceitemize + \let\enditemize\endsmc@correxerciceitemize + \let\colitemize\smc@exercicecolitemize + \let\endcolitemize\endsmc@exercicecolitemize + \let\enumerate\smc@correxerciceenumerate + \let\endenumerate\endsmc@correxerciceenumerate + \let\colenumerate\smc@exercicecolenumerate + \let\endcolenumerate\endsmc@exercicecolenumerate + \let\partie\smc@exercice@partie + \def\smc@currpart{CorrigeExoAppr}% + \def\smc@BeforeCorrige{% + \par\addvspace{\BeforeCorrigePartieTitleVSpace} + \textcolor{CorrigeExercicesApprTitleColor} + {\CorrigePartieFont \StringExercicesAppr} + \par\nobreak + \def\smc@BeforeCorrige{\par}% + }% + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +\newcommand\smc@corrigeconnaissances{% + \let\itemize\smc@noitemize + \let\enditemize\endsmc@noitemize + \let\colitemize\smc@nocolitemize + \let\endcolitemize\endsmc@nocolitemize + \let\enumerate\smc@noenumerate + \let\endenumerate\endsmc@noenumerate + \let\colenumerate\smc@nocolenumerate + \let\endcolenumerate\endsmc@nocolenumerate + \let\partie\smc@nopartie + \def\smc@currpart{CorrigeConnaissances}% + \def\smc@BeforeCorrige{% + \par\addvspace{\BeforeCorrigePartieTitleVSpace} + \textcolor{CorrigeConnaissancesTitleColor} + {\CorrigePartieFont \StringConnaissances} + \par\nobreak + \def\smc@BeforeCorrige{}% + }% + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +\newcommand\smc@corrigeenigme{% + \let\itemize\smc@corrrecreationitemize + \let\enditemize\endsmc@corrrecreationitemize + \let\colitemize\smc@recreationcolitemize + \let\endcolitemize\endsmc@recreationcolitemize + \let\enumerate\smc@corrrecreationenumerate + \let\endenumerate\endsmc@corrrecreationenumerate + \let\colenumerate\smc@recreationcolenumerate + \let\endcolenumerate\endsmc@recreationcolenumerate + \let\partie\smc@recreation@partie + \def\smc@currpart{CorrigeEnigme}% + \def\smc@BeforeCorrige{% + \par\addvspace{\BeforeCorrigePartieTitleVSpace} + \textcolor{CorrigeEnigmeTitleColor} + {\CorrigePartieFont \StringEnigme} + \par\nobreak + \def\smc@BeforeCorrige{\par}% + }% + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +\newcommand\smc@corrigelibre{% + \let\itemize\smc@corrlibreitemize + \let\enditemize\endsmc@corrlibreitemize + \let\colitemize\smc@librecolitemize + \let\endcolitemize\endsmc@librecolitemize + \let\enumerate\smc@corrlibreenumerate + \let\endenumerate\endsmc@corrlibreenumerate + \let\colenumerate\smc@librecolenumerate + \let\endcolenumerate\endsmc@librecolenumerate + \let\partie\smc@exercice@partie + \def\smc@currpart{Libre}% + \def\smc@BeforeCorrige{% + \par + }% + \colorlet{CorrigeNumExerciceFrameBkg}{J1}% + \colorlet{CorrigeNumExerciceFrameTxt}{Blanc}% +} +\newcommand*\inputcor[3]{% + \smc@BeforeCorrige + \def\smc@arg{#1}% + \ifx\smc@arg\StringQCM + \ifnum\smc@NbColonneCorrige=2 + \edef\smc@LargeurColonneCorrige + {\the\dimexpr \linewidth/3-\QCMHSep}% + \else + \edef\smc@LargeurColonneCorrige + {\the\dimexpr \linewidth/2-\QCMHSep}% + \fi + \minipage[t]{\smc@LargeurColonneCorrige}% + \fi + \@ifmtarg{#3}{}{% + \begin{pspicture}(0,0)(5mm,2.5mm) + \psframe[linestyle=none, linewidth=0pt, + fillstyle=solid, fillcolor=CorrigeNumExerciceFrameBkg] + (0,-0.5mm)(5mm,2.5mm) + \rput[B](2.5mm,0){% + \textcolor{CorrigeNumExerciceFrameTxt} + {\CorrigeNumExerciceFont #3}% + } + \end{pspicture} + }% + \hfill\begin{minipage}[t]{\linewidth-6.5mm} + \raggedright + \@ifmtarg{#3} + {\input{\PrefixeCorrection corr-#1-#2}\strut} + {\input{\PrefixeCorrection corr-#1-#2-#3}\strut}% + \end{minipage} + \def\smc@arg{#1}% + \ifx\smc@arg\StringQCM + \endminipage + \hspace{\QCMHSep}% + \else + \par\vfil + \fi +} +\newcommand\Coupe{% + \strut + \end{minipage} + \par\hfill + \begin{minipage}[t]{\linewidth-6.5mm} +} +\newcommand\reponseQCM[1]{% + \smc@reponseQCM#1\@nil +} +\def\smc@reponseQCM#1{% + \def\smc@arg{#1}% + \ifx\smc@arg\@nnil + \else + \textcolor{CorrigeQCMItemNumColor} + {% + \CorrigeQCMItemNumFont + \pscirclebox[linewidth=0.4pt, framesep=1pt, + linecolor=CorrigeQCMItemNumColor, boxsep=true] + {\vphantom{dp}#1}% + } + \expandafter\smc@reponseQCM + \fi +} +\newcommand*\ChangeAnnexe[4]{% + \colorlet{AnnexeHeadFrameColor}{#1}% + \colorlet{AnnexeSectionRuleColor}{#2}% + \colorlet{AnnexeItemColor}{#2}% + \colorlet{AnnexeExerciceCorrigeNumFrameColor}{#2}% + \colorlet{AnnexeExerciceNumFrameColor}{#2}% + \colorlet{AnnexeSectionTitleColor}{#3}% + \colorlet{AnnexeExerciceTitleColor}{#3} + \colorlet{AnnexeExerciceNumColor}{#4} +} +\ChangeAnnexe{G3}{A1}{G1}{Blanc} +\newcounter{propriete} +\newcommand*\annexe[1]{% + \let\itemize\smc@annexeitemize + \let\enditemize\endsmc@annexeitemize + \let\colitemize\smc@annexecolitemize + \let\endcolitemize\endsmc@annexecolitemize + \let\enumerate\smc@annexeenumerate + \let\endenumerate\endsmc@annexeenumerate + \let\colenumerate\smc@annexecolenumerate + \let\endcolenumerate\endsmc@annexecolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@annexeexercice + \let\endexercice\endsmc@annexeexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \let\section\smc@annexesection + \def\smc@currpart{Annexe}% + \setcounter{propriete}{0}% + \setcounter{exercice}{0}% + \clearpage + \pagestyle{annexe} + \thispagestyle{firstannexe} + \vspace*{\BeforeAnnexeTitleVSpace} + {\raggedright \AnnexeTitleFont \MakeUppercase{#1}\par} + \addvspace{\AfterAnnexeTitleVSpace} + \def\smc@TitleAnnexe{#1}% +} +\newcommand*\ListeProprietes[1]{% + \psframebox*[fillcolor=TablePropertyTitleBkgColor]{% + \ProprieteFont + \textcolor{TablePropertyTitleTextColor} + {\MakeUppercase{\StringPropriete}~#1}% + }% +} +\newcommand*\smc@annexeexercice{% + \@ifstar + {% + \smc@exercicecorrigetrue + \smc@@annexeexercice + } + {% + \smc@exercicecorrigefalse + \smc@@annexeexercice + } +} +\newcommand*\smc@@annexeexercice[1][]{% + \def\smc@exercicetitle{#1}% + \smc@@@annexeexercice +} +\newcommand*\smc@@@annexeexercice[1][]{% + \par\addvspace{\BeforeExerciceVSpace} + \let\partie\smc@annexe@partie + \setcounter{partie}{0} + \@ifnotmtarg{#1}{% + \setbox0=\hbox{#1}% + \parpic[r]{\makebox[\wd0][l]{{#1}}} + }% + \refstepcounter{exercice}% + \begin{pspicture}(0,0)(\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \ifsmc@exercicecorrige + \psframe*[linewidth=0pt, + linecolor=AnnexeExerciceCorrigeNumFrameColor] + (0,-\ExerciceNumFrameDepth) + (\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \else + \psframe*[linewidth=0pt, + linecolor=AnnexeExerciceNumFrameColor] + (0,-\ExerciceNumFrameDepth) + (\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \fi + \rput[B](\dimexpr\ExerciceNumFrameWidth/2,0){% + \textcolor{AnnexeExerciceNumColor}{\ExerciceNumFont \theexercice}% + } + \end{pspicture}% + \ifx\smc@exercicetitle\empty + \hspace{\ExerciceTextHSep}% + \else + \hspace{\ExerciceTextHSep}% + \textcolor{AnnexeExerciceTitleColor} + {\ExerciceTitleFont \smc@exercicetitle}% + \par\nobreak + \fi +} +\def\endsmc@annexeexercice{\par} +\newcommand*\smc@annexesection{% + \@ifstar{\smc@annexesec}{\smc@annexesec}% +} +\newcommand*\smc@annexesec[2][]{% + \ifx\relax#1\relax + \smc@@annexesec{#2}{#2}% + \else + \smc@@annexesec{#1}{#2}% + \fi +} +\newcommand*\smc@@annexesec[2]{% + \par\goodbreak\addvspace{\BeforeAnnexeSectionVSpace}% + \@ifmtarg{#1}{}{}% + \begin{pspicture}(0,0)(\AnnexeSectionRuleWidth,\AnnexeSectionRuleWidth) + \psframe*[linecolor=AnnexeSectionRuleColor] + (0,0)(\AnnexeSectionRuleWidth,\AnnexeSectionRuleWidth) + \end{pspicture}% + \hspace{\AnnexeSectionRuleHSpace}% + \begin{minipage}[t]{\dimexpr\linewidth-\AnnexeSectionRuleWidth-\AnnexeSectionRuleHSpace} + \AnnexeSectionTitleFont + \textcolor{AnnexeSectionTitleColor}{#2}% + \end{minipage} + \par\nobreak\addvspace{\AfterAnnexeSectionVSpace} +} +\newcommand*\MotDefinition[2][]{% + \def\smc@MDlexique{#1}% + \def\smc@MDentree{#2}% + \smc@MotDefinition +} +\newcommand*\smc@MotDefinition[2][]{% + \@ifmtarg{#2}{% + \textbf{\smc@MDentree}% + \ifx\smc@MDlexique\empty + \smc@noprotectaddtolexique{#1}{\smc@MDentree}{\thepage}% + \else + \smc@noprotectaddtolexique{#1}{\smc@MDlexique}{\thepage}% + \fi + } + {% + \ifx\smc@MDlexique\empty + \smc@addtolexique{#1}{\smc@MDentree}{% + \par\nobreak + #2% + \par\addvspace{\AfterEntreeVSpace}% + }% + \else + \smc@addtolexique{#1}{\smc@MDlexique}{% + \par\nobreak + #2% + \par\addvspace{\AfterEntreeVSpace}% + }% + \fi + }% +} +\newcommand*\Lexique[1]{% + \textcolor{LexiqueEntreeColor}{\LexiqueFont #1}% +} +\long\def\smc@addtolexique#1#2#3{% + \protected@write\@auxout{} + {% + \string\@writefile{lex}{% + \protect\smc@insertlexique[#1]{#2}{\unexpanded{\unexpanded{#3}}}% + }% + }% +} +\long\def\smc@noprotectaddtolexique#1#2#3{% + \protected@write\@auxout{} + {% + \string\@writefile{lex}{% + \protect\smc@preinsertlexique[#1]{#2}{#3}% + }% + }% +} +\long\def\smc@addtolom#1{% + \protected@write\@auxout{} + {% + \protect\expandafter\global\protect\csname smc@lom\smc@thema@init + true\protect\endcsname + \string\@writefile{lom\smc@thema@init}{% + \protect\l@methode{\unexpanded{\unexpanded{#1}}}{\thepage}% + }% + }% +} +\newcommand*\NombreColonnesLexique{2} +\newcommand*\AfficheLexique[1][\NombreColonnesLexique]{% + \clearpage + \pagestyle{lexique} + \thispagestyle{firstlexique} + \let\itemize\smc@lexiqueitemize + \let\enditemize\endsmc@lexiqueitemize + \let\colitemize\smc@lexiquecolitemize + \let\endcolitemize\endsmc@lexiquecolitemize + \let\enumerate\smc@lexiqueenumerate + \let\endenumerate\endsmc@lexiqueenumerate + \let\colenumerate\smc@lexiquecolenumerate + \let\endcolenumerate\endsmc@lexiquecolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@noexercice + \let\endexercice\endsmc@noexercice + \let\corrige\smc@nocorrige + \let\endcorrige\endsmc@nocorrige + \def\smc@currpart{Lexique}% + \rput[Bl](0,9mm){\LexiqueTitleFont \MakeUppercase{\StringLexique}} + \vspace*{-5mm} + \begingroup + \columnsep \dimexpr \SquareWidth*2 + \columnseprule \LexiqueRuleWidth + \def\columnseprulecolor{\color{LexiqueColumnRuleColor}}% + \smc@numlexique \z@ + \begin{multicols}{#1}% + \let\smc@insertlexique\smc@insertlexiqueinitial + \let\smc@preinsertlexique\smc@preinsertlexiqueinitial + \begingroup + \makeatletter + \@input{\jobname.lex}% + \endgroup + \let\smc@insertlexique\smc@insertlexiquefinal + \let\smc@preinsertlexique\smc@preinsertlexiquefinal + \@starttoc{lex}% + \multido{\n=1+1}{\smc@numlexique}{% + \expandafter\xdef\csname index\n\endcsname{\n}% + }% + \ifnum\smc@numlexique>\z@ + \smc@trifusion{1}{\the\smc@numlexique}% + \def\smc@currentletter{A}% + \multido{\n=1+1}{\smc@numlexique}{% + \smc@afficheentree{\n}% + }% + \fi + \end{multicols} + \endgroup +} +\newcommand*\smc@afficheentree[1]{% + \edef\smc@arg{\csname tri\csname index#1\endcsname\endcsname}% + \expandafter\smc@testfirstletter\smc@arg\@nil + \csname lexique\csname index#1\endcsname\endcsname\endgraf +} +\def\smc@testfirstletter#1#2\@nil{% + \def\smc@arg{#1}% + \unless\ifx\smc@arg\smc@currentletter + \def\smc@currentletter{#1}% + \par\addvspace{\BeforeFirstLetterVSpace} + \setbox0=\hbox{% + \textcolor{FirstLetterTxtColor}{\FirstLetterFont \MakeUppercase{#1}}% + }% + \begin{pspicture}(0,\dimexpr\ht0+\FirstLetterFrameHSep) + \psframe[linewidth=0pt, linestyle=none, fillstyle=solid, + fillcolor=FirstLetterBkgColor] + (0,\dimexpr\ht0+\FirstLetterFrameHSep) + (\linewidth,-\FirstLetterFrameHSep) + \rput[B](0.5\linewidth,0){\box0} + \end{pspicture} + \par\addvspace{\AfterFirstLetterVSpace} + \nobreak + \fi +} +\newcount\smc@firsttable +\newcount\smc@endfirsttable +\newcount\smc@secondtable +\newcount\smc@endsecondtable +\newcount\smc@writetable +\newcommand*\smc@trifusion[2]{% + \ifnum#1=#2 + \else + \edef\smc@arg{{#1}{\the\numexpr(#1+#2-1)/2}}% + \expandafter\smc@trifusion\smc@arg + \edef\smc@arg{{\the\numexpr(#1+#2+1)/2}{#2}}% + \expandafter\smc@trifusion\smc@arg + \smc@fusion{#1}{#2}% + \fi +} +\newcommand*\smc@fusion[2]{% + \smc@firsttable=#1 + \smc@endfirsttable=\numexpr(#1+#2+1)/2 + \smc@secondtable=\numexpr(#1+#2+1)/2 + \smc@endsecondtable=\numexpr #2+1 + \smc@writetable=\numexpr #1-1 + \let\smc@next\smc@fusionrec + \smc@next + \multido{\n=#1+1}{\numexpr #2-#1+1}{% + \edef\smc@tmp{\csname tmp\n\endcsname}% + \expandafter\xdef\csname index\n\endcsname{\smc@tmp}% + } +} +\newcommand*\smc@fusionrec{% + \advance\smc@writetable \@ne + \ifnum \pdfstrcmp{% + \csname tri\csname index\the\smc@firsttable\endcsname\endcsname + }{% + \csname tri\csname index\the\smc@secondtable\endcsname\endcsname + }=-1 + \edef\smc@tmp{\csname index\the\smc@firsttable\endcsname}% + \expandafter\let\csname tmp\the\smc@writetable\endcsname\smc@tmp + \advance\smc@firsttable \@ne + \ifnum\smc@firsttable=\smc@endfirsttable + \let\smc@next\smc@fusionsecond + \fi + \else + \edef\smc@tmp{\csname index\the\smc@secondtable\endcsname}% + \expandafter\let\csname tmp\the\smc@writetable\endcsname\smc@tmp + \advance\smc@secondtable \@ne + \ifnum\smc@secondtable=\smc@endsecondtable + \let\smc@next\smc@fusionfirst + \fi + \fi + \smc@next +} +\newcommand*\smc@fusionfirst{% + \advance\smc@writetable \@ne + \edef\smc@tmp{\csname index\the\smc@firsttable\endcsname}% + \expandafter\let\csname tmp\the\smc@writetable\endcsname\smc@tmp + \advance\smc@firsttable \@ne + \ifnum\smc@firsttable=\smc@endfirsttable + \let\smc@next\relax + \fi + \smc@next +} +\newcommand*\smc@fusionsecond{% + \advance\smc@writetable \@ne + \edef\smc@tmp{\csname index\the\smc@secondtable\endcsname}% + \expandafter\let\csname tmp\the\smc@writetable\endcsname\smc@tmp + \advance\smc@secondtable \@ne + \ifnum\smc@secondtable=\smc@endsecondtable + \let\smc@next\relax + \fi + \smc@next +} +\newcommand\smc@insertlexiqueinitial[3][]{} +\newcount\smc@numlexique +\newcommand\smc@insertlexiquefinal[3][]{% + \global\advance\smc@numlexique \@ne + \@ifmtarg{#1}% + {\smc@@FirstUppercase#2\@nil#3\@nil}% + {\expandafter\protected@xdef\csname lexique\the\smc@numlexique\endcsname + {% + \protect\textcolor{LexiqueEntreeColor} + {% + \protect\LexiqueEntreeFont #2% + }% + \unexpanded{#3}% + }% + }% + \@ifmtarg{#1}% + {\smc@sansdiacritique{#2}}% + {\smc@sansdiacritique{#1}}% + \expandafter\xdef\csname tri\the\smc@numlexique\endcsname{\smc@tri}% +} +\newcommand\smc@preinsertlexiqueinitial[3][]{% + \@ifmtarg{#1}% + {\smc@sansdiacritique{#2}}% + {\smc@sansdiacritique{#1}}% + \ifcsname nb-\smc@tri\endcsname + \unless\ifnum\csname lastpage-\smc@tri\endcsname=#3 + \expandafter\gdef\csname lastpage-\smc@tri\endcsname{#3}% + \expandafter\xdef\csname nb-\smc@tri\endcsname{% + \the\numexpr\csname nb-\smc@tri\endcsname+1 + }% + \edef\smc@tmp{\csname pages-\smc@tri\endcsname}% + \expandafter\xdef\csname pages-\smc@tri\endcsname{\smc@tmp, #3}% + \fi + \else + \expandafter\gdef\csname lastpage-\smc@tri\endcsname{#3}% + \expandafter\gdef\csname nb-\smc@tri\endcsname{1}% + \expandafter\gdef\csname pages-\smc@tri\endcsname{#3}% + \fi +} +\newcommand\smc@preinsertlexiquefinal[3][]{% + \@ifmtarg{#1}% + {\smc@sansdiacritique{#2}}% + {\smc@sansdiacritique{#1}}% + \ifcsname affiche-\smc@tri\endcsname + \else + \expandafter\gdef\csname affiche-\smc@tri\endcsname{true}% + \@ifmtarg{#1}% + {\smc@sansdiacritique{#2}}% + {\smc@sansdiacritique{#1}}% + \global\advance\smc@numlexique \@ne + \@ifmtarg{#1}% + {\smc@@preFirstUppercase#2\@nil#3\@nil}% + {\expandafter\protected@xdef\csname lexique\the\smc@numlexique\endcsname + {% + \protect\textcolor{LexiqueEntreeColor}{% + \protect\LexiqueEntreeFont #2% + }% + \space\hbox to4.4em{\rdotfill}\kern-0.44em\rdotfill + \ifnum\csname nb-\smc@tri\endcsname>\@ne + \protect\emph{ Pages \csname pages-\smc@tri\endcsname}% + \else + \protect\emph{ Page \csname pages-\smc@tri\endcsname}% + \fi + }% + }% + \expandafter\xdef\csname tri\the\smc@numlexique\endcsname + {\smc@tri}% + \fi +} +\def\smc@IeC{\IeC} +\def\smcl@Ag{\`A} +\def\smcl@Aa{\'A} +\def\smcl@Ac{\^A} +\def\smcl@At{\~A} +\def\smcl@Au{\"A} +\def\smcl@Ar{\r A} +\def\smcl@AE{\AE} +\def\smcl@Cc{\c C} +\def\smcl@Eg{\`E} +\def\smcl@Ea{\'E} +\def\smcl@Ec{\^E} +\def\smcl@Eu{\"E} +\def\smcl@Ig{\`I} +\def\smcl@Ia{\'I} +\def\smcl@Ic{\^I} +\def\smcl@Iu{\"I} +\def\smcl@Nn{\~N} +\def\smcl@Og{\`O} +\def\smcl@Oa{\'O} +\def\smcl@Oc{\^O} +\def\smcl@Ot{\~O} +\def\smcl@Ou{\"O} +\def\smcl@Oo{\O} +\def\smcl@OE{\OE} +\def\smcl@Ug{\`U} +\def\smcl@Ua{\'U} +\def\smcl@Uc{\^U} +\def\smcl@Uu{\"U} +\def\smcl@Yt{\"Y} +\def\smcl@ss{\ss} +\def\smcl@ag{\`a} +\def\smcl@aa{\'a} +\def\smcl@ac{\^a} +\def\smcl@at{\~a} +\def\smcl@au{\"a} +\def\smcl@ar{\r a} +\def\smcl@ae{\ae} +\def\smcl@cc{\c c} +\def\smcl@eg{\`e} +\def\smcl@ea{\'e} +\def\smcl@ec{\^e} +\def\smcl@eu{\"e} +\def\smcl@ig{\`i} +\def\smcl@ia{\'i} +\def\smcl@ic{\^i} +\def\smcl@iu{\"i} +\def\smcl@nn{\~n} +\def\smcl@og{\`o} +\def\smcl@oa{\'o} +\def\smcl@oc{\^o} +\def\smcl@ot{\~o} +\def\smcl@ou{\"o} +\def\smcl@oo{\o} +\def\smcl@oe{\oe} +\def\smcl@ug{\`u} +\def\smcl@ua{\'u} +\def\smcl@uc{\^u} +\def\smcl@uu{\"u} +\def\smcl@yt{\"y} +\long\def\smc@@FirstUppercase#1#2#3\@nil#4\@nil{% + \def\smc@arg{#1}% + \ifx\smc@arg\smc@IeC + \expandafter\protected@xdef\csname lexique\the\smc@numlexique\endcsname + {% + \protect\textcolor{LexiqueEntreeColor} + {% + \protect\LexiqueEntreeFont + \MakeUppercase{#1#2}% + \MakeLowercase{#3}% + }% + \unexpanded{#4}% + }% + \else + \expandafter\protected@xdef\csname lexique\the\smc@numlexique\endcsname + {% + \protect\textcolor{LexiqueEntreeColor} + {% + \protect\LexiqueEntreeFont + \MakeUppercase{#1}% + \MakeLowercase{#2#3}% + }% + \unexpanded{#4}% + }% + \fi +} +\long\def\smc@@preFirstUppercase#1#2#3\@nil#4\@nil{% + \def\smc@arg{#1}% + \ifx\smc@arg\smc@IeC + \expandafter\protected@xdef\csname lexique\the\smc@numlexique\endcsname + {% + \protect\textcolor{LexiqueEntreeColor} + {% + \protect\LexiqueEntreeFont + \MakeUppercase{#1#2}% + \MakeLowercase{#3}% + }% + \space\hbox to4.4em{\rdotfill}\kern-0.44em\rdotfill + \ifnum\csname nb-\smc@tri\endcsname>\@ne + \protect\emph{ Pages \csname pages-\smc@tri\endcsname}% + \else + \protect\emph{ Page \csname pages-\smc@tri\endcsname}% + \fi + }% + \else + \expandafter\protected@xdef\csname lexique\the\smc@numlexique\endcsname + {% + \protect\textcolor{LexiqueEntreeColor} + {% + \protect\LexiqueEntreeFont + \MakeUppercase{#1}% + \MakeLowercase{#2#3}% + }% + \space\hbox to4.4em{\rdotfill}\kern-0.44em\rdotfill + \ifnum\csname nb-\smc@tri\endcsname>\@ne + \protect\emph{ Pages \csname pages-\smc@tri\endcsname}% + \else + \protect\emph{ Page \csname pages-\smc@tri\endcsname}% + \fi + }% + \fi +} +\def\smc@sansdiacritique#1{% + \def\smc@tri{}% + \protected@edef\smc@arg{#1}% + \let\smc@next\smc@sd + \expandafter\smc@next\smc@arg\@nil +} +\def\smc@sd#1{% + \def\smc@arg{#1}% + \ifx\smc@arg\@nnil + \let\smc@next\relax + \else + \ifx\smc@arg\smc@IeC + \let\smc@next\smc@@sd + \else + \def\smc@arg{#1}% + \ifnum`#1<`A + \edef\smc@tri{\smc@tri#1}% + \else\ifnum`#1>`Z + \edef\smc@tri{\smc@tri#1}% + \else + \edef\smc@tri{\smc@tri\smc@bdc{\numexpr`#1-`A}}% + \fi\fi + \fi + \fi + \smc@next +} +\newcommand*\smc@bdc[1]{% + \ifcase#1 + a% + \or b% + \or c% + \or d% + \or e% + \or f% + \or g% + \or h% + \or i% + \or j% + \or k% + \or l% + \or m% + \or n% + \or o% + \or p% + \or q% + \or r% + \or s% + \or t% + \or u% + \or v% + \or w% + \or x% + \or y% + \or z% + \else ???% + \fi +} +\def\smc@@sd#1{% + \def\smc@arg{#1} + \ifx\smc@arg\smcl@Ag + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@Aa + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@Ac + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@At + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@Au + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@Ar + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@AE + \edef\smc@tri{\smc@tri ae}% + \else\ifx\smc@arg\smcl@Cc + \edef\smc@tri{\smc@tri c}% + \else\ifx\smc@arg\smcl@Eg + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@Ea + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@Ec + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@Eu + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@Ig + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@Ia + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@Ic + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@Iu + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@Nn + \edef\smc@tri{\smc@tri n}% + \else\ifx\smc@arg\smcl@Og + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@Oa + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@Oc + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@Ot + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@Ou + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@Oo + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@OE + \edef\smc@tri{\smc@tri oe}% + \else\ifx\smc@arg\smcl@Ug + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@Ua + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@Uc + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@Uu + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@Yt + \edef\smc@tri{\smc@tri y}% + \else\ifx\smc@arg\smcl@ss + \edef\smc@tri{\smc@tri s}% + \else\ifx\smc@arg\smcl@ag + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@aa + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@ac + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@at + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@au + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@ar + \edef\smc@tri{\smc@tri a}% + \else\ifx\smc@arg\smcl@ae + \edef\smc@tri{\smc@tri ae}% + \else\ifx\smc@arg\smcl@cc + \edef\smc@tri{\smc@tri c}% + \else\ifx\smc@arg\smcl@eg + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@ea + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@ec + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@eu + \edef\smc@tri{\smc@tri e}% + \else\ifx\smc@arg\smcl@ig + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@ia + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@ic + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@iu + \edef\smc@tri{\smc@tri i}% + \else\ifx\smc@arg\smcl@nn + \edef\smc@tri{\smc@tri n}% + \else\ifx\smc@arg\smcl@og + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@oa + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@oc + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@ot + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@ou + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@oo + \edef\smc@tri{\smc@tri o}% + \else\ifx\smc@arg\smcl@oe + \edef\smc@tri{\smc@tri oe}% + \else\ifx\smc@arg\smcl@ug + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@ua + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@uc + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@uu + \edef\smc@tri{\smc@tri u}% + \else\ifx\smc@arg\smcl@yt + \edef\smc@tri{\smc@tri y}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \let\smc@next\smc@sd + \smc@next +} +\newcommand*\rdotfill{% + \leavevmode + \leaders \hb@xt@ .44em{\hss.}\hfill + \kern\z@ +} +\newcommand*\l@methode[2]{% + \begin{minipage}[b]{\linewidth-1.5cm} + \raggedright + \ListeMethodeTitleFont + \begin{pspicture}(0,0)(\TriangleMethodeSize,\TriangleMethodeSize) + \pspolygon*[linecolor=\CorrigeChapterFrameColor] + (0,0)(0,\TriangleMethodeSize) + (\TriangleMethodeSize,\dimexpr\TriangleMethodeSize/2) + \end{pspicture} + \textcolor{ListeMethodeTitleColor}{#1}% + \rdotfill + \end{minipage}\kern-0.44em + {\ListeMethodePageFont \rdotfill#2\strut}% + \par\addvspace{\AfterMethodeVSpace} +} +\newcommand\ListeMethodesThemes{{sp}{SP},{f}{F},{g}{G}} +\newcommand*\smc@bandeaulistemethodes[1]{% + \par\addvspace{\BeforeRecreationVSpace} + \begin{pspicture}(0,0)(\linewidth,\dimexpr\SquareWidth*3) + \psframe*[linewidth=0pt,linecolor=ChapterNumSquare5Color] + (0,0)(\linewidth,\dimexpr\SquareWidth*3) + \psset{fillstyle=solid} + \smc@antidiagonal(0mm,0mm){ChapterNumSquare} + \rput[Bl](\dimexpr \SquareWidth*4,\SquareWidth){% + \textcolor{ChapterNumSquare0Color}{\RecreationFont #1}% + } + \psset{linewidth=0pt} + \smc@putsquare(32,2){J1} + \smc@putsquare(33,0){H4} + \smc@putsquare(34,1){H2} + \smc@putsquare(37,1){F3} + \smc@putsquare(39,0){H2} + \smc@putsquare(42,2){J2} + \smc@putsquare(46,1){H4} + \end{pspicture} + \par\nobreak\addvspace{\AfterRecreationVSpace} +} +\newif\ifsmc@lomsp +\newif\ifsmc@lomf +\newif\ifsmc@lomg +\newcommand*\NombreColonnesListeMethodes{2} +\newcommand*\AfficheListeMethodes[1][\NombreColonnesListeMethodes]{% + \clearpage + \pagestyle{affichemethode} + \thispagestyle{firstaffichemethode} + \rput[Bl](0,9mm){\ListeMethodeChapterFont \MakeUppercase{\StringListeMethode}} + \vspace*{-5mm} + \begingroup + \columnsep \dimexpr \SquareWidth*2 + \columnseprule \ListeMethodeRuleWidth + \def\columnseprulecolor{\color{ListeMethodeColumnRuleColor}}% + \renewcommand*\MethodeRefExercice{\@ifstar{\@gobble}{\@gobble}} + \def\smc@NombreColonnesListeMethodes{#1}% + \tracingifs=1 + \@for\smc@currtheme:=\ListeMethodesThemes\do{% + \expandafter\smc@AfficheListeMethodesTheme\smc@currtheme + }% + \endgroup +} +\newcommand\smc@AfficheListeMethodesTheme[2]{% + \expandafter\ifx\csname ifsmc@lom#1\endcsname\iftrue + \csname smc@thema#2Color\endcsname + \expandafter\smc@bandeaulistemethodes + \expandafter{\csname StringListeMethode#2\endcsname} + \ifnum \smc@NombreColonnesListeMethodes=\@ne + \@starttoc{lom#1} + \else + \begin{multicols}{\smc@NombreColonnesListeMethodes} + \@starttoc{lom#1} + \end{multicols} + \fi + \fi +} +\newcommand*\ChangeLibre[4]{% + \colorlet{LibreHeadFrameColor}{#1}% + \colorlet{LibreSectionRuleColor}{#2}% + \colorlet{LibreItemColor}{#2}% + \colorlet{LibreExerciceCorrigeNumFrameColor}{#2}% + \colorlet{LibreExerciceNumFrameColor}{#2}% + \colorlet{LibreSectionTitleColor}{#3}% + \colorlet{LibreExerciceTitleColor}{#3} + \colorlet{LibreExerciceNumColor}{#4} +} +\ChangeLibre{G3}{A1}{G1}{Blanc} +\newcommand*\libre{% + \let\itemize\smc@libreitemize + \let\enditemize\endsmc@libreitemize + \let\colitemize\smc@librecolitemize + \let\endcolitemize\endsmc@librecolitemize + \let\enumerate\smc@libreenumerate + \let\endenumerate\endsmc@libreenumerate + \let\colenumerate\smc@librecolenumerate + \let\endcolenumerate\endsmc@librecolenumerate + \let\partie\smc@nopartie + \let\exercice\smc@libreexercice + \let\endexercice\endsmc@libreexercice + \let\corrige\smc@librecorrige + \let\endcorrige\endsmc@librecorrige + \let\section\smc@libresection + \def\smc@currpart{Libre}% + \setcounter{propriete}{0}% + \setcounter{exercice}{0}% + \addtocontents{cor}{\protect\smc@corrigelibre}% + \clearpage + \pagestyle{libre} + \thispagestyle{firstlibre} + \themaL +} +\newcommand*\smc@libreexercice{% + \@ifstar + {% + \smc@exercicecorrigetrue + \smc@@libreexercice + } + {% + \smc@exercicecorrigefalse + \smc@@libreexercice + } +} +\newcommand*\smc@@libreexercice[1][]{% + \def\smc@exercicetitle{#1}% + \smc@@@libreexercice +} +\newcommand*\smc@@@libreexercice[1][]{% + \par\addvspace{\BeforeExerciceVSpace} + \let\partie\smc@exercice@partie + \setcounter{partie}{0} + \@ifnotmtarg{#1}{% + \setbox0=\hbox{#1}% + \parpic[r]{\makebox[\wd0][l]{{#1}}} + }% + \refstepcounter{exercice}% + \begin{pspicture}(0,0)(\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \ifsmc@exercicecorrige + \psframe*[linewidth=0pt, + linecolor=LibreExerciceCorrigeNumFrameColor] + (0,-\ExerciceNumFrameDepth) + (\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \else + \psframe*[linewidth=0pt, + linecolor=LibreExerciceNumFrameColor] + (0,-\ExerciceNumFrameDepth) + (\ExerciceNumFrameWidth,\ExerciceNumFrameHeight) + \fi + \rput[B](\dimexpr\ExerciceNumFrameWidth/2,0){% + \textcolor{LibreExerciceNumColor}{\ExerciceNumFont \theexercice}% + } + \end{pspicture}% + \ifx\smc@exercicetitle\empty + \hspace{\ExerciceTextHSep}% + \else + \hspace{\ExerciceTextHSep}% + \textcolor{LibreExerciceTitleColor} + {\ExerciceTitleFont \smc@exercicetitle}% + \par\nobreak + \fi +} +\def\endsmc@libreexercice{\par} +\newcommand*\smc@libresection{% + \@ifstar{\smc@libresec}{\smc@libresec}% +} +\newcommand*\smc@libresec[2][]{% + \ifx\relax#1\relax + \smc@@libresec{#2}{#2}% + \else + \smc@@libresec{#1}{#2}% + \fi +} +\newcommand*\smc@@libresec[2]{% + \par\goodbreak\addvspace{\BeforeLibreSectionVSpace}% + \@ifmtarg{#1}{}{}% + \begin{pspicture}(0,0)(\LibreSectionRuleWidth,\LibreSectionRuleWidth) + \psframe*[linecolor=LibreSectionRuleColor] + (0,0)(\LibreSectionRuleWidth,\LibreSectionRuleWidth) + \end{pspicture}% + \hspace{\LibreSectionRuleHSpace}% + \begin{minipage}[t]{\dimexpr\linewidth-\LibreSectionRuleWidth-\LibreSectionRuleHSpace} + \LibreSectionTitleFont + \textcolor{LibreSectionTitleColor}{#2}% + \end{minipage} + \par\nobreak\addvspace{\AfterLibreSectionVSpace} +} +\newbox\@BILD +\newbox\@TEXT +\newdimen\d@breite +\newdimen\d@hoehe +\newdimen\d@xoff +\newdimen\d@yoff +\newdimen\d@shad +\newdimen\d@dash +\newdimen\d@boxl +\newdimen\d@pichskip +\newdimen\d@tmp +\newdimen\d@tmpa +\newdimen\d@bskip +\newdimen\hsiz@ +\newdimen\p@getot@l +\newcount\c@breite +\newcount\c@hoehe +\newcount\c@xoff +\newcount\c@yoff +\newcount\c@pos +\newcount\c@shad +\newcount\c@dash +\newcount\c@boxl +\newcount\c@zeilen +\newcount\@changemode +\newcount\c@piccaption +\newcount\c@piccaptionpos +\newcount\c@picpos +\newcount\c@whole +\newcount\c@half +\newcount\c@tmp +\newcount\c@tmpa +\newcount\c@tmpb +\newcount\c@tmpc +\newcount\c@tmpd +\newskip\d@leftskip +\newif\if@list \@listfalse +\newif\if@offset +\c@piccaptionpos=1 +\c@picpos=0 +\d@shad=4pt +\d@dash=4pt +\d@boxl=10pt +\d@pichskip=1em +\@changemode=0 +\def\@captype{figure} +\let\old@par=\par +\def\pichskip#1{\d@pichskip #1\relax} +\def\shadowthickness#1{\d@shad #1\relax} +\def\dashlength#1{\d@dash #1\relax} +\def\boxlength#1{\d@boxl #1\relax} +\def\picchangemode{\@changemode=1} +\def\nopicchangemode{\@changemode=0} +\def\piccaptionoutside{\c@piccaptionpos=1} +\def\piccaptioninside{\c@piccaptionpos=2} +\def\piccaptionside{\c@piccaptionpos=3} +\def\piccaptiontopside{\c@piccaptionpos=4} +\def\piccaption{\@ifnextchar [{\@piccaption}{\@piccaption[]}} +\def\@piccaption[#1]#2{\c@piccaption=1\def\sh@rtf@rm{#1}\def\capti@nt@xt{#2}} +\def\make@piccaption{% + \hsiz@\d@breite + \ifnum\c@piccaptionpos=2 + \advance\hsiz@ -2\fboxsep + \fi + \ifnum\c@piccaptionpos>2 + \hsiz@\hsize\advance\hsiz@-\d@breite\advance\hsiz@-\d@pichskip + \fi + \setbox\@TEXT=\vbox{\hsize\hsiz@\caption[\sh@rtf@rm]{\capti@nt@xt}}% +} +\def\newcaption{\refstepcounter\@captype\@dblarg{\@newcaption\@captype}} +\long\def\@newcaption#1[#2]#3{% + \old@par + \addcontentsline{\csname ext@#1\endcsname }{#1} + {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}% + \begingroup + \@parboxrestore + \normalsize + \@newmakecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}% + \old@par + \endgroup +} +\long\def\@newmakecaption#1#2{% + \vskip 10pt% + \setbox\@tempboxa \hbox {#1: #2}% + \ifdim \wd\@tempboxa >\hsize% + \setbox0=\hbox{#1: }\dimen0=\hsize\advance\dimen0 by-\wd0 + \setbox1=\vtop{\hsize=\dimen0 #2} + \hbox{\box0 \box1} + \par + \else \hbox to\hsize {\hfil \box \@tempboxa \hfil} + \fi +} +\def\parpic{% + \@ifnextchar ({\iparpic}{\iparpic(0pt,0pt)} +} +\def\iparpic(#1,#2){% + \@ifnextchar ({\@offsettrue\iiparpic(#1,#2)}% + {\@offsetfalse\iiparpic(#1,#2)(0pt,0pt)} +} +\def\iiparpic(#1,#2)(#3,#4){% + \@ifnextchar [{\iiiparpic(#1,#2)(#3,#4)}{\iiiparpic(#1,#2)(#3,#4)[l]} +} +\def\iiiparpic(#1,#2)(#3,#4)[#5]{% + \@ifnextchar [{\ivparpic(#1,#2)(#3,#4)[#5]}{\ivparpic(#1,#2)(#3,#4)[#5][]} +} +\def\ivparpic(#1,#2)(#3,#4)[#5][#6]#7{% + \let\par=\old@par\par% + \hangindent0pt\hangafter1% + \setbox\@BILD=\hbox{#7}% + \d@breite=#1\d@breite=\the\d@breite% + \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi% + \c@breite=\d@breite\divide\c@breite by65536% + \multiply\c@piccaption\c@piccaptionpos% + \d@hoehe=#2\d@hoehe=\the\d@hoehe% + \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536% + \d@yoff=\d@hoehe% + \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536% + \c@pos=1\unitlength1pt% + \if@offset% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe){}}% + \put(\c@xoff,\c@yoff){\box\@BILD}% + \end{picture}% + }% + \else% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}% + \end{picture}% + }% + \fi% + \ifnum\c@piccaption=2% + \make@piccaption% + \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}% + \hbox{\hspace{\fboxsep}\box\@TEXT}% + \vspace{4pt}}% + \fi% + \@tfor\@tempa := #5\do{% + \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa l\c@pos=1\fi% + \if\@tempa r\c@pos=2\fi% + }% + \ifnum\c@piccaption=1% + \make@piccaption% + \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}\hbox{\box\@TEXT}\vspace{4pt}}% + \fi% + \ifodd\count0\c@picpos=0\else\c@picpos=\@changemode\fi% + \pagetotal=\the\pagetotal% + \d@tmp=\pagegoal\advance\d@tmp by-\pagetotal\advance\d@tmp by-\baselineskip% + \ifdim\d@hoehe>\d@tmp% + \vskip 0pt plus\d@hoehe\relax\pagebreak[3]\vskip 0pt plus-\d@hoehe\relax% + \ifnum\c@picpos=1\c@picpos=0\else\c@picpos=\@changemode\fi% + \fi% + \ifnum\c@picpos=1\ifnum\c@pos=1\c@pos=2\else\c@pos=1\fi\fi% + \ifnum\@listdepth>0 + \@listtrue\parshape 0% + \advance\hsize -\rightmargin% + \d@leftskip \leftskip% + \leftskip \@totalleftmargin% + \if@inlabel\rule{\linewidth}{0pt}\vskip-\baselineskip\relax\fi% + \else\@listfalse\medskip% + \fi% + \if@list\d@tmpa=\linewidth\else\d@tmpa=\hsize\fi% + \ifnum\c@piccaption=3% + \make@piccaption% + \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT% + \ifdim\d@hoehe>\d@tmp% + \setbox\@TEXT=\vbox to\d@hoehe{\vfill\box\@TEXT\vspace{.2\baselineskip}\vfill}% + \else% + \setbox\@BILD=\vbox to\d@tmp{\vfill\box\@BILD\vfill}% + \d@hoehe\d@tmp% + \fi% + \fi% + \ifnum\c@piccaption=4% + \make@piccaption% + \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT% + \setbox\@TEXT=\vbox to\d@hoehe{\vspace{-10pt}\box\@TEXT\vfil}% + \advance\d@hoehe-\d@tmp% + \fi% + \ifnum\c@pos=1\d@tmpa=0pt% + \ifnum\c@piccaption>2% + \setbox\@BILD=\hbox{\box\@BILD\hspace{\d@pichskip}\hbox{\box\@TEXT}}% + \fi% + \else\advance\d@tmpa by-\wd\@BILD\d@breite=-\d@breite% + \ifnum\c@piccaption>2% + \d@tmpa=0pt% + \setbox\@BILD=\hbox{\hbox{\box\@TEXT}\hspace{\d@pichskip}\box\@BILD}% + \fi% + \fi% + \p@getot@l\the\pagetotal% + \d@bskip\d@hoehe\advance\d@bskip by\parskip\advance\d@bskip by.3\baselineskip% + {\noindent\hspace*{\d@tmpa}\relax% + \box\@BILD\nopagebreak\vskip-\d@bskip\relax\nopagebreak}% + \d@tmp=-\d@hoehe\divide\d@tmp by\baselineskip% + \c@zeilen=\d@tmp\advance\c@zeilen by-1% + \ifdim\d@breite<0pt\advance\d@breite by-\d@pichskip% + \else\advance\d@breite by\d@pichskip% + \fi% + \hangindent=\d@breite% + \hangafter=\c@zeilen% + \let\par=\x@par% + \ifnum\c@piccaption=3% + \hangindent0pt\hangafter1\let\par=\old@par% + \vskip\d@hoehe\vskip.2\baselineskip% + \fi% + \c@piccaption=0% +} +\newdimen\ptoti +\newdimen\ptotii +\def\x@par{% + \ptoti\pagetotal + \old@par + \ptotii\pagetotal + \ifdim\ptoti=\ptotii + \d@tmp\d@hoehe + \else + \d@tmp\baselineskip + \multiply\d@tmp by\prevgraf + \advance\d@tmp by\parskip + \global\advance\d@hoehe by-\d@tmp\d@tmp=\d@hoehe + \fi + \ifdim\d@hoehe>0pt + \divide\d@tmp by\baselineskip\c@zeilen=-\d@tmp\advance\c@zeilen by-1 + \c@zeilen=\the\c@zeilen + \else\c@zeilen=0 + \fi + \ifnum\c@zeilen<0\hangafter=\c@zeilen\hangindent=\d@breite + \else\let\par=\old@par + \hangindent 0pt + \leftskip \d@leftskip + \if@list\parshape \@ne \@totalleftmargin \linewidth + \advance\hsize \rightmargin + \fi + \fi +} +\def\picskip#1{% + \let\par=\old@par + \par + \pagetotal\the\pagetotal + \c@tmp=#1\relax + \ifnum\c@tmp=0 + \d@tmp\baselineskip\multiply\d@tmp by\prevgraf\advance\d@tmp\parskip + \ifdim\p@getot@l<\pagetotal + \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex + \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi + \fi + \ifdim\p@getot@l=\pagetotal + \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex + \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi + \fi + \else\hangafter=-\c@tmp\hangindent=\d@breite + \fi + \leftskip \d@leftskip + \if@list\parshape \@ne \@totalleftmargin \linewidth + \advance\hsize \rightmargin + \fi +} +\def\hpic{% + \@ifnextchar ({\ihpic}{\ihpic(0pt,0pt)}%) +} +\def\ihpic(#1,#2){% + \@ifnextchar ({\@offsettrue\iihpic(#1,#2)}%) + {\@offsetfalse\iihpic(#1,#2)(0pt,0pt)}% +} +\def\iihpic(#1,#2)(#3,#4){% + \@ifnextchar [{\iiihpic(#1,#2)(#3,#4)}{\iiihpic(#1,#2)(#3,#4)[l]}%] +} +\def\iiihpic(#1,#2)(#3,#4)[#5]{% + \@ifnextchar [{\ivhpic(#1,#2)(#3,#4)[#5]}{\ivhpic(#1,#2)(#3,#4)[#5][]}%] +} +\def\ivhpic(#1,#2)(#3,#4)[#5][#6]#7{% + \setbox\@BILD=\hbox{#7}% + \d@breite=#1\d@breite=\the\d@breite% + \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi% + \c@breite=\d@breite\divide\c@breite by65536% + \d@hoehe=#2\d@hoehe=\the\d@hoehe% + \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536% + \d@yoff=\d@hoehe% + \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536% + \c@pos=0\d@tmpa=\parindent\parindent=0pt\unitlength1pt% + \if@offset + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe){}}% + \put(\c@xoff,\c@yoff){\box\@BILD}% + \end{picture}% + }% + \else% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}% + \end{picture}% + }% + \fi% + \@tfor\@tempa := #5\do{% + \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa t\c@pos=1\fi% + \if\@tempa b\c@pos=2\fi% + }% + \ifnum\c@pos=0\parbox{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \ifnum\c@pos=1\parbox[t]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \ifnum\c@pos=2\parbox[b]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \parindent=\d@tmpa% +} +\def\Rahmen(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@tmpa=#1\advance\c@tmpa by\c@whole\advance\c@tmpa by\c@whole% + \c@tmpb=#2\advance\c@tmpb by\c@whole\advance\c@tmpb by\c@whole% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@whole,\c@half){\framebox(#1,#2){#3}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth% + \global\advance\d@hoehe by2\@wholewidth% +} +\def\Schatten(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@shad=\d@shad\divide\c@shad by65536% + \c@tmp=\c@whole\advance\c@tmp by\c@whole\c@tmpd=\c@tmp% + \advance\c@tmp by\c@shad% + \advance\c@tmpd by#1% + \advance\c@half by\c@shad% + \c@tmpa=#1\advance\c@tmpa by\c@tmp% + \c@tmpb=#2\advance\c@tmpb by\c@tmp% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@whole,\c@half){\framebox(#1,#2){#3}}% + \put(\c@shad,0){\rule{\c@tmpd pt}{\c@shad pt}}% + \put(\c@tmpd,0){\rule{\c@shad pt}{#2 pt}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth\global\advance\d@breite by\d@shad% + \global\advance\d@hoehe by2\@wholewidth\global\advance\d@hoehe by\d@shad% +} +\def\Oval(#1,#2)#3{% + \@wholewidth=0.4pt% + \c@tmpa=\the#1\divide\c@tmpa by2% + \c@tmpb=\the#2\divide\c@tmpb by2% + \begin{picture}(#1,#2)% + \put(\c@tmpa,\c@tmpb){\oval(#1,#2)}% + \put(0.4,0.4){#3}% + \end{picture}% + \global\advance\d@breite by1pt\global\advance\d@hoehe by1pt% +} +\def\Strich(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@dash=\d@dash\divide\c@dash by65536% + \c@tmp=\c@whole\advance\c@tmp by\c@whole% + \c@tmpa=#1\advance\c@tmpa by\c@tmp% + \c@tmpb=#2\advance\c@tmpb by\c@tmp% + \c@tmpc=#1\advance\c@tmpc by\c@whole% + \c@tmpd=#2\advance\c@tmpd by\c@whole% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@half,\c@half){\dashbox{\c@dash}(\c@tmpc,\c@tmpd){#3}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth% + \global\advance\d@hoehe by2\@wholewidth% +} +\def\Kasten(#1,#2)#3{% + \@wholewidth=0.4pt% + \c@boxl=\d@boxl\divide\c@boxl by65536\c@boxl=\the\c@boxl% + \c@tmpa=#1\advance\c@tmpa by\c@boxl% + \c@tmpb=#2\advance\c@tmpb by\c@boxl% + \c@tmp=#2% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(0,\c@boxl){\framebox(#1,#2){#3}}% + \put(\c@boxl,0){\line(-1,1){\c@boxl}}% + \put(\c@boxl,0){\line(1,0){#1}\line(-1,1){\c@boxl}}% + \put(\c@boxl,0){\put(#1,0){\line(0,1){\c@tmp}% + \put(0,\c@tmp){\line(-1,1){\c@boxl}}}}% + \end{picture}% + \global\advance\d@breite by\d@boxl% + \global\advance\d@hoehe by\d@boxl% +} +\newbox\env@box% +\newdimen\d@envdp +\newcount\c@hsize +\newcount\c@envdp +\newdimen\d@envb +\long\def\frameenv{\@ifnextchar [{\@frameenv}{\@frameenv[\textwidth]}} +\long\def\@frameenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth + \advance\textwidth by-2\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\def\endframeenv{% + \egroup% + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@envdp=\d@envdp \divide\c@envdp by65536% + \c@tmp=\@wholewidth \divide\c@tmp by65536 + \vskip\@wholewidth% + \unitlength 1pt\noindent% + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmp,\c@tmp){\framebox(\c@hsize,\c@envdp){\box\env@box}} + \end{picture}% +} +\long\def\shadowenv{\@ifnextchar [{\@shadowenv}{\@shadowenv[\textwidth]}} +\long\def\@shadowenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth + \advance\textwidth by-2\fboxsep + \advance\textwidth by-\d@shad% + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\def\endshadowenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \d@tmpa=\d@envb + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth \advance\d@envb by-\d@shad + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \c@envdp=\d@envdp \divide\c@envdp by65536% + \d@hoehe=\d@envdp + \advance\d@hoehe by2\@wholewidth \advance\d@hoehe by\d@shad + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@shad =\d@shad \divide\c@shad by65536 + \c@tmp=\@wholewidth \divide\c@tmp by65536 + \advance\d@tmpa by-2\d@shad + \c@xoff =\d@tmpa \divide\c@xoff by65536 + \advance\c@xoff by\c@shad \advance\c@xoff by-1 + \advance\d@envdp by\@wholewidth + \vskip\@halfwidth + \unitlength 1pt\noindent% + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmp,\c@shad){\framebox(\c@hsize,\c@envdp){\box\env@box}} + \put(\c@shad,0){\rule{\d@tmpa}{\d@shad}}% + \put(\c@xoff,0){\rule{\d@shad}{\d@envdp}}% + \end{picture}% + \vskip\@halfwidth +} +\long\def\dashenv{\@ifnextchar [{\@dashenv}{\@dashenv[\textwidth]}} +\long\def\@dashenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth \advance\textwidth by-2\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\long\def\enddashenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \advance\d@envdp by\@wholewidth + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@envdp=\d@envdp \divide\c@envdp by65536% + \c@dash=\d@dash \divide\c@dash by65536% + \c@whole=\@wholewidth \divide\c@whole by65536 + \c@half=\@halfwidth \divide\c@half by 65536 + \noindent\unitlength 1pt + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@half,\c@whole){\dashbox{\c@dash}(\c@hsize,\c@envdp){\box\env@box}} + \end{picture}% +} +\long\def\ovalenv{\@ifnextchar [{\@ovalenv}{\@ovalenv[\textwidth]}}% +\long\def\@ovalenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-4\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\long\def\endovalenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \@wholewidth=0.4pt + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by4\fboxsep% + \c@envdp=\d@envdp \divide\c@envdp by65536% + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@tmpa=\c@hsize \divide\c@tmpa by2% + \c@tmpb=\c@envdp \divide\c@tmpb by2% + \d@tmpa=2\fboxsep \advance\d@tmpa by\@wholewidth + \c@xoff=\d@tmpa \divide\c@xoff by65536% + \advance\d@tmpa by\dp\env@box + \c@yoff=\d@tmpa \divide\c@yoff by65536% + \unitlength 1pt\noindent + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmpa,\c@tmpb){\oval(\c@hsize,\c@envdp)} + \put(\c@xoff,\c@yoff){\box\env@box}% + \end{picture}% +} +\let\set@op\relax +\newif\if@op +\def\overprint{% + \@optrue + \set@op + \ignorespaces +} +\def\knockout{% + \@opfalse + \set@op + \ignorespaces +} +\def\testname{pdftex.def} +\ifx \Gin@driver \testname + \AtBeginDocument{ + \immediate\pdfobj{<< /Type /ExtGState /op false /OP false /OPM 0 >>} + \edef\op@off{\the\pdflastobj} + \immediate\pdfobj{<< /Type /ExtGState /op true /OP true /OPM 1 >>} + \edef\op@on{\the\pdflastobj} + \immediate\pdfobj{ << % + /GSko \op@off\space 0 R % + /GSop \op@on\space 0 R >>} + \edef\@extgs{\the\pdflastobj} + \edef\next{\global\noexpand\pdfpageresources={\the\pdfpageresources + \space /ExtGState \@extgs\space 0 R }} + \next + } + \def\set@op{% + \if@op + \pdfliteral direct {/GSop gs}% + \else + \pdfliteral direct {/GSko gs}% + \fi + \aftergroup\reset@op} + \def\reset@op{% + \if@op + \pdfliteral direct {/GSop gs}% + \else + \pdfliteral direct {/GSko gs}% + \fi + } +\fi +\def\testname{dvips.def} +\ifx \Gin@driver \testname + \def\set@op{% + \if@op + \special{ps:true setoverprint}% + \else + \special{ps:false setoverprint}% + \fi + \aftergroup\reset@op} + \def\reset@op{% + \if@op + \special{ps:true setoverprint}% + \else + \special{ps:false setoverprint}% + \fi + } +\fi +\@opfalse +\overprint +\endinput +%% +%% End of file `sesamanuel.cls'. diff --git a/Master/texmf-dist/tex/latex/sesamanuel/sesamanuel.sty b/Master/texmf-dist/tex/latex/sesamanuel/sesamanuel.sty new file mode 100644 index 00000000000..fd8785f841d --- /dev/null +++ b/Master/texmf-dist/tex/latex/sesamanuel/sesamanuel.sty @@ -0,0 +1,1198 @@ +%% +%% This is file `sesamanuel.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sesamanuel.dtx (with options: `package') +%% +%% sesamanuel.dtx +%% Copyright 2014-2015 Sesamath Society written by J.-C. Charpentier, S. Mengin +%% +%% Copyright (C) 2014-2015 Sesamath Society written by Jean-C\^ome Charpentier, S\'ebastien +%% Mengin. +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\def\filedate{2015/03/03} +\def\fileversion{0.4} +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{sesamanuel}[% + \filedate\space v\fileversion\space + Package pour Sesamath (SM/JCC/SM)% +] +\def\smc@enc@opt#1{\DeclareOption{#1}{\def\smc@encoding{#1}}} +\smc@enc@opt{ascii} +\smc@enc@opt{latin1} +\smc@enc@opt{latin2} +\smc@enc@opt{latin3} +\smc@enc@opt{latin4} +\smc@enc@opt{latin5} +\smc@enc@opt{latin9} +\smc@enc@opt{latin10} +\smc@enc@opt{decmulti} +\smc@enc@opt{cp850} +\smc@enc@opt{cp852} +\smc@enc@opt{cp858} +\smc@enc@opt{cp437} +\smc@enc@opt{cp437de} +\smc@enc@opt{cp865} +\smc@enc@opt{applemac} +\smc@enc@opt{macce} +\smc@enc@opt{next} +\smc@enc@opt{cp1250} +\smc@enc@opt{cp1252} +\smc@enc@opt{cp1257} +\smc@enc@opt{ansinew} +\smc@enc@opt{utf8} +\ExecuteOptions{utf8} +\ProcessOptions +\newif\ifxetex +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname XeTeXrevision\endcsname\relax + \xetexfalse +\else + \xetextrue +\fi +\RequirePackage{etex} +\ifxetex + \RequirePackage{fontspec} + \RequirePackage{xunicode} + \defaultfontfeatures{Ligatures=TeX} + \unless\ifx\smc@encoding\smc@string@utfviii + \ClassError{sesamanuel}{Vous ne pouvez pas utiliser un codage autre + que utf8 avec xelatex}{Changez les codages de tous vos fichiers + pour les transformer en utf8.}% + \fi +\else + \RequirePackage[T1]{fontenc} + \RequirePackage[\smc@encoding]{inputenc} +\fi +\RequirePackage[scaled=0.87]{helvet} +\RequirePackage{mathpazo} +\renewcommand{\ttdefault}{lmtt} +\RequirePackage{mathrsfs} +\RequirePackage{pifont} +\RequirePackage[official]{eurosym} +\RequirePackage{ifmtarg} +\RequirePackage{mathtools} +\RequirePackage{amssymb} +\RequirePackage{longtable, tabularx} +\RequirePackage{multirow} +\ifdefined \XC@catcodes + \RequirePackage{colortbl} +\else + \RequirePackage[table]{xcolor} +\fi +\RequirePackage{multido} +\RequirePackage{multicol} +\RequirePackage[french]{babel} +\RequirePackage[autolanguage]{numprint} +\definecolor{A1} {cmyk}{1.00, 0.00, 0.00, 0.50} +\definecolor{A2} {cmyk}{0.60, 0.00, 0.00, 0.10} +\definecolor{A3} {cmyk}{0.30, 0.00, 0.00, 0.05} +\definecolor{A4} {cmyk}{0.10, 0.00, 0.00, 0.00} +\definecolor{B1} {cmyk}{0.00, 1.00, 0.60, 0.40} +\definecolor{B2} {cmyk}{0.00, 0.85, 0.60, 0.15} +\definecolor{B3} {cmyk}{0.00, 0.20, 0.15, 0.05} +\definecolor{B4} {cmyk}{0.00, 0.05, 0.05, 0.00} +\definecolor{C1} {cmyk}{0.00, 1.00, 0.00, 0.50} +\definecolor{C2} {cmyk}{0.00, 0.60, 0.00, 0.20} +\definecolor{C3} {cmyk}{0.00, 0.30, 0.00, 0.05} +\definecolor{C4} {cmyk}{0.00, 0.10, 0.00, 0.05} +\definecolor{D1} {cmyk}{0.00, 0.00, 1.00, 0.50} +\definecolor{D2} {cmyk}{0.20, 0.20, 0.80, 0.00} +\definecolor{D3} {cmyk}{0.00, 0.00, 0.20, 0.10} +\definecolor{D4} {cmyk}{0.00, 0.00, 0.20, 0.05} +\definecolor{F1} {cmyk}{0.00, 0.80, 0.50, 0.00} +\definecolor{F2} {cmyk}{0.00, 0.40, 0.30, 0.00} +\definecolor{F3} {cmyk}{0.00, 0.15, 0.10, 0.00} +\definecolor{F4} {cmyk}{0.00, 0.07, 0.05, 0.00} +\definecolor{G1} {cmyk}{1.00, 0.00, 0.50, 0.00} +\definecolor{G2} {cmyk}{0.50, 0.00, 0.20, 0.00} +\definecolor{G3} {cmyk}{0.20, 0.00, 0.10, 0.00} +\definecolor{G4} {cmyk}{0.10, 0.00, 0.05, 0.00} +\definecolor{H1} {cmyk}{0.40, 0.00, 1.00, 0.10} +\definecolor{H2} {cmyk}{0.20, 0.00, 0.50, 0.05} +\definecolor{H3} {cmyk}{0.10, 0.00, 0.20, 0.00} +\definecolor{H4} {cmyk}{0.07, 0.00, 0.15, 0.00} +\definecolor{J1} {cmyk}{0.00, 0.50, 1.00, 0.00} +\definecolor{J2} {cmyk}{0.00, 0.20, 0.50, 0.00} +\definecolor{J3} {cmyk}{0.00, 0.10, 0.20, 0.00} +\definecolor{J4} {cmyk}{0.00, 0.07, 0.15, 0.00} +\definecolor{FondOuv} {cmyk}{0.00, 0.05, 0.10, 0.00} +\definecolor{FondAutoEvaluation}{cmyk}{0.00, 0.03, 0.15, 0.00} +\definecolor{FondTableaux} {cmyk}{0.00, 0.00, 0.20, 0.00} +\definecolor{FondAlgo} {cmyk}{0.07, 0.00, 0.30, 0.00} +\definecolor{BleuOuv} {cmyk}{1.00, 0.00, 0.00, 0.00} +\definecolor{PartieFonction} {cmyk}{1.00, 0.00, 0.00, 0.00} +\definecolor{PartieGeometrie} {cmyk}{0.80, 0.80, 0.00, 0.00} +\definecolor{PartieStatistique} {cmyk}{0.60, 0.95, 0.00, 0.20} +\definecolor{PartieStatistiqueOLD}{cmyk}{0.95, 0.60, 0.20, 0.00} +\definecolor{PartieStatistique*}{cmyk}{0.30, 1.00, 0.00, 0.00} +\definecolor{U1} {cmyk}{0.50, 0.10, 0.00, 0.10} +\definecolor{U2} {cmyk}{0.20, 0.15, 0.00, 0.00} +\definecolor{U3} {cmyk}{0.50, 0.00, 1.00, 0.00} +\definecolor{U4} {cmyk}{0.40, 0.00, 0.00, 0.00} +\definecolor{Blanc} {cmyk}{0.00, 0.00, 0.00, 0.00} +\definecolor{Gris1} {cmyk}{0.00, 0.00, 0.00, 0.20} +\definecolor{Gris2} {cmyk}{0.00, 0.00, 0.00, 0.40} +\definecolor{Gris3} {cmyk}{0.00, 0.00, 0.00, 0.50} +\definecolor{Noir} {cmyk}{0.00, 0.00, 0.00, 1.00} +\AtBeginDocument{\def\default@color{cmyk 0 0 0 1}\normalcolor} +\def\BeforeTableVSpace{1.5mm} +\def\AfterTableVSpace{1.5mm} +\colorlet{FiletTableauColor}{Gris3} +\newcommand{\tableau}[1][c]{% + \arrayrulecolor{FiletTableauColor}% + \renewcommand\tabularxcolumn[1]{>{\centering\arraybackslash}m{##1}}% + \ifcsname#1tableau\endcsname + \expandafter\let\expandafter\smc@next\csname#1tableau\endcsname + \expandafter\let\expandafter\endtableau\csname end#1tableau\endcsname + \else + \ClassError{sesamanuel} + {Le type de tableau #1 n'existe pas} + {Les types possibles sont 't', 'c', 'l', 'cl', 'T', 'C', + 'L', 'CL' et 'pr'.}% + \let\smc@next\ctableau + \let\endtableau\endctableau + \fi + \par\addvspace{\BeforeTableVSpace} + \smc@next +} +\newenvironment{ttableau}[2] +{\tabularx{#1}{|*{#2}{X|}}} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{Ttableau}[3] +{\tabularx{#1}{|#3|*{\numexpr#2-1}{X|}}} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{ctableau}[2] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}X| + *{\numexpr#2-1}{X|}}% +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{Ctableau}[3] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}#3| + *{\numexpr#2-1}{X|}}% +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{ltableau}[2] +{% + \tabularx{#1}{|*{#2}{X|}} + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{Ltableau}[3] +{% + \tabularx{#1}{|#3|*{\numexpr#2-1}{X|}} + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{cltableau}[2] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}X| + *{\numexpr#2-1}{X|}}% + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\newenvironment{CLtableau}[3] +{% + \tabularx{#1}{% + |>{\columncolor{FondTableaux}[\dimexpr\tabcolsep-0.5pt]}#3| + *{\numexpr#2-1}{X|}}% + \rowcolor{FondTableaux} +} +{\endtabularx\par\addvspace{\AfterTableVSpace}} +\let\lctableau\cltableau +\let\endlctableau\endcltableau +\let\LCtableau\CLtableau +\let\endLCtableau\endCLtableau +\newenvironment{prtableau}[1] +{% + \def\propriete{% + \refstepcounter{propriete}% + \psframebox*[fillcolor=TablePropertyTitleBkgColor]{% + \ProprieteFont + \textcolor{TablePropertyTitleTextColor}{ \MakeUppercase{\StringPropriete}} + \NumProprieteFont + \textcolor{TablePropertyTitleTextColor}{\thepropriete} + } + }% + \longtable{% + >{\leavevmode\endgraf\vspace{-0.3\baselineskip}} + m{0.24\dimexpr#1-6\tabcolsep} + <{\endgraf\vspace{-0.3\baselineskip}} + >{% + \leavevmode\endgraf\vspace{-0.3\baselineskip} + \columncolor{TablePropertyBkgColor} + } + m{0.46\dimexpr#1-6\tabcolsep} + <{\endgraf\vspace{-0.3\baselineskip}} + >{% + \centering\arraybackslash + \leavevmode\endgraf\vspace{-0.3\baselineskip} + } + m{0.30\dimexpr#1-6\tabcolsep} + <{\endgraf\vspace{-0.3\baselineskip}} + }% +} +{\endlongtable\par\addvspace{\AfterTableVSpace}} +\newcommand\tabX[1][\ht\@arstrutbox,\dp\@arstrutbox]{% + \smc@GetVTabX#1,,\@nil + \vrule width0pt height\smc@htTabX depth-\smc@dpTabX + \pnode(-\tabcolsep,\smc@htTabX){ul} + \pnode(-\tabcolsep,\smc@dpTabX){dl} + \hspace*{\stretch{1}}% + \pnode(\tabcolsep,\smc@htTabX){ur} + \pnode(\tabcolsep,\smc@dpTabX){dr} + \psline(ul)(dr) + \psline(dl)(ur) +} +\def\smc@GetVTabX#1,#2,{% + \edef\smc@htTabX{\the\dimexpr#1}% + \edef\smc@dpTabX{-\the\dimexpr#2}% + \smc@gobblenil +} +\def\smc@gobblenil#1\@nil{} +\definecolor{FondAlgo} {cmyk}{0.07, 0.00, 0.30, 0.00} +\colorlet{AlgorithmeRuleColor}{D2} +\colorlet{AlgorithmeBkgColor}{FondAlgo} +\colorlet{CouleurAlgoAffiche}{Noir} +\colorlet{CouleurAlgoDemander}{Noir} +\colorlet{CouleurAlgoSaisir}{Noir} +\colorlet{CouleurAlgoStocker}{Noir} +\colorlet{CouleurAlgoSi}{Noir} +\colorlet{CouleurAlgoTantque}{Noir} +\colorlet{CouleurAlgoPour}{Noir} +\colorlet{CouleurAlgoCalcule}{Noir} +\colorlet{CouleurAlgoInitialiser}{Noir} +\colorlet{CouleurAlgoIncrementer}{Noir} +\colorlet{CouleurAlgoCommentaire}{Noir} +\colorlet{CouleurAlgoDonnerValeur}{Noir} +\def\AlgorithmeRuleWidth{1pt} +\def\AlgorithmeSep{2mm} +\def\AlgorithmeNumWidth{6mm} +\def\AlgoIndent{1em} +\def\BeforeAlgorithmeVSpace{1.5mm} +\def\AfterAlgorithmeVSpace{1.5mm} +\newcounter{smc@line} +\newenvironment{oldalgorithme}{% + \ttfamily + \c@smc@line \z@ + \def\par{% + \@@par + \afterassignment\smc@displaynum\let\next=% + }% + \def\smc@displaynum{% + \ifx\next\end + \expandafter\end + \else + \global\advance\c@smc@line\@ne% + \leavevmode\hb@xt@\AlgorithmeNumWidth{\the\c@smc@line.\hss}% + \expandafter\next + \fi% + }% + \shorthandoff{;:!?}% + \@vobeyspaces + \obeylines + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\AlgorithmeRuleWidth*2-\AlgorithmeSep*2}% +} +{% + \endminipage + \end{lrbox}% + \@@par\addvspace{\BeforeAlgorithmeVSpace} + \psframebox[linecolor=AlgorithmeRuleColor, + linewidth=\AlgorithmeRuleWidth, + fillstyle=solid, + fillcolor=AlgorithmeBkgColor, + framesep=\AlgorithmeSep, + cornersize=absolute, + linearc=\AlgorithmeSep]% + {\usebox{\smc@boxa}}% + \@@par\addvspace{\AfterAlgorithmeVSpace} +} +\newcount\smc@indent +\newcommand*\smc@inc@indent{% + \advance\smc@indent\@ne +} +\newcommand*\smc@dec@indent{% + \ifnum\smc@indent>\z@ + \advance\smc@indent\m@ne + \fi +} +\newcommand*\smc@write@indent{% + \par + \refstepcounter{smc@line}% + \dimen0 \dimexpr\AlgoIndent*\smc@indent + \leavevmode\hb@xt@\AlgorithmeNumWidth{\texttt{\the\c@smc@line.}\hss}% + \hspace*{\dimen0}% +} +\newcommand*\BlocVariables{% + \smc@dec@indent + \smc@write@indent + \textit{Liste des variables utilis\'ees}% + \smc@inc@indent +} +\newcommand*\BlocEntrees{% + \smc@dec@indent + \smc@write@indent + \textit{Entr\'ees}% + \smc@inc@indent +} +\newcommand*\BlocTraitements{% + \smc@dec@indent + \smc@write@indent + \textit{Traitements} + \smc@inc@indent +} +\newcommand*\BlocAffichage{% + \smc@dec@indent + \smc@write@indent + \textit{Affichage} + \smc@inc@indent +} +\newcommand\BlocTraitementsEtAffichage{% + \smc@dec@indent + \smc@write@indent + \textit{Traitements et affichage} + \smc@inc@indent +} +\newcommand*\DeclareVar[3]{% + \smc@write@indent + \texttt{#1 \string: }% + \textit{#2}\hfill + \textcolor{CouleurAlgoCommentaire}{#3}% +} +\newcommand*\TantQue[2]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Tant que} (\texttt{#1})} + \texttt{\bfseries faire} + \smc@inc@indent + #2 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Fin Tant que}}% +} +\newcommand*\Pour[4]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoPour}{\bfseries Pour}} + \texttt{#1} + \textcolor{CouleurAlgoPour}{\bfseries variant de} + \texttt{#2} + \textcolor{CouleurAlgoPour}{\bfseries \`a} + \texttt{#3} + \texttt{\bfseries faire} + \smc@inc@indent + #4 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Fin Pour}}% +} +\newcommand*\PourAvecPas[5]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoPour}{\bfseries Pour}} + \texttt{#1} + \textcolor{CouleurAlgoPour}{\bfseries variant de} + \texttt{#2} + \textcolor{CouleurAlgoPour}{\bfseries \`a} + \texttt{#3} + \textcolor{CouleurAlgoPour}{\bfseries avec un pas de} + \texttt{#4} + \texttt{faire} + \smc@inc@indent + #5 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoTantque}{\bfseries Fin Pour}}% +} +\newcommand*\SiAlors[2]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Si}} + {#1} + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Alors}} + \smc@inc@indent + #2 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Fin Si}}% +} +\newcommand*\SiAlorsSinon[3]{% + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Si}} + {#1} + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Alors}} + \smc@inc@indent + #2 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Sinon}} + \smc@inc@indent + #3 + \smc@dec@indent + \smc@write@indent + \texttt{\textcolor{CouleurAlgoSi}{\bfseries Fin Si}}% +} +\newcommand*\AfficherVar[1]{% + \smc@write@indent + \textcolor{CouleurAlgoAffiche}{Afficher la valeur de} + \texttt{#1}% +} +\newcommand*\Afficher[1]{% + \smc@write@indent + \textcolor{CouleurAlgoAffiche}{Afficher} + #1% +} +\newcommand*\Calculer[1]{% + \smc@write@indent + \textcolor{CouleurAlgoCalcule}{Calculer} + #1% +} +\newcommand*\Demander[1]{% + \smc@write@indent + \textcolor{CouleurAlgoDemander}{Demander} + \texttt{#1}% +} +\newcommand*\Saisir[1]{% + \smc@write@indent + \textcolor{CouleurAlgoSaisir}{Saisir} + \texttt{#1}% +} +\newcommand*\Stocker[1]{% + \smc@write@indent + \textcolor{CouleurAlgoStocker}{Stocker} la r\'eponse dans + \texttt{#1}% +} +\newcommand*\DonnerValeur[2]{% + \smc@write@indent + \textcolor{CouleurAlgoDonnerValeur}{Donner} \`a \texttt{#1} + la valeur de \texttt{#2}% +} +\newcommand*\TitreAlgo[1]{% + \smc@write@indent + \textit{Algorithme \string: }#1 +} +\newcommand*\FinAlgo{% + \smc@dec@indent + \smc@write@indent + \textit{Fin de l'algorithme}% +} +\newenvironment{algorithme}{% + \c@smc@line\z@ + \shorthandoff{;:!?}% + \begin{lrbox}{\smc@boxa}% + \minipage{\dimexpr\linewidth-\AlgorithmeRuleWidth*2-\AlgorithmeSep*2}% +} +{% + \endminipage + \end{lrbox}% + \par\addvspace{\BeforeAlgorithmeVSpace} + \psframebox[linecolor=AlgorithmeRuleColor, + linewidth=\AlgorithmeRuleWidth, + fillstyle=solid, + fillcolor=AlgorithmeBkgColor, + framesep=\AlgorithmeSep, + cornersize=absolute, + linearc=\AlgorithmeSep]% + {\usebox{\smc@boxa}}% + \par\addvspace{\AfterAlgorithmeVSpace} +} +\let\uori\u +\let\Uori\U +\let\U\relax +\newcommand\U[1]{\ensuremath{#1}} +\renewcommand\u[1]{\ensuremath{\nombre{#1}}} +\newcommand\newunit[2]{% + \expandafter\newcommand\csname u#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{\nombre{##1}\,#2}}% + }% + \expandafter\newcommand\csname U#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{##1\,#2}}% + }% +} +\newcommand\renewunit[2]{% + \expandafter\renewcommand\csname u#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{\nombre{##1}\,#2}}% + }% + \expandafter\renewcommand\csname U#1\endcsname[1]{% + \@ifmtarg{##1} + {\ensuremath{#2}} + {\ensuremath{##1\,#2}}% + }% +} +\newunit{ym}{\text{ym}} +\newunit{zm}{\text{zm}} +\newunit{am}{\text{am}} +\newunit{fm}{\text{fm}} +\newunit{pm}{\text{pm}} +\newunit{nm}{\text{nm}} +\newunit{micron}{\mu\text{m}} +\newunit{mm}{\text{mm}} +\newunit{cm}{\text{cm}} +\newunit{dm}{\text{dm}} +\newunit{m}{\text{m}} +\newunit{dam}{\text{dam}} +\newunit{hm}{\text{hm}} +\newunit{km}{\text{km}} +\newunit{Mm}{\text{Mm}} +\newunit{Gm}{\text{Gm}} +\newunit{Tm}{\text{Tm}} +\newunit{Pm}{\text{Pm}} +\newunit{Em}{\text{Em}} +\newunit{Zm}{\text{Zm}} +\newunit{Ym}{\text{Ym}} +\newunit{mmq}{\text{mm}^2} +\newunit{cmq}{\text{cm}^2} +\newunit{dmq}{\text{dm}^2} +\newunit{mq}{\text{m}^2} +\newunit{damq}{\text{dam}^2} +\newunit{hmq}{\text{hm}^2} +\newunit{kmq}{\text{km}^2} +\newunit{ha}{\text{ha}} +\newunit{mmc}{\text{mm}^3} +\newunit{cmc}{\text{cm}^3} +\newunit{dmc}{\text{dm}^3} +\newunit{mc}{\text{m}^3} +\newunit{damc}{\text{dam}^3} +\newunit{hmc}{\text{hm}^3} +\newunit{kmc}{\text{km}^3} +\newunit{hl}{\text{hl}} +\newunit{dal}{\text{dal}} +\newunit{l}{\text{l}} +\newunit{dl}{\text{dl}} +\newunit{cl}{\text{cl}} +\newunit{ml}{\text{ml}} +\newunit{hel}{\text{h$\ell$}} +\newunit{dael}{\text{da$\ell$}} +\newunit{el}{\text{$\ell$}} +\newunit{del}{\text{d$\ell$}} +\newunit{cel}{\text{c$\ell$}} +\newunit{mel}{\text{m$\ell$}} +\newunit{s}{\text{s}} +\newunit{min}{\text{min}} +\newunit{h}{\text{h}} +\newunit{ms}{\text{m$\cdot$s}^{-1}} +\newunit{mh}{\text{m$\cdot$h}^{-1}} +\newunit{kms}{\text{km$\cdot$s}^{-1}} +\newunit{kmmin}{\text{km$\cdot$min}^{-1}} +\newunit{kmh}{\text{km$\cdot$h}^{-1}} +\newunit{ls}{\text{$\ell\cdot$s}^{-1}} +\newunit{mg}{\text{mg}} +\newunit{cg}{\text{cg}} +\newunit{dg}{\text{dg}} +\newunit{g}{\text{g}} +\newunit{dag}{\text{dag}} +\newunit{hg}{\text{hg}} +\newunit{kg}{\text{kg}} +\newunit{T}{\text{T}} +\newunit{pc}{\%} +\newunit{deg}{\text{\degre}} +\newunit{degc}{\text{\degre C}} +\newunit{euro}{\text{\euro}} +\newcommand*\Strut[1][1]{% + \leavevmode + \vrule \@height #1\ht\strutbox + \@depth #1\dp\strutbox + \@width\z@ +} +\newcommand*\TopStrut[1][1]{% + \leavevmode + \vrule \@height #1\ht\strutbox + \@depth \z@ + \@width \z@ +} +\newcommand*\BotStrut[1][1]{% + \leavevmode + \vrule \@height \z@ + \@depth #1\dp\strutbox + \@width \z@ +} +\newcommand\setlist[1]{% + \expandafter\let\expandafter\itemize + \csname smc@#1itemize\endcsname + \expandafter\let\expandafter\enditemize + \csname endsmc@#1itemize\endcsname + \expandafter\let\expandafter\colitemize + \csname smc@#1colitemize\endcsname + \expandafter\let\expandafter\endcolitemize + \csname endsmc@#1colitemize\endcsname + \expandafter\let\expandafter\enumerate + \csname smc@#1enumerate\endcsname + \expandafter\let\expandafter\endenumerate + \csname endsmc@#1enumerate\endcsname + \expandafter\let\expandafter\colenumerate + \csname smc@#1colenumerate\endcsname + \expandafter\let\expandafter\endcolenumerate + \csname endsmc@#1colenumerate\endcsname +} +\colorlet{CommentaireItemColor}{Noir} +\colorlet{PrerequisItemColor}{B2} +\colorlet{AEItemColor}{B2} +\colorlet{ActiviteItemColor}{C1} +\colorlet{DefItemColor}{B2} +\colorlet{RemItemColor}{H1} +\colorlet{ExempleItemColor}{J1} +\colorlet{ExAppItemColor}{A2} +\colorlet{ProofItemColor}{J2} +\colorlet{ExerciceItemColor}{G1} +\colorlet{AcquisItemColor}{F1} +\colorlet{RecreationItemColor}{U3} +\colorlet{LexiqueItemColor}{B2} +\def\ListLabelWidth{4mm} +\def\EnumerateLabelWidth{5mm} +\newcommand*\DeclareCorrItemize[2]{% + \newenvironment{smc@corr#1itemize}{% + \def\item{\par#2~}% + \ignorespaces + } + {\par} +} +\def\smc@setalllist{% + \setlength{\leftmargin}{\ListLabelWidth}% + \setlength{\rightmargin}{0mm}% + \setlength{\labelwidth}{\ListLabelWidth}% + \setlength{\labelsep}{0mm}% + \setlength{\itemindent}{0mm}% + \setlength{\listparindent}{0mm}% + \setlength{\topsep}{0mm}% + \setlength{\partopsep}{\baselineskip}% + \setlength{\itemsep}{0mm}% + \setlength{\parsep}{0mm}% + \def\makelabel##1{##1\hss}% +} +\let\smc@setallfirstlist\smc@setalllist +\def\smc@setallbiglist{% + \setlength{\leftmargin}{\EnumerateLabelWidth}% + \setlength{\rightmargin}{0mm}% + \setlength{\labelwidth}{\EnumerateLabelWidth}% + \setlength{\labelsep}{0mm}% + \setlength{\itemindent}{0mm}% + \setlength{\listparindent}{0mm}% + \setlength{\topsep}{0mm}% + \setlength{\partopsep}{\baselineskip}% + \setlength{\itemsep}{0mm}% + \setlength{\parsep}{0mm}% + \def\makelabel##1{##1\hss}% +} +\newenvironment{smc@prerequisitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{PrerequisItemColor}{$\blacktriangleright$}} + {\smc@setalllist}% + \else + \list{\textcolor{PrerequisItemColor}{$\blacktriangleright$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{prerequis} + {\textcolor{PrerequisItemColor}{$\blacktriangleright$}} +\newenvironment{smc@AEitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{AEItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{AEItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{AE}{\textcolor{AEItemColor}{$\bullet$}} +\newenvironment{smc@exappitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ExAppItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ExAppItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{exapp}{\textcolor{ExAppItemColor}{$\bullet$}} +\newenvironment{smc@defitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{DefItemColor}% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{DefItemColor}% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{def}{% + \textcolor{DefItemColor}{% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + }% +} +\newenvironment{smc@activiteitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ActiviteItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ActiviteItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{activite}{\textcolor{ActiviteItemColor}{$\bullet$}} +\newenvironment{smc@remitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{RemItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{RemItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{rem}{% + \textcolor{RemItemColor}{% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + }% +} +\newenvironment{smc@exempleitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ExempleItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ExempleItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{exemple}{\textcolor{ExempleItemColor}{$\bullet$}} +\newenvironment{smc@proofitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ProofItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ProofItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{proof}{\textcolor{ProofItemColor}{$\bullet$}} +\newenvironment{smc@exerciceitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{ExerciceItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{ExerciceItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{exercice}{\textcolor{ExerciceItemColor}{$\bullet$}} +\newenvironment{smc@acquisitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{AcquisItemColor}{\footnotesize$\blacktriangleright$}} + {\smc@setalllist}% + \else + \list{\textcolor{AcquisItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{acquis}{\textcolor{AcquisItemColor}{$\bullet$}} +\newenvironment{smc@commentaireitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{CommentaireItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{CommentaireItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{commentaire}{\textcolor{CommentaireItemColor}{$\bullet$}} +\newenvironment{smc@recreationitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{RecreationItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{RecreationItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{recreation}{\textcolor{RecreationItemColor}{$\bullet$}} +\newenvironment{smc@annexeitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{AnnexeItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{AnnexeItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\newenvironment{smc@lexiqueitemize}{% + \ifnum\@listdepth=\z@ + \list{\textcolor{LexiqueItemColor}{$\bullet$}} + {\smc@setalllist}% + \else + \list{\textcolor{LexiqueItemColor}{$\bullet$}} + {\smc@setalllist}% + \fi +} +{\endlist} +\newenvironment{smc@libreitemize}{% + \ifnum\@listdepth=\z@ + \list{% + \color{LibreItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \else + \list{% + \color{LibreItemColor} + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax} + {\smc@setalllist}% + \fi +} +{\endlist} +\DeclareCorrItemize{libre}{% + \textcolor{LibreItemColor}{% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + }% +} +\newenvironment{bigenumerate} + {% + \let\smc@setallfirstlist\smc@setallbiglist + \begin{enumerate} + } + {\end{enumerate}} +\newcommand\DeclareEnumerate[3]{% + \newenvironment{smc@#1enumerate}{% + \gdef\smc@curr@itemcmd{#2}% + \gdef\smc@curr@itemcolor{#3}%( + \renewcommand\labelenumi{\textcolor{#3}{#2\theenumi)}}%( + \renewcommand\labelenumii{\textcolor{#3}{#2\theenumii)}}%( + \renewcommand\labelenumiii{\textcolor{#3}{#2\theenumiii)}}% + \advance\@enumdepth \@ne + \ifnum\@enumdepth>\thr@@ + \ClassError{sesamanuel}{Pas plus de 3 niveaux de liste} + {Consultez la documentation pour plus de renseignements.} + \else\ifnum\@enumdepth=\@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \expandafter + \list + \csname label\@enumctr\endcsname + {% + \usecounter{\@enumctr}% + \smc@setallfirstlist + }% + \else + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \expandafter + \list + \csname label\@enumctr\endcsname + {% + \usecounter{\@enumctr}% + \smc@setalllist + }% + \fi\fi + } + {\endlist} + \newenvironment{smc@corr#1enumerate}{% + \gdef\smc@curr@itemcmd{#2}% + \gdef\smc@curr@itemcolor{#3}%( + \setcounter{enumi}{0}% + \setcounter{enumii}{0}% + \setcounter{enumiii}{0}% + \renewcommand\labelenumi{\textcolor{#3}{#2\theenumi)}}%( + \renewcommand\labelenumii{\textcolor{#3}{#2\theenumii)}}%( + \renewcommand\labelenumiii{\textcolor{#3}{#2\theenumiii)}}% + \advance\@enumdepth \@ne + \ifnum\@enumdepth>\thr@@ + \ClassError{sesamanuel}{Pas plus de 3 niveaux de liste} + {Consultez la documentation pour plus de renseignements.} + \else + \def\smc@enum{% + \refstepcounter{enum\romannumeral\@enumdepth}% + \csname labelenum\romannumeral\@enumdepth\endcsname~ + }% + \def\item{% + \smc@enum + \def\item{\par\smc@enum}% + }% + \fi + \ignorespaces + } + {\par} +} +\DeclareEnumerate{prerequis}{}{PrerequisItemColor} +\DeclareEnumerate{exapp}{\bfseries}{ExAppItemColor} +\DeclareEnumerate{def}{\bfseries}{DefItemColor} +\DeclareEnumerate{AE}{\bfseries}{AEItemColor} +\DeclareEnumerate{activite}{\bfseries}{ActiviteItemColor} +\DeclareEnumerate{rem}{}{RemItemColor} +\DeclareEnumerate{exemple}{}{ExempleItemColor} +\DeclareEnumerate{proof}{}{ProofItemColor} +\DeclareEnumerate{exercice}{\bfseries}{ExerciceItemColor} +\DeclareEnumerate{acquis}{\bfseries}{AcquisItemColor} +\DeclareEnumerate{commentaire}{}{CommentaireItemColor} +\DeclareEnumerate{recreation}{\bfseries}{RecreationItemColor} +\DeclareEnumerate{annexe}{}{AnnexeItemColor} +\DeclareEnumerate{lexique}{}{LexiqueItemColor} +\DeclareEnumerate{libre}{}{LibreItemColor} +\def\ListHSep{2mm} +\newcount\smc@nbitem +\newcount\smc@nbline +\newcommand*\StringColitemize{colitemize} +\newcommand*\StringColenumerate{colenumerate} +\newcommand*\DeclareColItemize[3]{% + \newenvironment{#1}[1]{% + \par + \def\smc@nbcolumn{##1}% + \smc@nbitem \z@ + \edef\StringColCurrent{\StringColitemize}% + \toks@{}% + \smc@getbody + }% + {% + \expandafter\smc@splititem\the\toks@\item\@nil\item + \smc@nbline \numexpr \smc@nbitem+\smc@nbcolumn-1 + \divide\smc@nbline \smc@nbcolumn + \multido{\n=1+1}{\smc@nbline}{% + \multido{\ni=\n+\the\smc@nbline}{\smc@nbcolumn}{% + \unless\ifnum\ni>\smc@nbitem + \makebox[\ListLabelWidth]{\textcolor{#2}{#3}\hss}% + \begin{minipage}[t]{\dimexpr + (\linewidth-\ListHSep*(\smc@nbcolumn-1))% + /\smc@nbcolumn-\ListLabelWidth} + \strut\@nameuse{smc@item\ni}\strut + \end{minipage}% + \hspace{\ListHSep}% + \fi + }% + \ifnum\n=\smc@nbline + \endgraf + \else + \\ + \fi + }% + }% +} +\long\def\smc@getbody#1\end{% + \toks@\expandafter{\the\toks@#1}\smc@testend +} +\long\def\smc@testend#1{% + \def\smc@arg{#1}% + \ifx\smc@arg\StringColCurrent + \end{#1}% + \else + \toks@\expandafter{\the\toks@\end{#1}}% + \expandafter\smc@getbody + \fi +} +\long\def\smc@splititem#1\item{% + \smc@@splititem +} +\long\def\smc@@splititem#1\item{% + \def\smc@arg{#1}% + \ifx\smc@arg\@nnil + \else + \advance\smc@nbitem\@ne + \@namedef{smc@item\the\smc@nbitem}{#1}% + \expandafter\smc@@splititem + \fi +} +\DeclareColItemize{smc@prerequiscolitemize} + {PrerequisItemColor}{$\blacktriangleright$} +\DeclareColItemize{smc@AEcolitemize} + {AEItemColor}{$\bullet$} +\DeclareColItemize{smc@exappcolitemize} + {ExAppItemColor}{$\bullet$} +\DeclareColItemize{smc@defcolitemize} + {DefItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +\DeclareColItemize{smc@activitecolitemize} + {ActiviteItemColor}{$\bullet$} +\DeclareColItemize{smc@remcolitemize} + {RemItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +\DeclareColItemize{smc@exemplecolitemize} + {ExempleItemColor}{$\bullet$} +\DeclareColItemize{smc@proofcolitemize} + {ProofItemColor}{$\bullet$} +\DeclareColItemize{smc@exercicecolitemize} + {ExerciceItemColor}{$\bullet$} +\DeclareColItemize{smc@acquiscolitemize} + {AcquisItemColor}{$\bullet$} +\DeclareColItemize{smc@commentairecolitemize} + {CommentaireItemColor}{$\bullet$} +\DeclareColItemize{smc@recreationcolitemize} + {RecreationItemColor}{$\bullet$} +\DeclareColItemize{smc@annexecolitemize} + {AnnexeItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +\DeclareColItemize{smc@lexiquecolitemize} + {LexiqueItemColor}{$\bullet$} +\DeclareColItemize{smc@librecolitemize} + {LibreItemColor} + {% + \vrule width \ItemRuleWidth + height \ItemRuleHeight + depth \ItemRuleDepth + \relax + } +\newcommand*\DeclareColEnumerate[3]{% + \newenvironment{#1}[1]{% + \par\leavevmode + \advance\@enumdepth \@ne + \ifnum\@enumdepth>\thr@@ + \ClassError{sesamanuel}{Pas plus de 3 niveaux de liste} + {Consultez la documentation pour plus de renseignements.} + \else + \ifcase\@enumdepth + \or %( + \def\@enumlabel{\textcolor{#3}{#2\ni)}}%( + \or + \def\@enumlabel{\textcolor{#3}{#2{\@alph\ni})}}%( + \or + \def\@enumlabel{\textcolor{#3}{#2{\@roman\ni)}}}% + \fi + \fi + \def\smc@nbcolumn{##1}% + \smc@nbitem \z@ + \edef\StringColCurrent{\StringColenumerate}% + \toks@{}% + \smc@getbody + } + {% + \expandafter\smc@splititem\the\toks@\item\@nil\item + \smc@nbline \numexpr \smc@nbitem+\smc@nbcolumn-1 + \divide\smc@nbline \smc@nbcolumn + \multido{\n=1+1}{\smc@nbline}{% + \multido{\ni=\n+\the\smc@nbline}{\smc@nbcolumn}{% + \unless\ifnum\ni>\smc@nbitem + \makebox[\ListLabelWidth]{\@enumlabel\hss}% + \begin{minipage}[t]{\dimexpr + (\linewidth-\ListHSep*(\smc@nbcolumn-1))% + /\smc@nbcolumn-\ListLabelWidth} + \strut\@nameuse{smc@item\ni}\strut + \end{minipage}% + \hspace{\ListHSep}% + \fi + }% + \ifnum\n=\smc@nbline + \endgraf + \else + \\ + \fi + }% + }% +} +\DeclareColEnumerate{smc@prerequiscolenumerate} + {}{PrerequisItemColor} +\DeclareColEnumerate{smc@exappcolenumerate} + {\bfseries}{ExAppItemColor} +\DeclareColEnumerate{smc@defcolenumerate} + {\bfseries}{DefItemColor} +\DeclareColEnumerate{smc@AEcolenumerate} + {\bfseries}{AEItemColor} +\DeclareColEnumerate{smc@activitecolenumerate} + {}{ActiviteItemColor} +\DeclareColEnumerate{smc@remcolenumerate} + {}{RemItemColor} +\DeclareColEnumerate{smc@exemplecolenumerate} + {}{ExempleItemColor} +\DeclareColEnumerate{smc@proofcolenumerate} + {}{ProofItemColor} +\DeclareColEnumerate{smc@exercicecolenumerate} + {\bfseries}{ExerciceItemColor} +\DeclareColEnumerate{smc@acquiscolenumerate} + {\bfseries}{AcquisItemColor} +\DeclareColEnumerate{smc@commentairecolenumerate} + {\bfseries}{CommentaireItemColor} +\DeclareColEnumerate{smc@recreationcolenumerate} + {\bfseries}{RecreationItemColor} +\DeclareColEnumerate{smc@annexecolenumerate} + {\bfseries}{AnnexeItemColor} +\DeclareColEnumerate{smc@lexiquecolenumerate} + {\bfseries}{RecreationItemColor} +\DeclareColEnumerate{smc@librecolenumerate} + {\bfseries}{LibreItemColor} +\endinput +%% +%% End of file `sesamanuel.sty'. diff --git a/Master/texmf-dist/tex/latex/sesamanuel/sesamanuelTIKZ.sty b/Master/texmf-dist/tex/latex/sesamanuel/sesamanuelTIKZ.sty new file mode 100644 index 00000000000..a764626392b --- /dev/null +++ b/Master/texmf-dist/tex/latex/sesamanuel/sesamanuelTIKZ.sty @@ -0,0 +1,135 @@ +%% +%% This is file `sesamanuelTIKZ.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sesamanuel.dtx (with options: `packageTIKZ') +%% +%% sesamanuel.dtx +%% Copyright 2014-2015 Sesamath Society written by J.-C. Charpentier, S. Mengin +%% +%% Copyright (C) 2014-2015 Sesamath Society written by Jean-C\^ome Charpentier, S\'ebastien +%% Mengin. +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\def\filedate{2015/03/03} +\def\fileversion{1.0} +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{sesamanuelTIKZ}[% + \filedate\space v\fileversion\space + compagnon de Sesamanuel (SM/JCC/SM)% +] +\RequirePackage{esvect} +\RequirePackage{tikz} +\RequirePackage{tkz-tab} +\RequirePackage{pgf} +\usetikzlibrary{arrows} +\usetikzlibrary{patterns} +\newcommand{\chapeaumelon}[1]{\stackrel{\Large \frown}{#1}} +\newcommand{\Logosesa}{% + \textcolor{orange}{% + \boldmath + $ + \overline{\textcolor{gray}{S}} + \acute{\textcolor{gray}e} + \overline{ + \textcolor{gray}{sa} + \textcolor{black}{math} + } + $% + }% +} +\newcommand\TikZ{Ti\textit{k}Z} +\newcommand\UniteGras[1]{{\bfseries \boldmath #1}} +\definecolor{B1prime}{cmyk}{0.00, 1.00, 0.00, 0.50} +\definecolor{H1prime}{cmyk}{0.50, 0.00, 1.00, 0.00} +\definecolor{CyanTikz40}{cmyk}{.4,0,0,0} +\definecolor{CyanTikz20}{cmyk}{.2,0,0,0} +\tikzstyle{general}=[line width=0.3mm, >=stealth, x=1cm, y=1cm, + line cap=round, line join=round] +\tikzstyle{quadrillage}=[line width=0.3mm, color=CyanTikz40] +\tikzstyle{quadrillageNIV2}=[line width=0.3mm, color=CyanTikz20] +\tikzstyle{quadrillage55}=[line width=0.3mm, color=CyanTikz40, + xstep=0.5, ystep=0.5] +\tikzstyle{cote}=[line width=0.3mm, <->] +\tikzstyle{epais}=[line width=0.5mm, line cap=butt] +\tikzstyle{tres epais}=[line width=0.8mm, line cap=butt] +\tikzstyle{axe}=[line width=0.3mm, ->, color=Noir, line cap=rect] +\newcommand{\quadrillageSeyes}[2]{% + \draw[line width=0.3mm, color=A1!10, ystep=0.2, xstep=0.8] + #1 grid #2; + \draw[line width=0.3mm, color=A1!30, xstep=0.8, ystep=0.8] + #1 grid #2; +} +\newcommand{\axeX}[4][0]{% + \draw[axe] (#2,#1)--(#3,#1); + \foreach \x in {#4} {% + \draw (\x,#1) node {\small $+$}; + \draw (\x,#1) node[below] {\small $\x$}; + }% +} +\newcommand{\axeY}[4][0]{% + \draw[axe] (#1,#2)--(#1,#3); + \foreach \y in {#4} {% + \draw (#1, \y) node {\small $+$}; + \draw (#1, \y) node[left] {\small $\y$}; + }% +} +\newcommand{\axeOI}[3][0]{% + \draw[axe] (#2,#1)--(#3,#1); + \draw (1,#1) node {\small $+$}; + \draw (1,#1) node[below] {\small $I$}; +} +\newcommand{\axeOJ}[3][0]{% + \draw[axe] (#1,#2)--(#1,#3); + \draw (#1, 1) node {\small $+$}; + \draw (#1, 1) node[left] {\small $J$}; +} +\newcommand{\axeXgraduation}[2][0]{% + \foreach \x in {#2} {% + \draw (\x,#1) node {\small $+$}; + }% +} +\newcommand{\axeYgraduation}[2][0]{% + \foreach \y in {#2} {% + \draw (#1, \y) node {\small $+$}; + }% +} +\newcommand{\origine}{\draw (0,0) node[below left] {\small $0$};} +\newcommand{\origineO}{\draw (0,0) node[below left] {$O$};} +\newcommand{\point}[4]{\draw (#1,#2) node[#4] {$#3$};} +\newcommand{\pointGraphique}[4]{% + \draw (#1,#2) node[#4] {$#3$}; + \draw (#1,#2) node {$+$}; +} +\newcommand{\pointFigure}[4]{% + \draw (#1,#2) node[#4] {$#3$}; + \draw (#1,#2) node {$\times$}; +} +\newcommand{\pointC}[3]{\draw (#1) node[#3] {$#2$};} +\newcommand{\pointCGraphique}[3]{% + \draw (#1) node[#3] {$#2$}; + \draw (#1) node {$+$}; +} +\newcommand{\pointCFigure}[3]{% + \draw (#1) node[#3] {$#2$}; + \draw (#1) node {$\times$}; +} +\endinput +%% +%% End of file `sesamanuelTIKZ.sty'. diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index a21c71e7a5e..342b47016bf 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -460,7 +460,7 @@ my @TLP_working = qw( selectp selnolig semantic semaphor seminar semioneside sepfootnotes sepnum seqsplit serbian-apostrophe serbian-date-lat serbian-def-cyr serbian-lig - setdeck setspace seuthesis + sesamanuel setdeck setspace seuthesis sf298 sffms sfg sfmath sgame shade shadethm shadow shadowtext shapepar shipunov shorttoc diff --git a/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc index 730d8b34f7f..65391a026e9 100644 --- a/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc @@ -43,6 +43,7 @@ depend prftree depend proba depend rec-thy depend ribbonproofs +depend sesamanuel depend shuffle depend skmath depend statex diff --git a/Master/tlpkg/tlpsrc/sesamanuel.tlpsrc b/Master/tlpkg/tlpsrc/sesamanuel.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d -- cgit v1.2.3