\documentclass[ french, 11pt, margin=3cm, inlinecodebox, compacttoc, twocolumntoc, apmep, faketext, mainface=Zilla Slab, sansface=Source Sans 3, sansfaceoptions={Scale=0.92}, monoface=IBM Plex Mono, monofaceoptions={Scale=0.88}, ]{neoschool} \title{La classe \texttt{neoschool}} \author{Version : 1.1.3 \quad\textemdash{}\quad Auteur : Razik Ikhlef\\[\baselineskip] {\normalsize\href{https://apps.edulatex.xyz}{https://apps.edulatex.xyz}}\\[\baselineskip] {\normalsize\href{mailto:razik.ikhlef@csilyon.fr}{razik.ikhlef@csilyon.fr}}} \date{\today} \begin{document} \maketitle \begin{abstract} 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 trente-six 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. \end{abstract} \tableofcontents \section{Extensions chargées} Les extensions suivantes sont automatiquement chargées par la classe \texttt{neoschool}. \begin{multicols}{4} \begin{itemize}[label={}] \item \texttt{adforn} \item \texttt{adjustbox} \item \texttt{algpseudocode} \item \texttt{amsmath} \item \texttt{babel} \item \texttt{bookmark} \item \texttt{calc} \item \texttt{changepage} \item \texttt{cuted} \item \texttt{environ} \item \texttt{fontawesome5} \item \texttt{forest} \item \texttt{iftex} \item \texttt{ifthen} \item \texttt{kvoptions} \item \texttt{lastpage} \item \texttt{listings} \item \texttt{marginnote} \item \texttt{microtype} \item \texttt{multicol} \item \texttt{nccmath} \item \texttt{needspace} \item \texttt{pdftexcmds} \item \texttt{pgffor} \item \texttt{pgfplots} \item \texttt{pifont} \item \texttt{qrcode} \item \texttt{scrlayer-scrpage} \item \texttt{setspace} \item \texttt{silence} \item \texttt{siunitx} \item \texttt{tabularray} \item \texttt{tasks} \item \texttt{tcolorbox} \item \texttt{textcase} \item \texttt{tikz} \item \texttt{tikzpagenodes} \item \texttt{tikzsymbols} \item \texttt{ulem} \item \texttt{xcolor} \item \texttt{xhfill} \item \texttt{xkeyval} \item \texttt{xsim} \item \texttt{xstring} \end{itemize} \end{multicols} La compilation en \texttt{pdflatex} charge les extensions \texttt{fontenc} (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 Pagella} et \texttt{TeX Gyre Heros} en plus de \texttt{newpxmath}. L'option \textbf{graphics} charge les extensions \texttt{graphicx} et \texttt{wrapfig}. L'option \textbf{faketext} (anciennement \texttt{draft}) charge les extensions \texttt{blindtext} et \texttt{lipsum}. L'option \textbf{mathastext} charge l'extension \texttt{mathastext}. L'option \textbf{math} charge les extensions \texttt{annotate-equations}, \texttt{bm}, \texttt{breqn}, \texttt{cancel}, \texttt{mathrsfs}, \texttt{ncccomma}, \texttt{numprint}, \texttt{tdsfrmath} (avec les options \texttt{suite} et \texttt{taupe}), \texttt{tkz-euclide}, \texttt{witharrows} et \texttt{xlop}. L'option \textbf{notes=\textit{longueur}} permet d'afficher des notes encadrées (\texttt{todonotes}) dans les marges gauche et droite, de façon alternée, et définit leur largeur. Elle charge l'extension \texttt{todonotes}. L'option \textbf{apmep}, qui permet de compiler directement les sujets d'annales de l'association du même nom, définit un ensemble de commandes mathématiques et charge les extensions \texttt{esvect}, \texttt{fourier-orns}, \texttt{numprint} (avec l'option \texttt{np}), \texttt{pstricks} (et de nombreux paquets de l'écosystème \texttt{pstricks}), \texttt{tabularx}, \texttt{textcomp}, \texttt{tkz-tab} et \texttt{enumitem}. L'option \textbf{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 (ajout de ponctuation finale et majuscule initiale). \item \textbf{frenchmath} : applique les conventions mathématiques françaises (majuscules et lettres grecques droites en maths). \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{classic} (thème par défaut), \texttt{abyss}, \texttt{aether}, \texttt{atlantic}, \texttt{autumn}, \texttt{blossom}, \texttt{botanical}, \texttt{burgundy}, \texttt{coral}, \texttt{cyprus}, \texttt{day}, \texttt{deepocean}, \texttt{duo}, \texttt{eagle}, \texttt{earth}, \texttt{foresthues}, \texttt{frost}, \texttt{glacier}, \texttt{goldensummer}, \texttt{graphite}, \texttt{heather}, \texttt{heritage}, \texttt{kassio}, \texttt{magma}, \texttt{modern}, \texttt{neon}, \texttt{nordic}, \texttt{purplebliss}, \texttt{retrocafe}, \texttt{saffronsky}, \texttt{scribe}, \texttt{sepia}, \texttt{summer}, \texttt{twilight}, \texttt{winkle} et \texttt{midnight} (thème sombre). \begin{code}{latex} \documentclass[theme=retrocafe]{neoschool} \end{code} \subsubsection{Modes de couleur} Ces options modifient la façon dont les couleurs du thème sont appliquées. \begin{itemize} \item \textbf{unicolor} : utilise une couleur unique (basée sur la couleur du titre) pour tous les environnements, avec variations par transparence. \item \textbf{examcolor} : Règle les couleurs des environnements pratiques (exercices, activités) et des admonitions (info, warning) sur la couleur théorique principale (\texttt{definitionColor}). Cela crée une palette plus sobre et bicolore, adaptée aux examens. \item \textbf{print} : convertit toutes les couleurs en noir et blanc pour l'impression. \end{itemize} \subsubsection{Personnalisation des couleurs} Permet de surcharger les couleurs du thème choisi. \begin{itemize} \item \textbf{globalcolor} = \texttt{couleur} : couleur du texte principal. \item \textbf{titlecolor} = \texttt{couleur} ou \textbf{titlehexcolor} = \texttt{code hex} : couleur du titre principal. \item \textbf{headcolor} = \texttt{couleur} : couleur des titres de section (\texttt{\textbackslash section}). \item \textbf{subcolor} = \texttt{couleur} : couleur des titres de sous-section (\texttt{\textbackslash subsection}). \item \textbf{subsubcolor} = \texttt{couleur} : couleur des titres de sous-sous-section (\texttt{\textbackslash subsubsection}). \item \textbf{headfootcolor} = \texttt{couleur} : couleur du texte des en-têtes et pieds de page. \end{itemize} \subsubsection{Options d'affichage} \begin{itemize} \item \textbf{nothmframe} : supprime les cadres autour des environnements (théorèmes, exercices...). \item \textbf{nothmback} : supprime les fonds colorés des environnements. \item \textbf{nocodeframe} : supprime les cadres autour des blocs de code. \item \textbf{nocodeback} : supprime les fonds colorés des blocs de code. \item \textbf{nocodenum} : supprime la numérotation des lignes des blocs de code. \item \textbf{noadframe} : (défaut) supprime les cadres autour des boîtes d'admonition. \item \textbf{noadback} : (défaut) supprime les fonds colorés des boîtes d'admonition. \item \textbf{adframe} : réactive l'affichage des cadres des boîtes d'admonition. \item \textbf{adback} : réactive l'affichage des fonds colorés des boîtes d'admonition. \item \textbf{scale} : harmonise la taille des polices lors de la compilation avec \texttt{lualatex} ou \texttt{xelatex}. \item \textbf{inlinecodebox} : affiche le code en ligne (\texttt{\textbackslash texttt}) dans une boîte encadrée et colorée. \end{itemize} \subsubsection{Options d'arrondi des boîtes} Ces options (de type \texttt{option=longueur}) permettent de personnaliser le rayon des coins arrondis pour différents types d'environnements. \begin{itemize} \item \textbf{boxarc} = \texttt{longueur} : arrondi pour \texttt{neobox} et \texttt{answerframe} (défaut: \texttt{1mm}). \item \textbf{codeboxarc} = \texttt{longueur} : arrondi pour les boîtes de code (défaut: \texttt{1mm}). \item \textbf{adboxarc} = \texttt{longueur} : arrondi pour les admonitions (défaut: \texttt{2pt}). \item \textbf{sideboxarc} = \texttt{longueur} : arrondi pour \texttt{sidebyside} (défaut: \texttt{1pt}). \item \textbf{thmboxarc} = \texttt{longueur} : arrondi pour les théorèmes (défaut: \texttt{1mm}). \item \textbf{exboxarc} = \texttt{longueur} : arrondi pour les exercices (défaut: \texttt{1mm}). \item \textbf{pseudoboxarc} = \texttt{longueur} : arrondi pour \texttt{pseudocode} (défaut: \texttt{1mm}). \end{itemize} \subsection{Personnalisation du résumé} L'option \texttt{abstracttitle} permet de changer le titre de l'environnement \texttt{abstract}. \begin{code}{latex} \documentclass[abstracttitle=Synthèse]{neoschool} \end{code} \subsection{Typographie} \begin{itemize} \item \textbf{sfbody} : utilise la police sans empattements (\textit{sans serif}) pour le corps du texte. \item \textbf{sfall} : utilise la police sans empattements pour tout le document (titres, texte, etc.). \item \textbf{boldlistlabels} : met en gras les labels des listes (ex: \textbf{1.}, \textbf{a.}). \item \textbf{mathastext} : utilise la police de caractères du texte courant pour les mathématiques. \item \textbf{mainface} = \texttt{NomPolice} : définit la police principale (avec empattements). \item \textbf{mainfaceoptions} = \texttt{options} : options pour la police principale (ex: \texttt{Scale=MatchLowercase}). \item \textbf{sansface} = \texttt{NomPolice} : définit la police sans empattements. \item \textbf{sansfaceoptions} = \texttt{options} : options pour la police sans empattements. \item \textbf{monoface} = \texttt{NomPolice} : définit la police à chasse fixe (pour le code). \item \textbf{monofaceoptions} = \texttt{options} : options pour la police à chasse fixe. \item \textbf{mathface} = \texttt{NomPoliceMath} : définit la police mathématique. \item \textbf{mathfaceoptions} = \texttt{options} : options pour la police mathématique (\texttt{pdflatex} uniquement). \item \textbf{mathfacescale} = \texttt{facteur} : définit un facteur d'échelle pour la police mathématique (utile en compilation \texttt{lualatex} ou \texttt{xelatex}). \item \textbf{facefamily} = \texttt{NomFamille} : définit une famille complète de polices (ex: \texttt{fira}). \item \textbf{facefamilyoptions} = \texttt{options} : options pour la famille de polices. \end{itemize} \begin{code}{latex} % Exemple avec Fira Sans \documentclass[ facefamily=Fira Sans, facefamilyoptions={% sfdefault, lining }, monoface=Fira Mono, monofaceoptions={Scale=0.85} ]{neoschool} \end{code} \subsection{Mise en page} \subsubsection{Marges et espacement} \begin{itemize} \item \textbf{margin} = \texttt{longueur} : définit la largeur des marges horizontales (par défaut: \texttt{1cm}). Les marges verticales sont ajustées automatiquement. \item \textbf{notes} = \texttt{longueur} : active les notes marginales (\texttt{todonotes}) et définit leur largeur. \item \textbf{leftnotes}[=\textit{longueur}] : active les notes marginales (\texttt{todonotes}) uniquement dans la marge de gauche et définit leur largeur. \item \textbf{rightnotes}[=\textit{longueur}] : active les notes marginales (\texttt{todonotes}) uniquement dans la marge de droite et définit leur largeur. \item \textbf{noindent} : supprime l'indentation en début de paragraphe. \item \textbf{indent} = \texttt{longueur} : définit la taille de l'indentation (par défaut: \texttt{1em}). \item \textbf{vspacing} = \texttt{facteur} : définit un facteur de compression/dilatation pour les espacements verticaux (paragraphes, listes, titres). Par défaut: \texttt{1.0}. Une valeur < 1 compresse, > 1 dilate. \end{itemize} \subsubsection{Options de sortie (mise en page multiple)} Ces options permettent d'imprimer plusieurs pages logiques sur une seule page physique. \begin{itemize} \item \textbf{2a5toa4} : imprime 2 fois la même page A5 sur une feuille A4 paysage. \item \textbf{2a4toa3} : imprime 2 fois la même page A4 sur une feuille A3 paysage. \item \textbf{4a5toa3} : imprime 4 fois la même page A5 sur une feuille A3. \item \textbf{2toa3} : imprime 2 pages A4 différentes sur une feuille A3 paysage. \item \textbf{bookleta5} : crée un livret A5 (pages A5 sur feuilles A4 pliées). \item \textbf{bookleta4} : crée un livret A4 (pages A4 sur feuilles A3 pliées). \end{itemize} \subsubsection{Table des matières} \begin{itemize} \item \textbf{compacttoc} : réduit les espacements dans la table des matières. \item \textbf{monotoc} : la table des matières utilise la couleur du texte (\texttt{globalcolor}). \item \textbf{twocolumntoc} : affiche la table des matières sur deux colonnes. \end{itemize} \subsubsection{En-têtes et pieds de page} \begin{itemize} \item \textbf{fullheader} : active un en-tête et pied de page complets (type de document, titre, niveau / date, établissement, pagination). s'utilise conjointement avec \texttt{\textbackslash neoheader}. \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} : ajoute les deux filets. \item \textbf{nofooter} : supprime complètement l'en-tête et le pied de page (style \texttt{empty}). \item \textbf{pageonlyfooter} : affiche uniquement le numéro de page centré en bas (style \texttt{pagenum}). \end{itemize} \section{Styles de document} \subsection{Styles de titre (\texttt{\textbackslash maketitle})} Ces options modifient radicalement l'apparence de la première page et du titre. \subsubsection{Styles d'examen} Idéal pour les devoirs surveillés, examens blancs. \begin{itemize} \item \textbf{exam} : style complet avec tableau pour nom, classe, date, etc., et bandeau de notation. Nécessite \texttt{\textbackslash neoheader}. \item \textbf{shortexam} : style plus compact pour examens, avec informations essentielles. Nécessite \texttt{\textbackslash neoheader}. \item \textbf{mockexam} : style spécifique pour épreuves type Bac/Brevet blanc, avec page de garde normalisée (France). Nécessite \texttt{\textbackslash neoheader}. \end{itemize} \begin{code}{latex} \documentclass[exam]{neoschool} \neoheader{ type = Devoir Surveillé n°1, school = Lycée Imaginaire, level = Terminale Spé Maths, duration = 2h, calculator = exam % ou true/false } \title{Suites numériques} \date{21 octobre 2025} \subject{Mathématiques} % Optionnel \begin{document} \maketitle ... \end{document} \end{code} \subsubsection{Styles d'évaluation} Adaptés aux contrôles, interrogations rapides. \begin{itemize} \item \textbf{eval} : style standard, informations réparties dans les coins. Nécessite \texttt{\textbackslash neoheader}. \item \textbf{evalicons} : style \texttt{eval} avec icônes personnalisables via \texttt{\textbackslash neoheader}. \item \textbf{evalgrade} : style \texttt{eval} avec bandeau de notation ajouté automatiquement. \item \textbf{evaliconsgrade} : combine \texttt{evalicons} et \texttt{evalgrade}. \item \textbf{shorteval} : style compact sur une seule ligne en haut de page. Nécessite \texttt{\textbackslash neoheader}. \end{itemize} \subsubsection{Styles avec bulles} Effets visuels pour des documents moins formels. \begin{itemize} \item \textbf{bubbles} : titre centré sur fond de bulles colorées. \item \textbf{topbubbles} : bulles confinées en haut de la page, titre en dessous. \item \textbf{bottombubbles} : bulles confinées en bas de la page, titre au-dessus. \end{itemize} \subsubsection{Autres styles de titre} Options plus classiques ou minimalistes. \begin{itemize} \item \textbf{titleornament} : ajoute des ornements sous le titre. \item \textbf{titlerule} : ajoute un petit filet sous le titre. \item \textbf{titlemidrule} : ajoute un filet centré de largeur moyenne sous le titre. \item \textbf{titlefullrule} : ajoute un filet de 66\% de la largeur sous le titre. \item \textbf{titlebox} : titre dans un bandeau coloré en haut de page. \item \textbf{tighttitle} : style de titre compact, sans boîte, avec moins d'espacement vertical. \item \textbf{onlytitleleft} / \textbf{onlytitle} / \textbf{onlytitleright} : affiche uniquement le titre, aligné à gauche / centré / à droite. Ignore auteur, date, etc. \item \textbf{shorttitle} : style compact, titre centré sur une ligne en haut de page. \item \textbf{shortlesson} : style compact pour fiches de cours, avec type, titre et niveau sur une ligne. Nécessite \texttt{\textbackslash neoheader}. \end{itemize} \subsection{Configuration de l'en-tête (\texttt{\textbackslash neoheader})} Cette commande configure les informations utilisées par les styles \texttt{exam}, \texttt{eval}, \texttt{mockexam}, \texttt{shortlesson} et l'option \texttt{fullheader}. \begin{code}{latex} \neoheader{ type = {Interrogation de cours}, % Type de document school = {Collège A. Turing}, % Nom de l'établissement academy = {Lyon}, % Nom de l'académie (pour mockexam) level = {Quatrième}, % Niveau de classe duration = {20 minutes}, % Durée (pour exam, mockexam) calculator = {false}, % Calculatrice: true / false / exam leftcontent = {\faFlask}, % Icône gauche (pour evalicons) rightcontent = {\faCalculator} % Icône droite (pour evalicons) leftcontentfill = {true}, % (pour evalicons, booléen) rightcontentfill = {true} % (pour evalicons, booléen) } \end{code} \subsection{Options de formatage des titres} Ces options contrôlent l'apparence (police, graisse, forme, alignement) des différents titres du document. \subsubsection{Styles globaux} S'appliquent par défaut à tous les titres (sections, théorèmes, exercices...). \begin{itemize} \item \textbf{headstyle} = \texttt{style} (\texttt{sffamily} par défaut) : famille de police (ex: \texttt{rmfamily}, \texttt{sffamily}). \item \textbf{headweight} = \texttt{graisse} (\texttt{bfseries} par défaut) : graisse (ex: \texttt{mdseries}, \texttt{bfseries}, \texttt{sbseries} pour semi-gras si disponible). \item \textbf{headshape} = \texttt{forme} (\texttt{scshape} par défaut) : forme (ex: \texttt{upshape}, \texttt{itshape}, \texttt{scshape} pour petites capitales). \end{itemize} \subsubsection{Style du titre principal (\texttt{\textbackslash maketitle})} Surcharge les styles globaux pour le titre principal. \begin{itemize} \item \textbf{titlestyle} = \texttt{style} (hérite de \texttt{headstyle}). \item \textbf{titleweight} = \texttt{graisse} (hérite de \texttt{headweight}). \item \textbf{titleshape} = \texttt{forme} (\texttt{upshape} par défaut). \item \textbf{titlealign} = \texttt{alignement} (\texttt{center} par défaut) : \texttt{left}, \texttt{center}, \texttt{right}. \end{itemize} \subsubsection{Style des sections (\texttt{\textbackslash section})} Options spécifiques pour les titres de section. \begin{itemize} \item \textbf{sectionnumstyle} = \texttt{style} (\texttt{circle} par défaut) : apparence du numéro (\texttt{circle}, \texttt{box}, \texttt{dash}, \texttt{plain}). \item \textbf{sectiontextstyle} = \texttt{style} (\texttt{sc} par défaut) : casse du texte (\texttt{sc}, \texttt{upper}, \texttt{lower}). \item \textbf{sectionstyle} = \texttt{style} (\texttt{normal} par défaut) : style visuel global (\texttt{ornaments}, \texttt{underline}, \texttt{normal}, \texttt{highlighted}, \texttt{shadedline}). \item \textbf{sectionalign} = \texttt{alignement} (\texttt{center} par défaut) : \texttt{left}, \texttt{center}, \texttt{right}. \end{itemize} \subsubsection{Style des en-têtes et des pieds de page} \begin{itemize} \item \textbf{headfootstyle} = \texttt{style} (hérite de \texttt{titlestyle}) : style de police pour le texte des en-têtes et pieds de page. \end{itemize} \subsubsection{Exemple complet de configuration} \begin{code}{latex} \documentclass[ % Style global headstyle=sffamily, headweight=bfseries, headshape=scshape, % Titre principal titlestyle=rmfamily, titleweight=bfseries, titleshape=upshape, titlealign=left, % Sections sectionnumstyle=box, sectiontextstyle=upper, sectionstyle=underline, 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\{\textit{x}\}\{\textit{y}\}\{\textit{scale}\}\{\textit{contenu}\}} place \textit{contenu} aux coordonnées (\textit{x}, \textit{y}) depuis le coin supérieur gauche de la page, avec un facteur d'\textit{échelle}. \begin{code}{latex} % Logo en haut à droite \positionobject{15cm}{1cm}{0.5}{% \includegraphics[width=3cm]{logo.png}% } % Texte en bas à gauche \positionobject{2cm}{25cm}{1.2}{% \textit{Note importante}% } \end{code} \subsection{Mise en page à deux colonnes} La commande \texttt{\textbackslash splitcontent[\textit{w1}][\textit{gap}]\{\textit{col1}\}\{\textit{col2}\}} divise l'espace horizontal. \begin{itemize} \item \textit{w1} : largeur de la première colonne (défaut : 0.5 pour 50 \%). \item \textit{gap} : espace entre les colonnes (défaut : 0.02 pour 2 \%). \item \textit{col1}, \textit{col2} : contenu des colonnes. \end{itemize} \begin{sidebyside}[righthand width=.54\linewidth] \begin{code}[numbers=none]{latex} \splitcontent[0.45][0.03]{% Contenu colonne 1 (40 (*@\%@*)) \lipsum[1][1-2] }{% Contenu colonne 2 (52 (*@\%@*)) \lipsum[1][1-2] } \end{code} \tcblower \splitcontent[0.45][0.03]{% Contenu colonne 1 (45 \%) \lipsum[1][1-2] }{% Contenu colonne 2 (52 \%) \lipsum[2][1-2] } \end{sidebyside} \subsection{Mise en page côte à côte (environnement \texttt{sidebyside})} Crée deux boîtes \texttt{tcolorbox} côte à côte. Utiliser \texttt{\textbackslash tcblower} pour passer de la boîte gauche à la droite. Accepte les options de \texttt{tcolorbox}. \begin{sidebyside}[righthand width=.55\linewidth] \begin{code}[numbers=none]{latex} \begin{sidebyside}[ title=\centering Comparaison, ] Avantages \begin{itemize} \item Point 1 \end{itemize} \tcblower % Sépare les deux colonnes Inconvénients \begin{itemize} \item Point A \end{itemize} \end{sidebyside} \end{code} \tcblower \begin{sidebyside}[ title=\centering Comparaison, ] Avantages \begin{itemize} \item Point 1 \end{itemize} \tcblower % Sépare les deux colonnes Inconvénients \begin{itemize} \item Point A \end{itemize} \end{sidebyside} \end{sidebyside} \subsection{Association texte et image} La commande \texttt{\textbackslash textwithimage[*]\{\textit{w\_img}\}\{\textit{s\_img}\}\{\textit{texte}\}\{\textit{chemin\_img}\}} combine du texte et une image. \begin{itemize} \item \texttt{*} : si présent, met l'image à gauche (droite par défaut). \item \textit{w\_img} : largeur relative de l'image (ex: 0.3 pour 30%). \item \textit{s\_img} : échelle de l'image dans sa boîte (ex: 0.95). \item \textit{texte} : le texte. \item \textit{chemin\_img} : chemin vers le fichier image. \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} % Image à droite (30 % de la largeur) \textwithimage{0.3}{1}{% Description de l'image qui sera affichée à droite. }{example-image-a} % image fictive \end{code} \tcblower % Simulation visuelle \textwithimage{0.3}{1}{% Description de l'image qui sera affichée à droite. }{example-image-a} \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} % Image à gauche (40 % de la largeur) \textwithimage*{0.4}{0.9}{% Description à droite de l'image. }{example-image-b} % image fictive \end{code} \tcblower % Simulation visuelle \textwithimage*{0.4}{0.9}{% Description à droite de l'image. }{example-image-b} \end{sidebyside} \subsection{QR codes et contenus} La commande \texttt{\textbackslash withqrcode[*][\textit{taille}]\{\textit{url}\}\{\textit{contenu}\}} intègre un QR code à côté d'un contenu. \begin{itemize} \item \texttt{*} : place le QR code à droite (gauche par défaut). \item \textit{taille} : taille du QR code (défaut: 2cm). \item \textit{url} : url ou texte à encoder dans le QR code. \item \textit{contenu} : texte ou autre contenu à afficher à côté. \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} % QR code à gauche (défaut 2cm) \withqrcode{https://www.google.com}{ Scannez pour visiter Google. } \end{code} \tcblower \withqrcode{https://www.google.com}{ Scannez pour visiter Google. } \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} % QR code à droite (3cm) \withqrcode*[3cm]{https://fr.wikipedia.org}{ Plus d'informations sur Wikipedia. } \end{code} \tcblower \withqrcode*[3cm]{https://fr.wikipedia.org}{ Plus d'informations sur Wikipedia. } \end{sidebyside} \subsection{Grilles et papiers} \subsubsection{Grilles personnalisables} Commandes pour dessiner des zones quadrillées. \begin{itemize} \item \texttt{\textbackslash grid[\textit{couleur}]\{\textit{largeur}\}\{\textit{hauteur}\}} : grille à petits carreaux (5mm x 5mm). \item \texttt{\textbackslash customgrid[\textit{couleur}][\textit{dx}][\textit{dy}]\{\textit{largeur}\}\{\textit{hauteur}\}} : grille avec espacement personnalisé (\textit{dx}, \textit{dy}). \item \texttt{\textbackslash frenchgrid[\textit{coul\_p}][\textit{coul\_g}]\{\textit{largeur}\}\{\textit{hauteur}\}} : grille à grands carreaux de type Seyès. La version étoilée \texttt{\textbackslash frenchgrid*} centre la grille horizontalement. \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} \customgrid[blue!50][2mm][2mm]{6cm}{3cm} \end{code} \tcblower \begin{center} \customgrid[blue!50][2mm][2mm]{6cm}{3cm} \end{center} \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} \frenchgrid{7.5cm}{3cm} \end{code} \tcblower \begin{center} \frenchgrid{7.5cm}{3cm} \end{center} \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} \frenchgrid*{5cm}{2cm} % centrée \end{code} \tcblower \frenchgrid*{5cm}{2cm} \end{sidebyside} \subsubsection{Remplissage automatique} La commande \texttt{\textbackslash gridfill} remplit l'espace vertical restant sur la page avec une grille \texttt{customgrid} (5mm par défaut). La version étoilée \texttt{\textbackslash gridfill*} utilise \texttt{frenchgrid}. \begin{code}{latex} % Syntaxe : \gridfill[*][couleur][dx][dy] % Remplit avec une grille customgrid bleue 2mm x 2mm \gridfill[blue][2mm][2mm] % Remplit avec une grille frenchgrid (par défaut) \gridfill* \end{code} \subsubsection{Pages entières (styles de fond)} Applique un style de fond à la page courante. \begin{itemize} \item \texttt{\textbackslash notebook} : style cahier ligné avec marge rouge. \item \texttt{\textbackslash nbminorgrid} : fond quadrillé petits carreaux (5mm). \item \texttt{\textbackslash nbmajorgrid} : fond quadrillé Seyès. \end{itemize} \begin{code}{latex} \nbminorgrid % Applique le quadrillage fin à toute la page \end{code} \subsection{Boîtes simples (\texttt{neobox})} Environnement pour créer des boîtes \texttt{tcolorbox} simples, avec ou sans cadre. Accepte les options de \texttt{tcolorbox}. \begin{itemize} \item \texttt{neobox} : boîte avec cadre. \item \texttt{neobox*} : boîte sans cadre visible (mais fond possible). \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{neobox}[ title=Boîte standard ] Contenu... \end{neobox} \end{code} \tcblower \begin{neobox}[ title=Boîte standard ] Contenu... \end{neobox} \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{neobox*} Contenu sans cadre visible... \end{neobox*} \end{code} \tcblower \begin{neobox*} Contenu sans cadre visible... \end{neobox*} \end{sidebyside} \section{Exercices} Basé sur l'extension \texttt{xsim}. \subsection{Environnements \texttt{exercise} et \texttt{solution}} \subsubsection{Configuration d'un exercice} Options disponibles dans \texttt{\textbackslash begin\{exercise\}[options]}. \begin{itemize} \item \textbf{points} = \texttt{nombre} : nombre de points. \item \textbf{bonus-points} = \texttt{nombre} : points bonus. \item \textbf{level} = \texttt{nombre} : niveau de difficulté (1 à 5, affiché en étoiles $\star$). \item \textbf{subtitle} = \texttt{texte} : sous-titre ou description brève. \item \textbf{icon} = \texttt{nom-icone-fa} : icône FontAwesome (ex: \texttt{pencil-alt}). Nécessite l'option de classe \texttt{exerciseicons}. \item \textbf{topic} = \texttt{thème} : thème/chapitre (pour tri/sélection future). \item \textbf{grade} = \texttt{classe/niveau} : niveau de classe (pour tri/sélection). \item \textbf{subject} = \texttt{matière} : matière (pour tri/sélection). \item \textbf{ID} = \texttt{identifiant} : identifiant unique pour référencer l'exercice (\texttt{\textbackslash exercisenumber\{id\}}). \item \textbf{template} = \texttt{nom-template} : style d'affichage spécifique pour cet exercice (voir liste ci-dessous). Surcharge le style global. \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{exercise}[ points=3, bonus-points=1, level=2, subtitle={Application}, ID=calc01, template=sober-box ] Calculer $3 \times (5+2)$. \end{exercise} \begin{solution} $3 \times (5+2) = 3 \times 7 = 21$. \end{solution} Voir exercice \exercisenumber{calc01}. \end{code} \tcblower \xsimsetup{ exercise/template = sober-box, solution/print = true} % Pour afficher la solution ici \begin{exercise}[ points=3, bonus-points=1, level=2, subtitle={Application}, ID=calc01, template=sober-box ] Calculer $3 \times (5+2)$. \end{exercise} \begin{solution} $3 \times (5+2) = 3 \times 7 = 21$. \end{solution} Voir exercice \exercisenumber{calc01}. \xsimsetup{ exercise/template = inline, solution/print = false} % Retour au défaut \end{sidebyside} \subsubsection{Options globales (\texttt{\textbackslash xsimsetup})} À placer dans le préambule pour affecter tout le document. \begin{itemize} \item \textbf{exercise/template} = \texttt{nom-template} : définit le style par défaut pour tous les exercices. \item \textbf{solution/template} = \texttt{nom-template-sol} : définit le style par défaut pour toutes les solutions (ex: \texttt{sol-inline}, \texttt{sol-block}, \texttt{sol-dotted}). \item \textbf{solution/print} = \texttt{true/false} : affiche ou masque globalement les solutions. Peut être surchargé par l'option de classe \textbf{answers}. \end{itemize} Autres options de classe affectant les exercices : \begin{itemize} \item \textbf{exstyle} = \texttt{nom-style} : définit le style d'affichage (template) par défaut pour tous les exercices (ex~: \texttt{inline}, \texttt{box-hrule}, \texttt{elegant-box}). Si non spécifié, il utilise le style défini par \texttt{thmstyle}. \item \textbf{exerciseicons} : active l'affichage des icônes pour tous les exercices. \item \textbf{answers} / \textbf{answersonly} : affiche les solutions après chaque exercice / Affiche uniquement les solutions. \item \textbf{shuffle} : mélange aléatoirement les réponses dans les QCM (\texttt{choices}, \texttt{checkboxes}). \item \textbf{sectionthmcounter} : numérote les exercices (et théorèmes) par section (ex: Ex 1.1, Ex 1.2, Ex 2.1...). \item \textbf{sharedexcounter} : partage le même compteur entre exercices et théorèmes (combiné avec \texttt{sharedthmcounter}). \item \textbf{blocksol} : utilise le template \texttt{sol-block} pour les solutions. \end{itemize} \subsubsection{Templates d'exercices (styles d'affichage)} Valeurs possibles pour \texttt{template} (option d'exercice ou \texttt{xsimsetup}). \begin{itemize} \item \textbf{box}, \textbf{elegant-box}, \textbf{shaded-box}, \textbf{slanted-box}, \textbf{sober-box}, \textbf{classic-box}, \textbf{classy-box} : différents styles de boîtes encadrées avec titre. \item \textbf{rect-box}, \textbf{rect-box-out} : boîtes rectangulaires simples, avec ou sans contour. \item \textbf{num-box}, \textbf{num-box-out} : boîtes compactes affichant juste le numéro. \item \textbf{ex-num-box}, \textbf{ex-num-box-out} : comme \texttt{num-box} mais avec "Ex." avant le numéro. \item \textbf{box-hrule}, \textbf{box-hrule-out}, \textbf{box-hrule-in} : titre dans une boîte suivi d'une ligne horizontale. \item \textbf{boxed}, \textbf{boxed-out} : titre dans une petite boîte (remplie ou contour). \item \textbf{inline} (défaut si \texttt{amslikethm}) : style simple en ligne, comme un paragraphe. \item \textbf{section} : style comme un titre de section. \item \textbf{terminal} : style imitant une console, avec icône \faTerminal. \item \textbf{hrule} : style avec une simple ligne horizontale sous le titre. \item \textbf{smart-box} : boîte simple avec titre coloré. \item \textbf{rule-ams} : style minimaliste avec titre et ligne horizontale. \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} \xsimsetup{exercise/template=box-hrule-out} \begin{exercise}[points=2] Style box-hrule-out. \end{exercise} \xsimsetup{exercise/template=inline} % Retour au défaut \end{code} \tcblower \xsimsetup{exercise/template=box-hrule-out} \begin{exercise}[points=2] Style box-hrule-out. \end{exercise} \xsimsetup{exercise/template=inline} % Retour au défaut \end{sidebyside} \subsubsection{QCM et choix multiples} Environnements à utiliser à l'intérieur d'un exercice. \begin{itemize} \item \textbf{choices}\texttt{(\textit{n})} : pour QCM à réponse unique. \texttt{\textbackslash choice} pour une réponse, \texttt{\textbackslash choice[\textbackslash correct]} pour la bonne réponse. \textit{n} est le nombre de colonnes. \item \textbf{checkboxes}\texttt{(\textit{n})} : pour QCM à réponses multiples. \texttt{\textbackslash checkbox} pour une réponse,\\ \texttt{\textbackslash checkbox[\textbackslash correct*]} pour une bonne réponse. \textit{n} est le nombre de colonnes. \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{exercise}[ID=qcm-deriv, points=1] Quelle est la dérivée de $f(x)=x^2$ ? \begin{choices}(2) % Sur 2 colonnes \choice[\correct] $x\mapsto 2x$ \choice $x\mapsto x$ \choice $x\mapsto x^2$ \choice $x\mapsto 2$ \end{choices} \end{exercise} \end{code} \tcblower \begin{exercise}[ID=qcm-deriv, points=1] Quelle est la dérivée de $f(x)=x^2$ ? \begin{choices}(2) % Sur 2 colonnes \choice[\correct] $x\mapsto 2x$ \choice $x\mapsto x$ \choice $x\mapsto x^2$ \choice $x\mapsto 2$ \end{choices} \end{exercise} \end{sidebyside} \begin{sidebyside}[righthand width=0.4\linewidth] \begin{code}[numbers=none]{latex} \begin{exercise}[ID=qcm-props, points=2] Cochez les propriétés vraies. \begin{checkboxes}(1) % Sur 1 colonne \checkbox[\correct*] $1+1=2$ \checkbox $\sqrt{2}$ est rationnel. \checkbox[\correct*] $0 \times 5 = 0$ \end{checkboxes} \end{exercise} \end{code} \tcblower \begin{exercise}[ID=qcm-props, points=2] Cochez les propriétés vraies. \begin{checkboxes}(1) % Sur 1 colonne \checkbox[\correct*] $1+1=2$ \checkbox $\sqrt{2}$ est rationnel. \checkbox[\correct*] $0 \times 5 = 0$ \end{checkboxes} \end{exercise} \end{sidebyside} \section{Environnements mathématiques (Théorèmes, Définitions, etc.)} Basés sur \texttt{tcolorbox}. \subsection{Styles de théorèmes (options de classe)} Ces options de classe définissent l'apparence par défaut de tous les environnements de type théorème. \begin{itemize} \item \textbf{classythm}, \textbf{soberthm}, \textbf{elegantthm}, \textbf{classicthm}, \textbf{slantedthm}, \textbf{shadedthm}, \textbf{boxedthm} : Styles variés avec boîtes, couleurs, etc. \item \textbf{amslikethm} (défaut) : Style minimaliste similaire aux environnements standard de l'AMS. \item \textbf{thmstyle} = \texttt{nom-style} : permet de définir le style de théorème en utilisant son nom (ex~: \texttt{elegant}, \texttt{amslike}, \texttt{shaded}). \end{itemize} \begin{code}{latex} % Applique le style \texttt{elegantthm} à tous les environnements mathématiques. \documentclass[elegantthm]{neoschool} \end{code} \subsection{Options communes des environnements} Passées entre crochets : \texttt{\textbackslash begin\{theorem\}[options]}. \begin{itemize} \item \textbf{title} = \texttt{texte} : titre personnalisé (ex: \texttt{title=Théorème de Pythagore}). \item \textbf{label} = \texttt{nom} : étiquette pour référencement (\texttt{\textbackslash ref}, \texttt{\textbackslash nameref}). \item \textbf{colback} = \texttt{couleur} : couleur de fond spécifique. \item \textbf{colframe} = \texttt{couleur} : couleur du cadre spécifique. \item \textbf{coltitle} = \texttt{couleur} : couleur du titre spécifique. \item \textbf{fonttitle} = \texttt{commandes} : commandes de formatage pour le titre (ex: \texttt{fonttitle=\textbackslash sffamily\textbackslash bfseries}). \end{itemize} \subsection{Options de numérotation (options de classe)} \begin{itemize} \item \textbf{sectionthmcounter} : les compteurs sont relatifs à chaque section (ex: Thm 1.1, Def 1.2, Thm 2.1...). \item \textbf{sharedthmcounter} : un seul compteur est partagé entre tous les environnements (Thm 1, Def 2, Lem 3...). \item \textbf{thmgroupcounter} : regroupe les environnements (théorème, lemme, corollaire, proposition, propriété) sous un même compteur partagé. \end{itemize} \subsection{Environnements mathématiques disponibles} \begin{itemize} \item \textbf{theorem} (référence : \texttt{thm}) \item \textbf{lemma} (référence : \texttt{lem}) \item \textbf{corollary} (référence : \texttt{cor}) \item \textbf{conjecture} (référence : \texttt{conj}) \item \textbf{proposition} (référence : \texttt{propo}) \item \textbf{property} (référence : \texttt{prop}) \item \textbf{definition} (référence : \texttt{def}) \item \textbf{method} (référence : \texttt{meth}) \item \textbf{activity} (référence : \texttt{act}) \item \textbf{application} (référence : \texttt{appl}) \item \textbf{remark} (non numéroté) \item \textbf{remarks} (non numéroté, pour plusieurs remarques) \item \textbf{example} (référence : \texttt{ex}) \item \textbf{examples} (non numéroté, pour plusieurs exemples) \item \textbf{proof} : environnement pour les démonstrations. \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{definition}[ title=Nombre premier, label=premier ] Un entier naturel est dit premier s'il admet exactement deux diviseurs distincts : 1 et lui-même. \end{definition} Voir la définition~\ref{def:premier}. \end{code} \tcblower \begin{definition}[ title=Nombre premier, label=premier ] Un entier naturel est dit premier s'il admet exactement deux diviseurs distincts : 1 et lui-même. \end{definition} Voir la définition~\ref{def:premier}. \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{proof} La preuve est triviale et laissée en exercice au lecteur. \end{proof} \end{code} \tcblower \begin{proof} La preuve est triviale et laissée en exercice au lecteur. \end{proof} \end{sidebyside} \section{Code informatique} Deux systèmes sont disponibles via les options de classe \textbf{listings} (défaut) ou \textbf{minted}. \subsection{Option \texttt{listings}} Utilise l'extension \texttt{listings}. La coloration syntaxique est définie par le thème de couleurs choisi. \subsubsection{Environnement \texttt{code}} Affiche un bloc de code. \begin{codeside}[numbers=none]{latex} \begin[options]{code}{langage}[titre][style-boite] ... code ... \end{code} \end{codeside} \begin{itemize} \item \texttt{options} : options de \texttt{listings} (ex: \texttt{numbers=none}, \texttt{frame=single}). \item \texttt{langage} : langage du code (ex: \texttt{python}, \texttt{latex}, \texttt{c++}...). \item \texttt{titre} : titre optionnel pour la boîte. \item \texttt{style-boite} : style de la boîte \texttt{tcolorbox} (voir ci-dessous). \item \texttt{code*} : variante sans numérotation automatique du listing. \end{itemize} L'option de classe \texttt{codestyle=[style]} (par défaut \texttt{box-elegant}) permet de définir le style de boîte pour l'ensemble du document. Le paramètre \texttt{[style-boite]} de l'environnement permet de surcharger ce choix localement. Styles de boîtes disponibles : \texttt{box-minimal}, \texttt{box-subtle}, \texttt{box-fancy}, \texttt{box-elegant}, \texttt{box-sober}, \texttt{box-academic}, \texttt{box-diagonal}, \texttt{box-bevel}, \texttt{box-corner}, \texttt{box-rounded}, \texttt{box-downhill}, \texttt{box-toptitle}, \texttt{box-bottomtitle}. \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \begin{code}{python}[Fonction Carre][box-minimal] def square(x): """Calcule le carré de x.""" return x * x \end{code} \end{codeside} \tcblower \begin{code}[numbers=none]{python}[Fonction Carre][box-minimal] def square(x): """Calcule le carré de x.""" return x * x \end{code} \end{sidebyside} \subsubsection{Langages préconfigurés} \texttt{Python}, \texttt{Java}, \texttt{C++}, \texttt{JavaScript}, \texttt{SQL}, \texttt{LaTeX}, \texttt{Bash}, \texttt{Assembly}, \texttt{Lisp}, \texttt{JSON}, \texttt{YAML}, \texttt{TOML}, \texttt{CSV}, \texttt{Markdown}. \subsubsection{Commandes additionnelles} \begin{itemize} \item \texttt{\textbackslash codeinline[\textit{lang}]\{\textit{code}\}} : affiche du \textit{code} en ligne avec coloration (\textit{lang} optionnel). \item \texttt{\textbackslash codeinput[\textit{opt}]\{\textit{lang}\}\{\textit{fichier}\}[\textit{titre}][\textit{style}]} : importe et affiche le code depuis un \textit{fichier}. \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} Le code \codeinline[python]{x = 5} initialise x. \end{code} \tcblower Le code \codeinline[python]{x = 5} initialise x. \end{sidebyside} \subsection{Autres options de classe pour le code} \begin{itemize} \item \textbf{codewidth} = \texttt{facteur} : (défaut: \texttt{1.0}) définit la largeur des blocs de code en tant que facteur de \texttt{\textbackslash linewidth}. \item \textbf{centeredcode} : option booléenne pour centrer les blocs de code sur la page. \end{itemize} \subsection{Option \texttt{minted}} Utilise l'extension \texttt{minted}, nécessitant Python et Pygments installés, ainsi qu'une compilation avec l'option \texttt{--shell-escape}. Offre une coloration syntaxique plus riche. L'environnement \texttt{code}, \texttt{code*}, \texttt{\textbackslash codeinline} et \texttt{\textbackslash codeinput} fonctionnent de manière similaire, mais les options passées sont celles de \texttt{minted} (ex: \texttt{linenos}, \texttt{highlightlines=\{2,3\}}, \texttt{style=tango}). Les styles de boîtes restent les mêmes. \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \documentclass[minted]{neoschool} ... \usemintedstyle{friendly} \begin{code}[linenos]{python}[Exemple Minted] import math def circle_area(radius): return math.pi * radius**2 \end{code} \end{codeside} \tcblower \begin{code}[numbers=left]{python}[Exemple Minted][box-fancy] import math def circle_area(radius): return math.pi * radius**2 \end{code} \end{sidebyside} \subsection{Algorithmes et pseudocode} La classe fournit un environnement \texttt{pseudocode} basé sur \texttt{algpseudocode} et \texttt{tcolorbox} pour afficher des algorithmes. Il est automatiquement numéroté et titré. \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{pseudocode}{Algorithme Exemple} \Require $n \ge 0$ \Ensure $y = x^n$ \State $y \Gets 1$ \If{$n < 0$} \State $X \Gets 1/x$ \State $N \Gets -n$ \Else \State $X \Gets x$ \State $N \Gets n$ \EndIf \While{$N \neq 0$} \If{$N$ is even} \State $X \Gets X \times X$ \State $N \Gets N/2$ \Else[$N$ is odd] \State $y \Gets y \times X$ \State $N \Gets N-1$ \EndIf \EndWhile \end{pseudocode} \end{code} \tcblower \begin{pseudocode}{Algorithme Exemple} \Require $n \ge 0$ \Ensure $y = x^n$ \State $y \Gets 1$ \If{$n < 0$} \State $X \Gets 1/x$ \State $N \Gets -n$ \Else \State $X \Gets x$ \State $N \Gets n$ \EndIf \While{$N \neq 0$} \If{$N$ is even} \State $X \Gets X \times X$ \State $N \Gets N/2$ \Else[$N$ is odd] \State $y \Gets y \times X$ \State $N \Gets N-1$ \EndIf \EndWhile \end{pseudocode} \end{sidebyside} \section{Notes et annotations} \subsection{Notes marginales (\texttt{todonotes})} Activées par l'option de classe \texttt{notes=\textit{longueur}}. \begin{itemize} \item \texttt{\textbackslash tdnote[\textit{options}]\{\textit{texte}\}} : Crée une note dans la marge. Les notes alternent côté gauche/droit. Les options (\texttt{backgroundcolor}, \texttt{linecolor}, etc.) sont celles de \texttt{todonotes}. \item \texttt{\textbackslash boxnote[\textit{label}]\{\textit{texte}\}} + \texttt{\textbackslash tdmark[\textit{label}]} : Permet de placer une \texttt{tdnote} (\texttt{boxnote}) ancrée à un endroit précis (\texttt{tdmark}) même à l'intérieur d'environnements où \texttt{todonotes} échoue. Le \textit{label} doit être identique. \end{itemize} \begin{code}{latex} Ceci est un texte\tdnote{Point important!}. \boxnote[thm-imp]{Ne pas oublier cette hypothèse.} \begin{theorem} \tdmark[thm-imp] Si $x>0$, alors... \end{theorem} \end{code} \subsection{Admonitions} Boîtes colorées avec icônes pour attirer l'attention sur certains points. \begin{itemize} \item \texttt{note} : remarques générales (\faEdit). \item \texttt{info} : informations complémentaires (\faInfoCircle). \item \texttt{warning} : avertissements (\faExclamationTriangle). \item \textbf{important} : points essentiels (\faExclamationCircle). \item \textbf{tip} : conseils, astuces (\faLightbulb). \item \textbf{reminder} : à retenir, mémoriser (\faBookmark). \item \textbf{summary} : résumé, en bref (\faClipboardList). \item \textbf{toolbox} : liste de matériel, prérequis (\faTools). \end{itemize} Chaque environnement accepte \texttt{[\textit{Titre optionnel}][\textit{Icône optionnelle}]}. L'option de classe \textbf{inlineadmonition} (activée par défaut) affiche le titre et le contenu sur la même ligne. Pour désactiver ce comportement et forcer le contenu à s'afficher sous le titre, utilisez l'option \textbf{blockadmonition}. \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{warning}[Attention][\faSkull] Ne pas diviser par zéro ! \end{warning} \begin{tip} Penser à factoriser d'abord. \end{tip} \end{code} \tcblower \begin{warning}[Attention][\faSkull] Ne pas diviser par zéro ! \end{warning} \begin{tip} Penser à factoriser d'abord. \end{tip} \end{sidebyside} \section{Notation et correction} \subsection{Outils de notation} \begin{itemize} \item \texttt{\textbackslash gradingstrip[\textit{total}]} : affiche un bandeau pour la note et l'appréciation. \textit{total} optionnel surcharge le total défini par l'option de classe \texttt{totalpoints} (défaut: 20). \item \texttt{\textbackslash mrk[*][\textit{comm}]\{\textit{pts}\}} : affiche (\textit{pts} pt) ou (\textit{pts} pts) dans la marge. \texttt{*} place à gauche, \textit{comm} ajoute un commentaire. \end{itemize} \begin{sidebyside}[righthand width=.55\linewidth] \begin{code}[numbers=none]{latex} \gradingstrip[10] % Barème sur 10 Question 1 \mrk*[Détail du barème ici... lorem ipsum dolor sit amet]{3} \end{code} \tcblower \gradingstrip[10] Question 1 \mrk*[Détail du barème ici... lorem ipsum dolor sit amet]{3} \end{sidebyside} \subsection{Zones de réponse} \begin{itemize} \item \texttt{\textbackslash answerfield[\textit{largeur}]\{\textit{lignes}\}} : crée une zone de réponse avec fond coloré, d'une hauteur de \textit{lignes} lignes de texte et d'une \textit{largeur} (défaut: \texttt{\textbackslash linewidth}). \item \texttt{\textbackslash answerframe[\textit{largeur}]\{\textit{lignes}\}[\textit{options}]} : crée une zone de réponse encadrée, d'une hauteur de \textit{lignes} et d'une \textit{largeur} (défaut: \texttt{\textbackslash linewidth}). \item \texttt{\textbackslash vardots[\textit{longueur}]} : dessine une ligne pointillée de \textit{longueur} (défaut: \texttt{\textbackslash linewidth}). \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} Réponse : \answerfield[6cm]{1} \end{code} \tcblower Réponse : \answerfield[6cm]{1} \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} Réponse : \answerframe{1} \end{code} \tcblower Réponse : \answerframe{1} \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} Signature : \vardots[4cm] \end{code} \tcblower Signature : \vardots[4cm] \end{sidebyside} \subsection{Marqueurs et symboles} \begin{multicols}{2} \begin{itemize} \item \texttt{\textbackslash cmark} : $\checkmark$ (vert). \item \texttt{\textbackslash xmark} : $\times$ (rouge). \item \texttt{\textbackslash unchecked} : $\square$ (pour listes). \item \texttt{\textbackslash done} : $\rlap{$\square$}{\raisebox{1pt}{\large\hspace{1pt}\cmark}\hspace{-2.5pt}}$ (pour listes). \item \texttt{\textbackslash wontfix} : $\rlap{$\square$}{\large\hspace{1pt}\color{red}\boldsymbol{\times}}$ (pour listes). \end{itemize} \end{multicols} \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{itemize} \unchecked Tâche 1 \done Tâche 2 \wontfix Tâche 3 \end{itemize} \end{code} \tcblower \begin{itemize} \unchecked Tâche 1 \done Tâche 2 \wontfix Tâche 3 \end{itemize} \end{sidebyside} \subsection{Évaluation par compétences} \texttt{\textbackslash competencies\{\textit{Comp1}\textbackslash\textbackslash \textit{Comp2}...\}} : crée un tableau pour évaluer des compétences selon 4 niveaux de maîtrise (avec emojis). \begin{sidebyside}[righthand width=.55\linewidth] \begin{code}[numbers=none]{latex} \competencies{ Maîtriser les fractions \\ Résoudre une équation du 1\up{er} degré \\ Calculer une dérivée } \end{code} \tcblower \competencies{ Maîtriser les fractions \\ Résoudre une équation du 1\up{er} degré \\ Calculer une dérivée } \end{sidebyside} \section{Commandes mathématiques et outils spéciaux} \subsection{Commandes mathématiques} \subsubsection{Mise en valeur et coloration} \begin{itemize} \item \texttt{\textbackslash mhl[\textit{couleur}]\{\textit{expr}\}} : surligne l'expression mathématique \textit{expr} avec la \textit{couleur} (défaut: couleur spécifique du thème). \item \texttt{\textbackslash mc[\textit{couleur}]\{\textit{expr}\}} : colore l'expression mathématique \textit{expr} avec la \textit{couleur} (défaut: couleur spécifique du thème). \item \texttt{\textbackslash mathbox[bordure]\{contenu\}} : encadre rapidement du \textit{contenu} mathématique dans une boîte \texttt{tcolorbox}. La couleur de \textit{fond} (défaut : blanc) et de \textit{bordure} (défaut : couleur spécifique du thème) sont personnalisables. \end{itemize} \begin{sidebyside}[righthand width=.3\linewidth] \begin{code}[numbers=none]{latex} $f(x) = \mhl[cyan!20]{x^2} + \mc[blue]{3x} - 1$ \end{code} \tcblower $f(x) = \mhl[cyan!20]{x^2} + \mc[blue]{3x} - 1$ \end{sidebyside} \begin{sidebyside}[righthand width=.25\linewidth] \begin{code}[numbers=none]{latex} $\mathbox{E=mc^2}$ % Fond blanc, bordure theme $\mathbox[red]{a^2+b^2=c^2}$ % Perso \end{code} \tcblower $\mathbox{E=mc^2}$ \\[1ex] $\mathbox[red]{a^2+b^2=c^2}$ \end{sidebyside} \subsubsection{Support APMEP} Commandes disponibles avec l'option de classe \texttt{apmep}. \begin{itemize} \item Vecteurs : \texttt{\textbackslash vectt\{AB\}}. \item Repères : \texttt{\textbackslash Oij}, \texttt{\textbackslash Oijk}, \texttt{\textbackslash Ouv}. \item Symboles/Commandes : \texttt{\textbackslash euro} (€), \texttt{\textbackslash cg} (]), \texttt{\textbackslash cd} ([), \texttt{\textbackslash pg} ($\ge$), \texttt{\textbackslash pp} ($\le$), \texttt{\textbackslash barre\{x\}} ($\overline{x}$). \end{itemize} \subsection{Outils spéciaux} \subsubsection{Arbres et graphes} \begin{itemize} \item \textbf{Arbres} (environnement \texttt{neotree}) : utilise \texttt{forest}. La syntaxe est celle de \texttt{forest}, avec des options passées à l'environnement. L'option \texttt{w=\textit{val}} ajoute un poids sur une branche. \item \textbf{Graphes} (commande \texttt{\textbackslash neograph}, \texttt{lualatex} requis) : utilise TikZ \texttt{graphs}. La syntaxe est celle de TikZ pour les graphes. \end{itemize} \begin{sidebyside}[righthand width=.4\linewidth] \begin{code}[numbers=none]{latex} \begin{neotree}[l=2cm, s sep=1cm] A [B, w=\frac{1}{3} [D] [\overline{D}]] [C, w=\frac{2}{3} [D] [\overline{D}]] \end{neotree} \end{code} \tcblower \begin{center} \begin{neotree}[l=2cm, s sep=1cm] A [B, w=\frac{1}{3} [D] [\overline{D}]] [C, w=\frac{2}{3} [D] [\overline{D}]] \end{neotree} \end{center} \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} % Nécessite lualatex \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} \tcblower \begin{center} \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{center} \end{sidebyside} \subsubsection{Grille mathématique (\texttt{mathgrid})} Environnement pour aligner des blocs d'équations (\texttt{align*}) en grille. \begin{itemize} \item \texttt{\textbackslash begin\{mathgrid\}\{\textit{n}\}} : démarre une grille à \textit{n} colonnes. \item \texttt{\textbackslash neoline} : commence une nouvelle ligne dans la grille. \item \texttt{\textbackslash neocol[\textit{span}]\{\textit{contenu}\}} : ajoute une colonne contenant \textit{contenu} (un bloc \texttt{align*}). \textit{span} (optionnel, défaut 1) indique sur combien de colonnes s'étend le contenu. \end{itemize} \begin{sidebyside}[righthand width=.5\linewidth] \begin{code}[numbers=none]{latex} \begin{mathgrid}{2} % 2 colonnes \neoline % Ligne 1 \neocol{ % Col 1 A &= 1+1 \\ A &= 2 } \neocol{ % Col 2 B &= 3 \times 4 \\ B &= 12 } \neoline % Ligne 2 \neocol[2]{ % Colonne unique (span=2) C &= A+B \\ C &= 2+12 \\ C &= 14 } \end{mathgrid} \end{code} \tcblower \begin{mathgrid}{2} % 2 colonnes \neoline % Ligne 1 \neocol{ % Col 1 A &= 1+1 \\ A &= 2 } \neocol{ % Col 2 B &= 3 \times 4 \\ B &= 12 } \neoline % Ligne 2 \neocol[2]{ % Colonne unique (span=2) C &= A+B \\ C &= 2+12 \\ C &= 14 } \end{mathgrid} \end{sidebyside} \end{document}