\documentclass[ french, margin=2cm ]{neoschool} \title{La classe \texttt{neoschool}} \author{Version : 1.0.0 \quad\textemdash{}\quad Auteur : Razik Ikhlef} \date{04/01/2025} \begin{document} \maketitle La classe \texttt{neoschool} propose aux enseignants du secondaire un ensemble d'outils pour concevoir leurs documents pédagogiques (évaluations, supports de cours, fiches d'exercices avec leur correction, etc). Pour répondre aux différents besoins, elle propose huit thèmes de couleurs prédéfinis, des options de classe variées pour la mise en page et la typographie, des environnements spécialisés, des commandes dédiées et différents styles d'en-têtes préformatés pour chaque type de document. Elle intègre plusieurs dizaines d'extensions LaTeX couramment utilisées (voir la liste ci-dessous), ce qui allège considérablement le préambule et évite autant que possible les incompatibilités. Multilingue, elle prend en charge le français, l'anglais et l'allemand. \tableofcontents \section{Extensions chargées} Les extensions suivantes sont automatiquement chargées par la classe \texttt{neoschool}. \texttt{adforn}, \texttt{adjustbox}, \texttt{algpseudocode}, \texttt{amssymb}, \texttt{babel}, \texttt{bookmark}, \texttt{calc}, \texttt{changespace}, \texttt{cuted}, \texttt{environ}, \texttt{fancyvrb}, \texttt{fontawesome5}, \texttt{forest}, \texttt{iftex}, \texttt{ifthen}, \texttt{kvoptions}, \texttt{lastpage}, \texttt{marginnote}, \texttt{microtype}, \texttt{mismath} (qui charge \texttt{mathtools}), \texttt{multicol}, \texttt{needspace}, \texttt{pdftexcmds}, \texttt{pgffor}, \texttt{pgfplots}, \texttt{qrcode}, \texttt{scrlayer-scrpage}, \texttt{silence}, \texttt{siunitx}, \texttt{tabularray}, \texttt{tasks}, \texttt{tcolorbox} (avec l'option \texttt{most} qui charge les extensions \texttt{listings} et \texttt{minted}), \texttt{textcase}, \texttt{tikz}, \texttt{tikzpagenodes}, \texttt{tikzsymbols}, \texttt{ulem} (avec l'option \texttt{normalem}), \texttt{xcolor} (avec les options \texttt{table}, \texttt{svgnames}, \texttt{dvipsnames} et \texttt{x11names}), \texttt{xhfill}, \texttt{xkeyval}, \texttt{xsim} (avec les options \texttt{use-files} et \texttt{clear-aux}), \texttt{xstring}. La compilation en \texttt{pdflatex} charge les extensions \texttt{fonttenc} (avec l'option \texttt{T1}), \texttt{inputenc} (avec l'option \texttt{utf8}), \texttt{newpxtext} et \texttt{newpxmath}. La compilation en \texttt{lualatex} rend disponible les extensions \texttt{fontspec}, \texttt{luacas}, \texttt{lua-ul}, \texttt{luacolor} et applique les polices \texttt{TeX Gyre PagellaX} et \texttt{TeX Gyre Heros} en plus de \texttt{newpxmath}. L'options \texttt{graphics} charge les extensions \texttt{graphicx} et \texttt{wrapfig}, l'option \texttt{draft} les extensions \texttt{blindtext} et \texttt{lipsum} et l'option \texttt{mathastext} l'extension \texttt{mathastext}. L'option \texttt{math} charge les extensions \texttt{annotate-equations}, \texttt{bm}, \texttt{cancel}, \texttt{mathrsfs}, \texttt{nncomma}, \texttt{numprint}, \texttt{tdsfrmath} (avec les options \texttt{suite} et \texttt{taupe}), \texttt{tkz-euclide}, \texttt{witharrows} et \texttt{xlop}. L'option \texttt{notes} permet d'afficher des notes encadrées et à fond coloré dans les marges gauche et droite, de façon alternée. Elle charge l'extension \texttt{todonotes}. L'option \texttt{apmep}, qui permet de compiler directement les sujets d'annales de l'association du même nom, définit une ensemble de commandes mathématiques et charge les extensions \texttt{esvect}, \texttt{fourier-ons}, \texttt{numprint} (avec l'option \texttt{np}), \texttt{pstricks} (et de nombreux paquets de l'écosystème \texttt{pstricks}), \texttt{tabularx} et \texttt{textcomp}. L'option \texttt{mathics} permet de faire du calcul formel via \texttt{mathics} (version libre de \texttt{mathematica}) et charge les extensions \texttt{asymptote} et \texttt{latexalpha2}. \section{Options de configuration} \subsection{Langue} \begin{itemize} \item \textbf{english, french, german} : active les traductions et conventions liées à chaque langue. Ces options affectent les intitulés des théorèmes et environnements, la typographie et les conventions mathématiques. \item \textbf{nofrenchlist} : désactive le style français des listes (remet des points à la place des tirets). \item \textbf{frenchlistaspar} : traite les listes comme des paragraphes en français. \item \textbf{frenchmath} : applique les conventions mathématiques françaises (majuscules et lettres grecques droites). \end{itemize} \subsection{Apparence globale} \subsubsection{Thèmes prédéfinis} L'option \textbf{theme} = \texttt{nom-du-theme} définit le thème de couleurs du document. Les thèmes disponibles sont : \texttt{cyprus}, \texttt{kassio}, \texttt{frost}, \texttt{spring}, \texttt{arbutus}, \texttt{duo}, \texttt{navy}, \texttt{royal}. La plupart d'entre eux sont inspirés des \textit{ef-themes} pour \textit{emacs} de Protesilaos Stavrou. \subsubsection{Modes de couleur} \begin{itemize} \item \textbf{normal} : utilise des couleurs différentes pour chaque type d'environnement. \item \textbf{unicolor} : utilise une couleur unique pour tous les environnements : \begin{itemize} \item la couleur du titre est utilisée comme base ; \item les variations sont obtenues par transparence. \end{itemize} \item \textbf{print} : convertit toutes les couleurs en noir pour l'impression. \item \textbf{gradientheadpalette} : utilise un dégradé de la couleur du titre pour les autres titres (sections, sous-sections, titre de théorèmes, etc.). \end{itemize} \subsubsection{Personnalisation des couleurs} \begin{itemize} \item \textbf{globalcolor} = \texttt{couleur} : définit la couleur du texte. \item \textbf{titlecolor} = \texttt{couleur} ou \textbf{titlehexcolor} = \texttt{code hex} : définit la couleur du titre. \item \textbf{headcolor} = \texttt{couleur} : définit la couleur des en-têtes de section. \item \textbf{subcolor} = \texttt{couleur} : définit la couleur des sous-sections. \item \textbf{subsubcolor} = \texttt{couleur} : définit la couleur des sous-sous-sections. \item \textbf{headfootcolor} = \texttt{couleur} : définit la couleur des en-têtes et pieds de page. \end{itemize} \subsubsection{Options d'affichage} \begin{itemize} \item \textbf{noframe} : supprime les cadres des environnements. \item \textbf{noback} : supprime les fonds colorés. \item \textbf{nocodeframe} : supprime les cadres des blocs de code. \item \textbf{scale} : harmonise les dimensions des polices en \texttt{lualatex}. \end{itemize} \subsection{Personnalisation du résumé} L'option \texttt{abstracttitle} permet de personnaliser le titre de l'environnement \texttt{abstract} : \begin{code}{latex} % Dans le préambule \documentclass[abstracttitle=Résumé]{neoschool} % Dans le document \begin{abstract} Contenu du résumé... \end{abstract} \end{code} \subsection{Typographie} \begin{itemize} \item \textbf{sfbody} : active la police sans empattements pour le corps du texte. \item \textbf{sfall} : active la police sans empattements pour tout le document. \item \textbf{mathastext} : utilise la police de texte pour les mathématiques. \item \textbf{mainface} = \texttt{police} : police principale du document. \item \textbf{mainfaceoptions} = \texttt{options} : options de la police principale. \item \textbf{sansface} = \texttt{police} : police sans empattements. \item \textbf{sansfaceoptions} = \texttt{options} : options de la police sans empattements. \item \textbf{monoface} = \texttt{police} : police à chasse fixe. \item \textbf{monofaceoptions} = \texttt{options} : options de la police à chasse fixe. \item \textbf{mathface} = \texttt{police} : police mathématique. \item \textbf{mathfaceoptions} = \texttt{options} : options de la police mathématique (uniquement en \texttt{pdflatex}). \item \textbf{facefamily} = \texttt{famille} : famille de polices complète. \item \textbf{facefamilyoptions} = \texttt{options} : options de la famille de polices. \end{itemize} \subsection{Mise en page} \subsubsection{Marges et espacement} \begin{itemize} \item \textbf{margin} = \texttt{longueur} : définit la largeur des marges horizontales (2,5 cm par défaut) ; les marges verticales s'adaptent en conséquence. \item \textbf{notes} = \texttt{longueur} : active les \textit{todonotes} dans les marges et définit leur largeur. \item \textbf{noindent} : supprime l'indentation des paragraphes. \item \textbf{indent} = \texttt{longueur} : définit la largeur de l'indentation (1 em par défaut). \item \textbf{compact} : \begin{itemize} \item réduit l'espacement entre les paragraphes ; \item diminue les marges des environnements ; \item compresse l'interligne. \end{itemize} \end{itemize} \subsubsection{Options de sortie} \begin{itemize} \item \textbf{2a5toa4} : affiche deux fois la même page A5 sur une page A4 en mode paysage. \item \textbf{2a4toa3} : affiche deux fois la même page A4 sur une page A3 en mode paysage. \item \textbf{4a5toa3} : affiche quatre fois la même page A5 sur une page A3. \item \textbf{2toa3} : affiche deux pages A4 quelconques sur une page A3 en mode paysage. \item \textbf{bookleta5} : génère un livret en A5 (quatre pages par feuille A4). \item \textbf{bookleta4} : génère un livret en A4 (quatre pages par feuille A3). \end{itemize} \subsubsection{En-têtes et pieds de page} \begin{itemize} \item \textbf{fullheader} : active l'en-tête et le pied de page complets. \begin{itemize} \item En-tête : type de document à gauche, titre au centre et niveau de classe à droite. \item Pied de page : date à gauche, établissement au centre et pagination à droite. \end{itemize} \item \textbf{headrule} : ajoute un filet sous l'en-tête. \item \textbf{footrule} : ajoute un filet au-dessus du pied de page. \item \textbf{headfootrule} : active les deux filets. \end{itemize} \section{Styles de document} \subsection{Styles de titre} \subsubsection{Styles d'examen} \begin{itemize} \item \textbf{exam} : style complet pour examens avec en-tête détaillé. \end{itemize} \begin{code}{latex} \documentclass[exam]{neoschool} \neoheader{ type = Devoir surveillé, school = Lycée Poincarré, level = Terminale, duration = 2h, calculator = true % ou false ou exam } \end{code} \begin{itemize} \item \textbf{shortexam} : style compact pour examens avec en-tête simplifié. \item \textbf{mockexam} : style pour épreuves type baccalauréat ou brevet blancs avec page de garde normalisée. \end{itemize} \subsubsection{Styles d'évaluation} \begin{itemize} \item \textbf{eval} : style standard pour évaluations. \end{itemize} \begin{code}{latex} \documentclass[eval]{neoschool} \neoheader{ type = Contrôle, school = Collège Alan Turing, level = Quatrième } \end{code} \begin{itemize} \item \textbf{evalicons} : ajoute des icônes à l'en-têtes \texttt{evel}. \item \textbf{evalgrade} : ajoute un bandeau de notation. \item \textbf{evaliconsgrade} : style complet avec icônes et notation. \item \textbf{shorteval} : style compact pour évaluations. \end{itemize} \subsubsection{Styles avec bulles} \begin{itemize} \item \textbf{bubbles} : style avec fond à bulles colorées. \item \textbf{shortbubbles} : version compacte du style bulles. \end{itemize} \subsubsection{Autres styles de titre} \begin{itemize} \item \textbf{titleornament} : ajoute des ornements en-dessous du titre. \item \textbf{titlerule} : ajoute un filet sous le titre. \item \textbf{titlemidrule} : ajoute un filet central sous le titre. \item \textbf{titlefullrule} : ajoute un filet en pleine largeur sous le titre. \item \textbf{fancybox} : titre avec boîte grise élégante. \item \textbf{onlytitleleft} : affiche uniquement le titre, aligné à gauche. \item \textbf{onlytitle} : affiche uniquement le titre, centré. \item \textbf{onlytitleright} : affiche uniquement titre, aligné à droite. \item \textbf{shorttitle} : style de titre compact. \item \textbf{shortlesson} : style compact pour les leçons. \end{itemize} \subsection{Configuration de l'en-tête} L'en-tête du document peut être configuré avec la commande \texttt{\textbackslash neoheader} : \begin{code}{latex} \neoheader{ type = {Type de document}, school = {Nom de l'établissement}, academy = {Nom de l'académie}, level = {Niveau de classe}, duration = {Durée}, calculator = {true/false/exam}, leftcontent = {\faIcon{...}}, rightcontent = {\faIcon{...}}, } \end{code} \subsection{Options de formatage des titres} \subsubsection{Styles globaux} \begin{itemize} \item \textbf{headstyle} = \texttt{style} : style de police pour tous les en-têtes (\texttt{sffamily} par défaut). \begin{itemize} \item Sections, sous-sections, etc. \item En-têtes de théorèmes et exercices. \end{itemize} \begin{code}{latex} \documentclass[headstyle=rmfamily]{neoschool} \end{code} \item \textbf{headweight} = \texttt{graisse} : graisse pour tous les en-têtes (\texttt{bfseries} par défaut). \begin{code}{latex} \documentclass[ headstyle=sffamily, headweight=mdseries ]{neoschool} \end{code} \item \textbf{headshape} = \texttt{forme} : forme pour tous les en-têtes (\texttt{scshape} par défaut). \begin{code}{latex} \documentclass[ headstyle=sffamily, headshape=upshape ]{neoschool} \end{code} \end{itemize} \subsubsection{Style du titre principal} \begin{itemize} \item \textbf{titlestyle} = \texttt{style} : style pour le titre principal (hérite de \texttt{headstyle}). \item \textbf{titleweight} = \texttt{graisse} : graisse du titre principal (hérite de \texttt{headweight}). \item \textbf{titleshape} = \texttt{forme} : forme du titre principal (\texttt{upshape} par défaut). \item \textbf{titlealign} = \texttt{alignement} : alignement du titre (\texttt{center} par défaut). \end{itemize} \begin{code}{latex} \documentclass[ titlestyle=sffamily, titleweight=bfseries, titleshape=upshape, titlealign=left ]{neoschool} \end{code} \subsubsection{Style des sections} \begin{itemize} \item \textbf{sectionnumstyle} = \texttt{style} : style de numérotation. \begin{itemize} \item \texttt{circle} : numéro encerclé. \item \texttt{box} : numéro encadré. \item \texttt{dash} : tiret après le numéro. \item \texttt{plain} : numéro simple. \end{itemize} \item \textbf{sectiontextstyle} = \texttt{style} : style du texte. \begin{itemize} \item \texttt{sc} : petites capitales. \item \texttt{upper} : majuscules. \item \texttt{lower} : minuscules. \end{itemize} \item \textbf{sectionstyle} = \texttt{style} : style global de la section. \begin{itemize} \item \texttt{ornaments} : avec ornements décoratifs. \item \texttt{underline} : souligné. \item \texttt{normal} : style simple. \item \texttt{highlighted} : avec surlignage. \item \texttt{shadedline} : avec ligne ombrée. \end{itemize} \item \textbf{sectionalign} = \texttt{alignement} : alignement des sections. \begin{itemize} \item \texttt{left} : à gauche. \item \texttt{center} : centré \item \texttt{right} : à droite. \end{itemize} \end{itemize} \begin{code}{latex} \documentclass[ sectionnumstyle=circle, sectiontextstyle=upper, sectionstyle=highlighted, sectionalign=left ]{neoschool} \end{code} \subsubsection{Style des en-têtes/pieds de page} \begin{itemize} \item \textbf{headfootstyle} = \texttt{style} : style des en-têtes/pieds de page (basé sur \texttt{headstyle}). \end{itemize} \begin{code}{latex} \documentclass[headfootstyle=sffamily]{neoschool} \end{code} \subsubsection{Exemple complet de configuration} \begin{code}{latex} \documentclass[ % Style global headstyle=sffamily, headweight=bfseries, headshape=scshape, % Titre principal titlestyle=sffamily, titleweight=bfseries, titleshape=upshape, titlealign=center, % Sections sectionnumstyle=circle, sectiontextstyle=upper, sectionstyle=highlighted, sectionalign=left, % En-têtes/pieds de page headfootstyle=sffamily ]{neoschool} \end{code} \section{Disposition des contenus} \subsection{Positionnement absolu d'objets} La commande \texttt{\textbackslash positionobject} permet de placer précisément un élément sur la page : \begin{code}{latex} % Syntaxe \positionobject{x-shift}{y-shift}{scale}{contenu} \begin{itemize} \item \texttt{x-shift} : décalage horizontal depuis le coin supérieur gauche. \item \texttt{y-shift} : décalage vertical depuis le coin supérieur gauche. \item \texttt{scale} : facteur d'échelle pour le contenu. \item \texttt{contenu} : élément à positionner (image, texte, etc.). \end{itemize} % Exemple : Image en haut à droite \positionobject{15cm}{1cm}{0.5}{\includegraphics{logo.png}} % Exemple : Texte en bas de page \positionobject{2cm}{25cm}{1}{Note de bas de page spéciale} \end{code} \subsection{Mise en page à deux colonnes} La commande \textbf{\textbackslash splitcontent} permet de diviser le contenu horizontalement : \begin{code}{latex} % Syntaxe : \splitcontent[largeur1][espace]{contenu1}{contenu2} % Exemple avec valeurs personnalisées \splitcontent[0.6][0.05]{ Cette partie occupe 60 % de la largeur totale }{ Cette partie occupe 35 % (5 % d'espace entre les deux) } % Exemple avec valeurs par défaut (50 % / 50 %) \splitcontent{ Première colonne }{ Seconde colonne } \end{code} \subsection{Environnements côte à côte} L'environnement \texttt{sidebyside} permet de créer des boîtes à deux colonnes avec des styles cohérents : \begin{code}{latex} \begin{sidebyside}[options] % Contenu gauche \tcblower % Contenu droit \end{sidebyside} \end{code} Les options sont celles de \texttt{tcolorbox}. \begin{code}{latex} \begin{sidebyside}[ title=Comparaison, colback=exampleColor!5, colbacklower=exampleColor!10 ] Première version \tcblower Version améliorée \end{sidebyside} \end{code} \subsection{Association texte et image} La commande \textbf{\textbackslash textwithimage} combine texte et image~: \begin{code}{latex} % Syntaxe : \textwithimage[*]{largeur_image}{échelle_image}{texte}{chemin_image} % L'étoile (*) inverse la position de l'image (droite par défaut) % Image à droite (30 % de la largeur) \textwithimage{0.3}{0.95}{ Ce texte décrit l'image ci-contre... }{images/figure.png} % Image à gauche (40 % de la largeur) \textwithimage*{0.4}{0.9}{ Description à droite de l'image... }{images/schema.png} \end{code} \subsection{QR codes et contenus} La commande \textbf{\textbackslash withqrcode} intègre un QR code avec du contenu associé : \begin{code}{latex} % Syntaxe : \withqrcode[*][taille]{url}{contenu} % L'étoile (*) place le QR code à droite (gauche par défaut) % QR code à gauche (2 cm par défaut) \withqrcode{https://example.com}{ Scanner pour plus d'informations } % QR code de 3cm à droite \withqrcode*[3cm]{https://exercises.com}{ Accéder aux exercices en ligne } \end{code} \subsection{Grilles et papiers} \subsubsection{Grilles personnalisables} \begin{itemize} \item \textbf{\textbackslash grid} : grille à petits carreaux. \end{itemize} \begin{code}{latex} \grid[blue]{10cm}{5cm} % Grille bleue de 10 x 5 cm \end{code} \begin{itemize} \item \textbf{\textbackslash customgrid} : grille avec espacement. personnalisé \end{itemize} \begin{code}{latex} \customgrid[red][4mm][4mm]{12cm}{8cm} % Grille rouge, mailles de 4 mm \end{code} \begin{itemize} \item \textbf{\textbackslash frenchgrid} : grille à grands carreaux de type Seyès. \end{itemize} \begin{code}{latex} \frenchgrid{15cm}{10cm} % Grille de type cahier français \end{code} \subsubsection{Pages entières} \begin{itemize} \item \textbf{\textbackslash notebook} : page de type cahier avec lignes horizontales et marge rouge. \end{itemize} \begin{code}{latex} \notebook % Active le style cahier ligné \end{code} \begin{itemize} \item \textbf{\textbackslash nbminorgrid} : page entièrement recouverte de petits carreaux. \end{itemize} \begin{code}{latex} \nbminorgrid % Active le quadrillage fin \end{code} \begin{itemize} \item \textbf{\textbackslash nbmajorgrid} : page entièrement recouverte de grands carreaux. \end{itemize} \begin{code}{latex} \nbmajorgrid % Active le quadrillage Seyès \end{code} \subsection{Boîtes simples} L'environnement \texttt{neobox} permet de créer rapidement des boîtes simples. Il existe en deux variantes : \texttt{neobox} avec cadre et \texttt{neobox*} sans cadre visible : \begin{code}{latex} % Boîte standard \begin{neobox}[colframe=blue,colback=blue!5] Texte dans une boîte... \end{neobox} % Boîte sans cadre avec fond coloré \begin{neobox*}[colback=gray!10] Texte sur fond gris... \end{neobox*} \end{code} \section{Exercices} \subsection{Exercices et évaluations} \subsubsection{Configuration des exercices} L'environnement \texttt{exercise} accepte les options suivantes. \begin{itemize} \item \textbf{points} = \texttt{nombre} : nombre de points de l'exercice. \item \textbf{level} = \texttt{nombre} : niveau de difficulté (affiché sous forme d'étoiles). \item \textbf{subtitle} = \texttt{texte} : sous-titre ou description de l'exercice. \item \textbf{icon} = \texttt{icône} : icône personnalisée (utilise la bibliothèque d'icônes \textit{Font Awesome}). \item \textbf{topic} = \texttt{thème} : thème ou chapitre concerné. \item \textbf{subject} = \texttt{matière} : matière concernée. \item \textbf{ID} = \texttt{identifiant} : identifiant unique pour référencement. \item \textbf{template} = \texttt{style} : style d'affichage spécifique pour cet exercice. \end{itemize} \begin{code}{latex} \begin{exercise}[ points=4, level=2, subtitle=Dérivation, icon=\faPencil, topic=Analyse, subject=Mathématiques, ID=der01, template=elegant-box ] Calculer la dérivée de la fonction $f$ définie sur $]0 ; +\infty[$ par $f(x)=x^2\ln(x)$. \end{exercise} L'environnement \texttt{solution} doit immédiatement suivre l'environnement \texttt{exercise} correspondant. La correction des exercices ne s'affiche pas par défaut. \begin{solution} On utilise la formule du produit... \end{solution} % Pour référencer l'exercice ailleurs : Comme vu dans l'exercice~\exercisenumber{der01}. \end{code} \subsubsection{Options globales} \begin{itemize} \item \textbf{exerciseicons} : active les icônes pour tous les exercices. \item \textbf{answers} : affiche automatiquement toutes les corrections des exercices. \item \textbf{shuffle} : mélange les choix de réponse dans les QCM. \item \textbf{sectionthmcounter} : numérote les exercices par section. \item \textbf{sharedexcounter} : partage le compteur avec les théorèmes. \end{itemize} \subsubsection{Templates d'exercices} La classe offre de nombreux styles prédéfinis pour les exercices. \begin{itemize} \item \textbf{box} : boîte standard avec bordure et titre. \item \textbf{elegant-box} : boîte avec barre latérale colorée. \item \textbf{shaded-box} : boîte avec ombrage et titre en bannière. \item \textbf{slanted-box} : boîte avec titre en bandeau incliné. \item \textbf{sober-box} : boîte minimaliste avec titre en couleur. \item \textbf{classic-box} : boîte classique avec titre en bandeau. \item \textbf{classy-box} : boîte sophistiquée avec titre décoratif. \item \textbf{rect-box} : boîte rectangulaire simple. \item \textbf{rect-box-outlined} : boîte rectangulaire avec contour. \item \textbf{num-box} : boîte numérotée compacte. \item \textbf{num-box-outlined} : boîte numérotée avec contour. \item \textbf{ex-num-box} : boîte ``Ex.'' numérotée. \item \textbf{ex-num-box-outlined} : boîte ``Ex.'' numérotée avec contour. \item \textbf{box-hrule} : boîte avec règle horizontale. \item \textbf{box-hrule-out} : boîte avec règle horizontale et contour. \item \textbf{box-hrule-in} : boîte avec règle horizontale intérieure. \item \textbf{boxed} : simple boîte avec titre. \item \textbf{boxed-out} : boîte avec contour et titre. \item \textbf{inline} : texte en ligne avec titre. \item \textbf{section} : titre de type section. \item \textbf{subsection} : titre de type sous-section. \item \textbf{terminal} : style console avec icône terminal. \item \textbf{block} : style minimaliste. \item \textbf{hrule} : avec règle horizontale. \end{itemize} Pour définir un template pour tout le document, il suffit d'utiliser la commande \texttt{\textbackslash xsimsetup} dans la préambule : \begin{code}{latex} \xsimsetup{ exercise/template = elegant-box, % template des exercices solution/template = sol-box % template des solutions } \end{code} \subsubsection{QCM et choix multiples} \begin{itemize} \item \textbf{choices} : pour les QCM à réponse unique. \end{itemize} \begin{code}{latex} \begin{exercise}[points=2,ID=qcm01] Quelle est la dérivée de $e^x$ ? \begin{choices} \choice $x e^x$ \choice[\correct] $e^x$ \choice $e^{x-1}$ \choice $\ln(x)$ \end{choices} \end{exercise} \end{code} \begin{itemize} \item \textbf{checkboxes} : pour les QCM à réponses multiples. \end{itemize} \begin{code}{latex} \begin{exercise}[points=3,ID=qcm02] Parmi ces nombres, lesquels sont premiers ? \begin{checkboxes} \checkbox[\correct*] 2 \checkbox[\correct*] 3 \checkbox 4 \checkbox[\correct*] 5 \end{checkboxes} \end{exercise} \end{code} \section{Environnements mathématiques} \subsection{Styles de théorèmes} Les styles suivants sont disponibles pour tous les environnements de type théorème : \textbf{amslikethm} (style minimaliste), \textbf{boxedthm}, \textbf{classicthm}, \textbf{classythm}, \textbf{elegantthm}, \textbf{shadedthm}, \textbf{slantedthm}, \textbf{soberthm}. Options communes : \begin{itemize} \item \textbf{title} = \texttt{texte} : titre du théorème. \item \textbf{label} = \texttt{nom} : étiquette pour référencement. \item \textbf{colback} = \texttt{couleur} : couleur de fond. \item \textbf{colframe} = \texttt{couleur} : couleur du cadre. \item \textbf{coltitle} = \texttt{couleur} : couleur du titre. \item \textbf{fonttitle} = \texttt{commandes} : style du titre. \end{itemize} \subsection{Options de numérotation} \begin{itemize} \item \textbf{sectionthmcounter} : compteurs relatifs à chaque section. \item \textbf{sharedthmcounter} : compteur partagé entre tous les environnements. \item \textbf{theoremgroup} : regroupe certains environnements de théorèmes. \item \textbf{thmgroupcounter} : active un compteur pour les groupes. \end{itemize} \subsection{Environnements mathématiques} \begin{itemize} \item \textbf{theorem} : pour les théorèmes. \end{itemize} \begin{code}{latex} \begin{theorem}[title=Théorème de Pythagore,label=pyth] Dans un triangle rectangle, le carré de l'hypoténuse est égal à la somme des carrés des deux autres côtés. \end{theorem} % Référencement : D'après le théorème~\ref{thm:pyth} \end{code} \begin{itemize} \item \textbf{lemma} : pour les lemmes. \end{itemize} \begin{code}{latex} \begin{lemma}[title=Lemme préparatoire,label=prep] Contenu du lemme... \end{lemma} % Référencement : Selon le lemme~\ref{lem:prep} \end{code} \begin{itemize} \item \textbf{corollary} : pour les corollaires. \end{itemize} \begin{code}{latex} \begin{corollary}[ title=Réciproque de Pythagore, label=pythrecip ] Si $a^2 + b^2 = c^2$, alors le triangle est rectangle en $A$. \end{corollary} % Référencement : Selon le corollaire~\ref{cor:pythrecip} \end{code} \begin{itemize} \item \textbf{proposition} : pour les propositions (\textbf{propo} pour le référencement). \item \textbf{property} : pour les propriétés (\textbf{prop} pour le référencement). \item \textbf{definition} : pour les définitions (\textbf{def} pour le référencement). \item \textbf{method} : pour les méthodes (\textbf{meth} pour le référencement). \item \textbf{activity} : pour les activités (\textbf{act} pour le référencement). \item \textbf{application} : pour les applications (\textbf{appl} pour le référencement). \item \textbf{remark} : pour les remarques. \item \textbf{remarks} : pour une série de remarques. \item \textbf{example} : pour les exemples. \item \textbf{examples} : pour une série d'exemples. \end{itemize} \section{Code informatique} La classe \texttt{neoschool} propose deux options pour la gestion du code. \begin{itemize} \item \textbf{listings} (par défaut) : utilise l'extension \texttt{listings}. \item \textbf{minted} : utilise l'extension \texttt{minted} (qui nécessite le langage \textit{Python} et sa bibliothèque \texttt{Pygments}). \end{itemize} \subsection{Option listings} \subsubsection{Styles de code disponibles} \begin{itemize} \item \textbf{lststyle} = \texttt{style} : style de coloration. \begin{itemize} \item \texttt{colorful} : coloration complète (par défaut). \item \texttt{minimal} : style minimaliste. \item \texttt{academic} : style ``académique'' avec numéros de ligne. \item \texttt{modern} : style ``moderne'' avec fond coloré. \end{itemize} \end{itemize} \subsubsection{Boîtes de code personnalisées} La classe définit l'environnement \texttt{code} dont la structure est la suivante : \begin{lstlisting}[style=latex] \begin{code}[options]{langage}[titre][style-boite] code source... \end{code} \end{lstlisting} Styles de boîtes : \textbf{box-minimal}, \textbf{box-fancy}, \textbf{box-classic}, \textbf{box-elegant}, \textbf{box-diagonal}, \textbf{box-bevel}, \textbf{box-corner}, \textbf{box-rounded}, \textbf{box-downhill}, \textbf{box-bottomtitle}, \textbf{box-bottomtitlef}. \begin{lstlisting}[language=TeX] \begin{code}[numbers=left]{python}[Exemple de fonction][box-fancy] def hello(name): print(f"Hello, {name}!") \end{code} \end{lstlisting} \subsubsection{Langages et styles préconfigurés} \begin{itemize} \item Python \item Java \item C++ \item JavaScript \item SQL \item LaTeX \item Bash \item Assembly \item Lisp \item JSON \item YAML \item TOML \item CSV \item Markdown \end{itemize} \subsubsection{Commandes additionnelles} \begin{itemize} \item \textbf{\textbackslash codeinline} : code en ligne. \end{itemize} \begin{code}{latex} \codeinline[python]{print("Hello")} \end{code} \begin{itemize} \item \textbf{\textbackslash codeinput} : code chargé depuis un fichier. \end{itemize} \begin{code}{latex} \codeinput[options]{langage}{fichier.py}[titre][style-boite] \end{code} \subsection{Option minted} Lorsque l'option \textbf{minted} est activée, les environnements de code utilisent \texttt{Pygments} pour la coloration syntaxique. L'environnement \texttt{code} est également disponible avec l'option \texttt{minted}, avec la même syntaxe : \begin{lstlisting}[language=TeX] \usemintedstyle{tango} \begin{code}[linenos,highlightlines={2,3}]{python}[Fonction][box-fancy] def greet(name): message = f"Hello, {name}!" print(message) return message \end{code} \end{lstlisting} \section{Notes et annotations} \subsection{Notes marginales} Les notes peuvent être placées dans la marge avec différentes options : \begin{itemize} \item \textbf{\textbackslash tdnote} : notes colorées et encadrées dans la marge, alternant entre gauche et droite. \end{itemize} \begin{code}{latex} \tdnote{Point important à retenir} \tdnote[backgroundcolor=blue!5]{Note avec fond bleu clair} \end{code} \begin{itemize} \item \textbf{\textbackslash boxnote/\textbackslash tdmark} : l'extension \texttt{todonote} ne permettant pas de placer des notes directement dans des environnements, il est nécessaire d'utiliser un point d'ancrage (\textbf{\textbackslash tdmark}) ayant le même label que le contenu de la note proprement dite (\textbf{\textbackslash boxnote}). \end{itemize} \begin{code}{latex} \boxnote[thm1]{Ce théorème est important} \begin{theorem} \tdmark[thm1] % Point de référence pour la note (même label) Contenu du théorème... \end{theorem} \end{code} Les options possibles pour les notes sont les suivantes. \begin{itemize} \item \textbf{backgroundcolor} = \texttt{couleur} : couleur de fond. \item \textbf{color} = \texttt{couleur} : couleur du texte. \item \textbf{bordercolor} = \texttt{couleur} : couleur de la bordure. \item \textbf{width} = \texttt{longueur} : largeur de la note. \item \textbf{linecolor} = \texttt{couleur} : couleur de la ligne de référence. \end{itemize} \subsection{Admonitions} Les environnements d'admonition permettent de mettre en avant des informations importantes. Chaque type a sa propre couleur et icône par défaut. \begin{itemize} \item \textbf{note} : remarques générales. \end{itemize} \begin{code}{latex} \begin{note}[Remarque importante][\faInfo] Points à retenir... \end{note} \end{code} \begin{itemize} \item \textbf{info} : informations complémentaires. \end{itemize} \begin{code}{latex} \begin{info}[Pour aller plus loin] Informations additionnelles... \end{info} \end{code} \begin{itemize} \item \textbf{warning} : avertissements. \end{itemize} \begin{code}{latex} \begin{warning}[Attention !][\faExclamationTriangle] Points critiques à ne pas oublier... \end{warning} \end{code} \begin{itemize} \item \textbf{important} : points essentiels. \end{itemize} \begin{code}{latex} \begin{important}[Point clé] Concept fondamental... \end{important} \end{code} \begin{itemize} \item \textbf{tip} : conseils et astuces. \end{itemize} \begin{code}{latex} \begin{tip}[Astuce de calcul][\faLightbulb] Une méthode plus rapide... \end{tip} \end{code} \begin{itemize} \item \textbf{reminder} : points à retenir. \end{itemize} \begin{code}{latex} \begin{reminder}[À mémoriser] Formules essentielles... \end{reminder} \end{code} \begin{itemize} \item \textbf{summary} : résumés. \end{itemize} \begin{code}{latex} \begin{summary}[En bref] Points principaux du chapitre... \end{summary} \end{code} \begin{itemize} \item \textbf{toolbox} : boîte à outils. \end{itemize} \begin{code}{latex} \begin{toolbox}[Outils nécessaires] \begin{itemize} \item Calculatrice \item Règle graduée \item Compas \end{itemize} \end{toolbox} \end{code} Toutes les admonitions acceptent trois paramètres optionnels : \begin{itemize} \item un titre optionnel ; \item une icône personnalisée ; \item des options de personnalisation (couleurs, bordures). \end{itemize} \section{Notation et correction} \subsection{Outils de notation} \begin{itemize} \item \textbf{\textbackslash gradingstrip} : bandeau de notation (note et appréciation). \end{itemize} \begin{code}{latex} % Bandeau simple \gradingstrip % Bandeau avec total spécifié \gradingstrip[20] \end{code} L'option \textbf{totalpoints} définit le nombre total de points par défaut. \begin{code}{latex} \documentclass[totalpoints=20]{neoschool} \end{code} \begin{itemize} \item \textbf{\textbackslash mrk, \textbackslash mrks} : points dans la marge. \end{itemize} \begin{code}{latex} % Un point \mrk[Bien vu !]{1} % Marge droite avec commentaire \mrk*{1} % Marge gauche % Plusieurs points \mrks{3} % 3 points marge droite \mrks*[Barème]{3} % 3 points marge gauche avec texte \end{code} \subsection{Zones de réponse} \begin{itemize} \item \textbf{\textbackslash answerfield} : zone de réponse avec fond coloré. \end{itemize} \begin{code}{latex} % Zone pleine largeur, 3 lignes \answerfield{3} % Zone 80% largeur, 5 lignes \answerfield[0.8\linewidth]{5} \end{code} \begin{itemize} \item \textbf{\textbackslash answerframe} : zone de réponse encadrée. \end{itemize} \begin{code}{latex} % Cadre pleine largeur, 3 lignes \answerframe{3} % Cadre 80% largeur, 5 lignes \answerframe[0.8\linewidth]{5} \end{code} \begin{itemize} \item \textbf{\textbackslash vardots} : ligne pointillée de longueur variable. \end{itemize} \begin{code}{latex} % Ligne pointillée pleine largeur \vardots % Ligne pointillée de 5cm \vardots[5cm] \end{code} \subsection{Marqueurs et symboles} \begin{itemize} \item \textbf{\textbackslash cmark} : symbole de validation (\cmark) \item \textbf{\textbackslash xmark} : symbole d'erreur (\xmark) \item \textbf{\textbackslash unchecked} : case à cocher vide \unchecked \item \textbf{\textbackslash done} : case cochée avec \done \item \textbf{\textbackslash wontfix} : case cochée avec \wontfix \end{itemize} \begin{code}{latex} \begin{itemize} \unchecked Objectif 1 à réaliser \done Objectif 2 terminé \wontfix Objectif 3 abandonné \end{itemize} \end{code} \subsection{Compétences et évaluation} \begin{itemize} \item \textbf{\textbackslash competencies} : tableau d'évaluation par compétences. \end{itemize} \begin{code}{latex} \competencies{ Calculer une dérivée\\ Étudier les variations\\ Résoudre une équation } \end{code} Le tableau affiche automatiquement : \begin{itemize} \item 4 niveaux de maîtrise avec émojis ; \item des cases à cocher pour l'évaluation. \end{itemize} \section{Commandes mathématiques et outils spéciaux} \subsection{Commandes mathématiques}\label{commandes-mathuxe9matiques} \subsubsection{Mise en valeur et coloration}\label{mise-en-valeur-et-coloration} \begin{itemize} \item \textbf{\textbackslash mhl} : surlignage d'expressions mathématiques. \end{itemize} \begin{code}{latex} % Surlignage jaune par défaut $\mhl{x^2}$ % Surlignage personnalisé $\mhl[blue!20]{f'(x)}$ % Dans une équation sur plusieurs lignes \begin{align*} f(x) &= x^2 + \mhl{2x} + 1 \\ f'(x) &= 2x + \mhl{2} \end{align*} \end{code} \begin{itemize} \item \textbf{\textbackslash mc} : coloration d'expressions mathématiques. \end{itemize} \begin{code}{latex} % Couleur du thème par défaut $\mc{f(x)}$ % Couleur personnalisée $\mc[red]{g(x)}$ % Dans une équation \[ \mc{f'(x)} = \lim_{h \to 0} \mc[blue]{\frac{f(x+h)-f(x)}{h}} \] \end{code} \subsubsection{Support APMEP} Lorsque l'option \textbf{apmep} est activée, les commandes suivantes sont disponibles. \begin{itemize} \item Commandes de vecteurs : \end{itemize} \begin{code}{latex} \vect{u} % Vecteur u avec flèche \vectt{AB} % Vecteur AB avec espacement \end{code} \begin{itemize} \item Repères et coordonnées : \end{itemize} \begin{code}{latex} \Oij % Repère (O; i,j) \Oijk % Repère (O; i,j,k) \Ouv % Repère (O; u,v) \end{code} \begin{itemize} \item Commandes spéciales : \end{itemize} \begin{code}{latex} \euro % Symbole euro \cg % Crochet gauche \cd % Crochet droit \pg % Plus grand ou égal \pp % Plus petit ou égal \barre{x} % x surligné \ds % \displaystyle \end{code} \subsection{Outils spéciaux} \subsubsection{Arbres et graphes} \begin{itemize} \item Arbres avec \emph{l}xtension \texttt{forest} : \end{itemize} \begin{code}{latex} \begin{neotree} A [B [D] [E] ] [C [F] [G] ] \end{neotree} % Avec poids sur les arêtes \begin{neotree} A [B, w=\frac{1}{3} [D] [E] ] [C, w=\frac{2}{3}] \end{neotree} \end{code} \begin{itemize} \item Graphes (uniquement avec une compilation en \texttt{lualatex}) : \end{itemize} \begin{code}{latex} \neograph{ A -- {B, C, D, F}, B -- {C, D, F}, C -> ["3"] D, D -- [bend left=10] {E}, E -- [bend left=10] {D}, E -- [bend left=10] {F}, F -- [bend left=10] {E}, A -- [loop] A } \end{code} \subsubsection{Grille mathématique} L'environnement \texttt{mathgrid} permet de disposer des équations en grille : \begin{code}{latex} \begin{mathgrid}{3} \neoline \neocol{ T &= 7xx+9x\\ &= (7+9)x \\ &= 16x } \neocol{ U &= 8x^{2}-5x^{2}+x^{2}\\ &= (8-5+1)x^{2} \\ &= 4x^{2} } \neocol{ V &= 5a^{2}-6a\\ &= a(5a-6) } \neoline \neocol[2]{ W &= 5a^{2}-6a+3+7a^{2}+a-6\\ &= (5+7)a^{2}+(-6+1)a+(3-6)\\ &= 12a^{2}-5a-3 } \neocol{ A &= 2x + 3x\\ &= 5x } \end{mathgrid} \end{code} \end{document}