\documentclass[ english, 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{The \texttt{neoschool} Class} \author{Version: 1.1.1 \quad\textemdash{}\quad Author: 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} The \texttt{neoschool} class provides secondary school teachers with a toolkit to design their educational materials (assessments, course handouts, exercise sheets with their solutions, etc.). To meet various needs, it offers eleven predefined color themes, a wide range of class options for layout and typography, specialized environments, dedicated commands, and different preformatted header styles for each document type. It loads several dozen commonly used LaTeX packages (see list below), which significantly lightens the preamble and avoids package conflicts as much as possible. Multilingual, it supports English, French, and German. \end{abstract} \tableofcontents \section{Loaded Packages} The following packages are automatically loaded by the \texttt{neoschool} class. \begin{multicols}{4} \begin{itemize}[label={}] \item \texttt{adforn} \item \texttt{adjustbox} \item \texttt{algpseudocode} \item \texttt{amssymb} \item \texttt{babel} \item \texttt{bookmark} \item \texttt{calc} \item \texttt{changepage} \item \texttt{cuted} \item \texttt{environ} \item \texttt{fancyvrb} \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{mathtools} \item \texttt{microtype} \item \texttt{minted} \item \texttt{mismath} \item \texttt{multicol} \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} Compiling with \texttt{pdflatex} loads the \texttt{fontenc} (with \texttt{T1} option), \texttt{inputenc} (with \texttt{utf8} option), \texttt{newpxtext}, and \texttt{newpxmath} packages. Compiling with \texttt{lualatex} makes the \texttt{fontspec}, \texttt{luacas}, \texttt{lua-ul}, and \texttt{luacolor} packages available and applies the \texttt{TeX Gyre PagellaX} and \texttt{TeX Gyre Heros} fonts in addition to \texttt{newpxmath}. The \textbf{graphics} option loads the \texttt{graphicx} and \texttt{wrapfig} packages. The \textbf{faketext} option (formerly \texttt{draft}) loads the \texttt{blindtext} and \texttt{lipsum} packages. The \textbf{mathastext} option loads the \texttt{mathastext} package. The \textbf{math} option loads the \texttt{annotate-equations}, \texttt{bm}, \texttt{breqn}, \texttt{cancel}, \texttt{mathrsfs}, \texttt{ncccomma}, \texttt{numprint}, \texttt{tdsfrmath} (with \texttt{suite} and \texttt{taupe} options), \texttt{tkz-euclide}, \texttt{witharrows}, and \texttt{xlop} packages. The \textbf{notes=\textit{length}} option displays boxed notes (\texttt{todonotes}) in the margins, alternating between the left and right, and defines their width. It loads the \texttt{todonotes} package. The \textbf{apmep} option, which allows direct compilation of past papers from the French association of the same name, defines a set of mathematical commands and loads the \texttt{esvect}, \texttt{fourier-orns}, \texttt{numprint} (with \texttt{np} option), \texttt{pstricks} (and many packages from the \texttt{pstricks} ecosystem), \texttt{tabularx}, \texttt{textcomp}, \texttt{tkz-tab}, and \texttt{enumitem} packages. The \textbf{mathics} option enables computer algebra (CAS) via \texttt{mathics} (an open-source alternative to \texttt{mathematica}) and loads the \texttt{asymptote} and \texttt{latexalpha2} packages. \section{Configuration Options} \subsection{Language} \begin{itemize} \item \textbf{english, french, german}: Activates translations and typesetting conventions for each language. These options affect the titles of theorems and environments, typography, and mathematical conventions. \item \textbf{nofrenchlist}: Disables French-style lists (reverting to standard bullet points instead of dashes). \item \textbf{frenchlistaspar}: Treats list items as paragraphs in French (adding terminal punctuation and initial capitalization). \item \textbf{frenchmath}: Applies French mathematical conventions (upright uppercase and Greek letters in math mode). \end{itemize} \subsection{Global Appearance} \subsubsection{Predefined Themes} The \textbf{theme} = \texttt{theme-name} option sets the document's color theme. The available themes are: \texttt{classic} (default theme), \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}, and \texttt{midnight} (dark theme). \begin{code}{latex} \documentclass[theme=retrocafe]{neoschool} \end{code} \subsubsection{Color Modes} These options modify how the theme's colors are applied. \begin{itemize} \item \textbf{unicolor}: Uses a single color (based on the main title color) for all environments, with variations in transparency. \item \textbf{examcolor}: Remaps practical and admonition colors (exercises, activities, info, warnings) to the main theoretical color (\texttt{definitionColor}). This creates a more uniform, two-tone palette suitable for exams. \item \textbf{print}: Converts all colors to grayscale for printing. \end{itemize} \subsubsection{Color Customization} Allows overriding the chosen theme's colors. \begin{itemize} \item \textbf{globalcolor} = \texttt{color}: Main text color. \item \textbf{titlecolor} = \texttt{color} or \textbf{titlehexcolor} = \texttt{hex code}: Main title color. \item \textbf{headcolor} = \texttt{color}: Section headings (\texttt{\textbackslash section}) color. \item \textbf{subcolor} = \texttt{color}: Subsection headings (\texttt{\textbackslash subsection}) color. \item \textbf{subsubcolor} = \texttt{color}: Subsubsection headings (\texttt{\textbackslash subsubsection}) color. \item \textbf{headfootcolor} = \texttt{color}: Header and footer text color. \end{itemize} \subsubsection{Display Options} \begin{itemize} \item \textbf{nothmframe}: Removes frames from theorem and exercise environments. \item \textbf{nothmback}: Removes background colors from theorem and exercise environments. \item \textbf{nocodeframe}: Removes frames from code blocks. \item \textbf{nocodeback}: Removes background colors from code blocks. \item \textbf{nocodenum}: Disables line numbering in code blocks. \item \textbf{noadframe}: (Default) Disables frames for admonition boxes (note, info, etc.). \item \textbf{noadback}: (Default) Disables background colors for admonition boxes. \item \textbf{adframe}: Re-enables frames for admonition boxes. \item \textbf{adback}: Re-enables background colors for admonition boxes. \item \textbf{scale}: Harmonizes font scaling when compiling with \texttt{lualatex}. \item \textbf{inlinecodebox}: Displays inline code (\texttt{\textbackslash texttt}) in a framed and colored box. \end{itemize} \subsubsection{Box Corner Radius Options} These key-value options (\texttt{option=length}) let you customize the corner radius for different environments. \begin{itemize} \item \textbf{boxarc} = \texttt{length}: Radius for \texttt{neobox} and \texttt{answerframe} (default: \texttt{1mm}). \item \textbf{codeboxarc} = \texttt{length}: Radius for code boxes (default: \texttt{1mm}). \item \textbf{adboxarc} = \texttt{length}: Radius for admonitions (default: \texttt{2pt}). \item \textbf{sideboxarc} = \texttt{length}: Radius for \texttt{sidebyside} (default: \texttt{1pt}). \item \textbf{thmboxarc} = \texttt{length}: Radius for theorems (default: \texttt{1mm}). \item \textbf{exboxarc} = \texttt{length}: Radius for exercises (default: \texttt{1mm}). \item \textbf{pseudoboxarc} = \texttt{length}: Radius for \texttt{pseudocode} (default: \texttt{1mm}). \end{itemize} \subsection{Abstract Customization} The \texttt{abstracttitle} option allows changing the title of the \texttt{abstract} environment. \begin{code}{latex} \documentclass[abstracttitle=Summary]{neoschool} \end{code} \subsection{Typography} \begin{itemize} \item \textbf{sfbody}: Uses the sans serif font for the main body text. \item \textbf{sfall}: Uses the sans serif font for the entire document (headings, text, etc.). \item \textbf{mathastext}: Uses the current text font for mathematics. \item \textbf{mainface} = \texttt{FontName}: Sets the main font (serif). \item \textbf{mainfaceoptions} = \texttt{options}: Options for the main font (e.g., \texttt{Scale=MatchLowercase}). \item \textbf{sansface} = \texttt{FontName}: Sets the sans serif font. \item \textbf{sansfaceoptions} = \texttt{options}: Options for the sans serif font. \item \textbf{monoface} = \texttt{FontName}: Sets the monospace font (for code). \item \textbf{monofaceoptions} = \texttt{options}: Options for the monospace font. \item \textbf{mathface} = \texttt{MathFontName}: Sets the math font. \item \textbf{mathfaceoptions} = \texttt{options}: Options for the math font (\texttt{pdflatex} only). \item \textbf{facefamily} = \texttt{FamilyName}: Sets a complete font family (e.g., \texttt{fira}). \item \textbf{facefamilyoptions} = \texttt{options}: Options for the font family. \end{itemize} \begin{code}{latex} % Example with Fira Sans \documentclass[ facefamily=Fira Sans, facefamilyoptions={% sfdefault, lining }, monoface=Fira Mono, monofaceoptions={Scale=0.85} ]{neoschool} \end{code} \subsection{Page Layout} \subsubsection{Margins and Spacing} \begin{itemize} \item \textbf{margin} = \texttt{length}: Sets the width of the horizontal margins (default: \texttt{2cm}). Vertical margins are adjusted automatically. \item \textbf{notes} = \texttt{length}: Enables marginal notes (\texttt{todonotes}) and sets their width. \item \textbf{noindent}: Removes paragraph indentation. \item \textbf{indent} = \texttt{length}: Sets the indentation size (default: \texttt{1em}). \item \textbf{vspacing} = \texttt{factor}: Sets a compression/expansion factor for vertical spacing (paragraphs, lists, headings). Default: \texttt{1.0}. A value < 1 compresses, > 1 expands. \end{itemize} \subsubsection{Output Options (N-Up Layout)} These options allow printing multiple logical pages on a single physical page. \begin{itemize} \item \textbf{2a5toa4}: Prints the same A5 page twice on one A4 landscape sheet. \item \textbf{2a4toa3}: Prints the same A4 page twice on one A3 landscape sheet. \item \textbf{4a5toa3}: Prints the same A5 page four times on one A3 sheet. \item \textbf{2toa3}: Prints 2 different A4 pages on one A3 landscape sheet. \item \textbf{bookleta5}: Creates an A5 booklet (A5 pages on folded A4 sheets). \item \textbf{bookleta4}: Creates an A4 booklet (A4 pages on folded A3 sheets). \end{itemize} \subsubsection{Table of Contents} \begin{itemize} \item \textbf{compacttoc}: Reduces spacing in the Table of Contents. \item \textbf{monotoc}: Uses the main text color (\texttt{globalcolor}) for the Table of Contents. \item \textbf{twocolumntoc}: Typesets the Table of Contents in two columns. \end{itemize} \subsubsection{Headers and Footers} \begin{itemize} \item \textbf{fullheader}: Enables a full header and footer (document type, title, level / date, institution, pagination). Used in conjunction with \texttt{\textbackslash neoheader}. \item \textbf{headrule}: Adds a rule (line) below the header. \item \textbf{footrule}: Adds a rule above the footer. \item \textbf{headfootrule}: Adds both rules. \end{itemize} \section{Document Styles} \subsection{Title Styles (\texttt{\textbackslash maketitle})} These options radically change the appearance of the first page and title. \subsubsection{Exam Styles} Ideal for tests, quizzes, and mock exams. \begin{itemize} \item \textbf{exam}: Full style with a table for name, class, date, etc., and a grading strip. Requires \texttt{\textbackslash neoheader}. \item \textbf{shortexam}: More compact style for exams, with essential information. Requires \texttt{\textbackslash neoheader}. \item \textbf{mockexam}: Specific style for standardized mock exams, with a normalized cover page (French standard). Requires \texttt{\textbackslash neoheader}. \end{itemize} \begin{code}{latex} \documentclass[exam]{neoschool} \neoheader{ type = Test \#1, school = Imaginary High School, level = Grade 12, duration = 2h, calculator = exam % or true/false } \title{Numerical Sequences} \date{October 21, 2025} \subject{Mathematics} % Optional \begin{document} \maketitle ... \end{document} \end{code} \subsubsection{Assessment Styles} Suitable for quizzes and short tests. \begin{itemize} \item \textbf{eval}: Standard style, information distributed in the corners. Requires \texttt{\textbackslash neoheader}. \item \textbf{evalicons}: \texttt{eval} style with customizable icons via \texttt{\textbackslash neoheader}. \item \textbf{evalgrade}: \texttt{eval} style with an added grading strip. \item \textbf{evaliconsgrade}: Combines \texttt{evalicons} and \texttt{evalgrade}. \item \textbf{shorteval}: Compact style on a single line at the top of the page. Requires \texttt{\textbackslash neoheader}. \end{itemize} \subsubsection{Bubble Styles} Visual effects for less formal documents. \begin{itemize} \item \textbf{bubbles}: Centered title on a background of colored bubbles. \item \textbf{topbubbles}: Bubbles confined to the top of the page, title below. \item \textbf{bottombubbles}: Bubbles confined to the bottom of the page, title above. \end{itemize} \subsubsection{Other Title Styles} More classic or minimalist options. \begin{itemize} \item \textbf{titleornament}: Adds ornaments under the title. \item \textbf{titlerule}: Adds a small rule under the title. \item \textbf{titlemidrule}: Adds a centered rule of medium width under the title. \item \textbf{titlefullrule}: Adds a full-width rule under the title. \item \textbf{fancybox}: Title in a rotated colored banner at the top left. \item \textbf{onlytitleleft} / \textbf{onlytitle} / \textbf{onlytitleright}: Displays only the title, aligned left / center / right. Ignores author, date, etc. \item \textbf{shorttitle}: Compact style, title centered on one line at the top. \item \textbf{shortlesson}: Compact style for lesson sheets, with type, title, and level on one line. Requires \texttt{\textbackslash neoheader}. \end{itemize} \subsection{Header Configuration (\texttt{\textbackslash neoheader})} This command configures the information used by the \texttt{exam}, \texttt{eval}, \texttt{mockexam}, \texttt{shortlesson} styles and the \texttt{fullheader} option. \begin{code}{latex} \neoheader{ type = {Quiz}, % Document type school = {A. Turing College}, % Institution name academy = {Lyon}, % Academy name (for mockexam) level = {Grade 8}, % Class level duration = {20 minutes}, % Duration (for exam, mockexam) calculator = {false}, % Calculator: true / false / exam leftcontent = {\faFlask}, % Left icon (for evalicons) rightcontent = {\faCalculator} % Right icon (for evalicons) } \end{code} \subsection{Heading Formatting Options} These options control the appearance (font, weight, shape, alignment) of the document's various headings. \subsubsection{Global Styles} Apply by default to all headings (sections, theorems, exercises...). \begin{itemize} \item \textbf{headstyle} = \texttt{style} (\texttt{sffamily} default): Font family (e.g., \texttt{rmfamily}, \texttt{sffamily}). \item \textbf{headweight} = \texttt{weight} (\texttt{bfseries} default): Font weight (e.g., \texttt{mdseries}, \texttt{bfseries}, \texttt{sbseries} for semi-bold if available). \item \textbf{headshape} = \texttt{shape} (\texttt{scshape} default): Font shape (e.g., \texttt{upshape}, \texttt{itshape}, \texttt{scshape} for small caps). \end{itemize} \subsubsection{Main Title Style (\texttt{\textbackslash maketitle})} Overrides global styles for the main title. \begin{itemize} \item \textbf{titlestyle} = \texttt{style} (inherits from \texttt{headstyle}). \item \textbf{titleweight} = \texttt{weight} (inherits from \texttt{headweight}). \item \textbf{titleshape} = \texttt{shape} (\texttt{upshape} default). \item \textbf{titlealign} = \texttt{alignment} (\texttt{center} default): \texttt{left}, \texttt{center}, \texttt{right}. \end{itemize} \subsubsection{Section Style (\texttt{\textbackslash section})} Specific options for section headings. \begin{itemize} \item \textbf{sectionnumstyle} = \texttt{style} (\texttt{circle} default): Number appearance (\texttt{circle}, \texttt{box}, \texttt{dash}, \texttt{plain}). \item \textbf{sectiontextstyle} = \texttt{style} (\texttt{sc} default): Text case (\texttt{sc}, \texttt{upper}, \texttt{lower}). \item \textbf{sectionstyle} = \texttt{style} (\texttt{normal} default): Overall visual style (\texttt{ornaments}, \texttt{underline}, \texttt{normal}, \texttt{highlighted}, \texttt{shadedline}). \item \textbf{sectionalign} = \texttt{alignment} (\texttt{center} default): \texttt{left}, \texttt{center}, \texttt{right}. \end{itemize} \subsubsection{Header and Footer Style} \begin{itemize} \item \textbf{headfootstyle} = \texttt{style} (inherits from \texttt{titlestyle}): Font style for header and footer text. \end{itemize} \subsubsection{Full Configuration Example} \begin{code}{latex} \documentclass[ % Global style headstyle=sffamily, headweight=bfseries, headshape=scshape, % Main title titlestyle=rmfamily, titleweight=bfseries, titleshape=upshape, titlealign=left, % Sections sectionnumstyle=box, sectiontextstyle=upper, sectionstyle=underline, sectionalign=left, % Headers/Footers headfootstyle=sffamily ]{neoschool} \end{code} \section{Content Layout} \subsection{Absolute Object Positioning} The command \texttt{\textbackslash positionobject\{\textit{x}\}\{\textit{y}\}\{\textit{scale}\}\{\textit{content}\}} places \textit{content} at coordinates (\textit{x}, \textit{y}) from the top-left corner of the page, with a \textit{scale} factor. \begin{code}{latex} % Logo in the top right \positionobject{15cm}{1cm}{0.5}{% \includegraphics[width=3cm]{logo.png}% } % Text at the bottom left \positionobject{2cm}{25cm}{1.2}{% \textit{Important note}% } \end{code} \subsection{Two-Column Layout} The command \texttt{\textbackslash splitcontent[\textit{w1}][\textit{gap}]\{\textit{col1}\}\{\textit{col2}\}} splits the horizontal space. \begin{itemize} \item \textit{w1}: Width of the first column (default: 0.5 for 50\%). \item \textit{gap}: Gap between columns (default: 0.02 for 2\%). \item \textit{col1}, \textit{col2}: Content of the columns. \end{itemize} \begin{sidebyside}[righthand width=.54\linewidth] \begin{code}[numbers=none]{latex} \splitcontent[0.45][0.03]{% Column 1 content (40 (*@\%@*)) \lipsum[1][1-2] }{% Column 2 content (52 (*@\%@*)) \lipsum[1][1-2] } \end{code} \tcblower \splitcontent[0.45][0.03]{% Column 1 content (45 \%) \lipsum[1][1-2] }{% Column 2 content (52 \%) \lipsum[2][1-2] } \end{sidebyside} \subsection{Side-by-Side Layout (\texttt{sidebyside} environment)} Creates two side-by-side \texttt{tcolorbox} environments. Use \texttt{\textbackslash tcblower} to switch from the left box to the right box. Accepts \texttt{tcolorbox} options. \begin{sidebyside}[righthand width=.55\linewidth] \begin{code}[numbers=none]{latex} \begin{sidebyside}[ title=\centering Comparison, ] Pros \begin{itemize} \item Point 1 \end{itemize} \tcblower % Separates the two columns Cons \begin{itemize} \item Point A \end{itemize} \end{sidebyside} \end{code} \tcblower \begin{sidebyside}[ title=\centering Comparison, ] Pros \begin{itemize} \item Point 1 \end{itemize} \tcblower % Separates the two columns Cons \begin{itemize} \item Point A \end{itemize} \end{sidebyside} \end{sidebyside} \subsection{Text with Image} The command \texttt{\textbackslash textwithimage[*]\{\textit{w\_img}\}\{\textit{s\_img}\}\{\textit{text}\}\{\textit{image\_path}\}} combines text and an image. \begin{itemize} \item \texttt{*}: If present, places the image on the left (default is right). \item \textit{w\_img}: Relative width of the image (e.g., 0.3 for 30\%). \item \textit{s\_img}: Scaling of the image within its box (e.g., 0.95). \item \textit{text}: The text content. \item \textit{image\_path}: Path to the image file. \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} % Image on the right (30% width) \textwithimage{0.3}{1}{% Description of the image that will be displayed on the right. }{example-image-a} % dummy image \end{code} \tcblower % Visual simulation \textwithimage{0.3}{1}{% Description of the image that will be displayed on the right. }{example-image-a} \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} % Image on the left (40% width) \textwithimage*{0.4}{0.9}{% Description to the right of the image. }{example-image-b} % dummy image \end{code} \tcblower % Visual simulation \textwithimage*{0.4}{0.9}{% Description to the right of the image. }{example-image-b} \end{sidebyside} \subsection{QR Codes and Content} The command \texttt{\textbackslash withqrcode[*][\textit{size}]\{\textit{url}\}\{\textit{content}\}} integrates a QR code next to content. \begin{itemize} \item \texttt{*}: Places the QR code on the right (default is left). \item \textit{size}: Size of the QR code (default: 2cm). \item \textit{url}: URL or text to be encoded in the QR code. \item \textit{content}: Text or other content to display next to it. \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} % QR code on the left (default 2cm) \withqrcode{https://www.google.com}{ Scan to visit Google. } \end{code} \tcblower \withqrcode{https://www.google.com}{ Scan to visit Google. } \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} % QR code on the right (3cm) \withqrcode*[3cm]{https://en.wikipedia.org}{ More information on Wikipedia. } \end{code} \tcblower \withqrcode*[3cm]{https://en.wikipedia.org}{ More information on Wikipedia. } \end{sidebyside} \subsection{Grids and Rulings} \subsubsection{Customizable Grids} Commands to draw gridded areas. \begin{itemize} \item \texttt{\textbackslash grid[\textit{color}]\{\textit{width}\}\{\textit{height}\}}: Small-step grid (5mm x 5mm). \item \texttt{\textbackslash customgrid[\textit{color}][\textit{dx}][\textit{dy}]\{\textit{width}\}\{\textit{height}\}}: Grid with custom spacing (\textit{dx}, \textit{dy}). \item \texttt{\textbackslash frenchgrid[\textit{color1}][\textit{color2}]\{\textit{width}\}\{\textit{height}\}}: French (Seyès) ruling. The starred version \texttt{\textbackslash frenchgrid*} centers the grid horizontally. \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} % centered \end{code} \tcblower \frenchgrid*{5cm}{2cm} \end{sidebyside} \subsubsection{Automatic Fill} The command \texttt{\textbackslash gridfill} fills the remaining vertical space on the page with a \texttt{customgrid} (5mm default). The starred version \texttt{\textbackslash gridfill*} uses \texttt{frenchgrid}. \begin{code}{latex} % Syntax: \gridfill[*][color][dx][dy] % Fills with a blue 2mm x 2mm customgrid \gridfill[blue][2mm][2mm] % Fills with a (default) frenchgrid \gridfill* \end{code} \subsubsection{Full Page Backgrounds} Applies a background style to the current page. \begin{itemize} \item \texttt{\textbackslash notebook}: Lined notebook style with a red margin. \item \texttt{\textbackslash nbminorgrid}: Small-step (5mm) gridded background. \item \texttt{\textbackslash nbmajorgrid}: Seyès-ruled background. \end{itemize} \begin{code}{latex} \nbminorgrid % Applies the fine grid to the whole page \end{code} \subsection{Simple Boxes (\texttt{neobox})} An environment for creating simple \texttt{tcolorbox}es, with or without a frame. Accepts \texttt{tcolorbox} options. \begin{itemize} \item \texttt{neobox}: Box with a frame. \item \texttt{neobox*}: Box with no visible frame (but a background is possible). \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{neobox}[ title=Standard box ] Content... \end{neobox} \end{code} \tcblower \begin{neobox}[ title=Standard box ] Content... \end{neobox} \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{neobox*} Content without a visible frame... \end{neobox*} \end{code} \tcblower \begin{neobox*} Content without a visible frame... \end{neobox*} \end{sidebyside} \section{Exercises} Based on the \texttt{xsim} package. \subsection{\texttt{exercise} and \texttt{solution} Environments} \subsubsection{Exercise Configuration} Options available in \texttt{\textbackslash begin\{exercise\}[options]}. \begin{itemize} \item \textbf{points} = \texttt{number}: Number of points. \item \textbf{bonus-points} = \texttt{number}: Bonus points. \item \textbf{level} = \texttt{number}: Difficulty level (1 to 5, displayed as stars $\star$). \item \textbf{subtitle} = \texttt{text}: Subtitle or brief description. \item \textbf{icon} = \texttt{fa-icon-name}: FontAwesome icon (e.g., \texttt{pencil-alt}). Requires the \texttt{exerciseicons} class option. \item \textbf{topic} = \texttt{theme}: Topic/chapter (for future filtering/selection). \item \textbf{grade} = \texttt{class/level}: Class level (for filtering). \item \textbf{subject} = \texttt{subject}: Subject (for filtering). \item \textbf{ID} = \texttt{identifier}: Unique ID to reference the exercise (\texttt{\textbackslash exercisenumber\{id\}}). \item \textbf{template} = \texttt{template-name}: Specific display template for this exercise (see list below). Overrides the global style. \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 ] Calculate $3 \times (5+2)$. \end{exercise} \begin{solution} $3 \times (5+2) = 3 \times 7 = 21$. \end{solution} See exercise \exercisenumber{calc01}. \end{code} \tcblower \xsimsetup{ exercise/template = sober-box, solution/print = true} % To show the solution here \begin{exercise}[ points=3, bonus-points=1, level=2, subtitle={Application}, ID=calc01, template=sober-box ] Calculate $3 \times (5+2)$. \end{exercise} \begin{solution} $3 \times (5+2) = 3 \times 7 = 21$. \end{solution} See exercise \exercisenumber{calc01}. \xsimsetup{ exercise/template = inline, solution/print = false} % Revert to default \end{sidebyside} \subsubsection{Global Options (\texttt{\textbackslash xsimsetup})} Place in the preamble to affect the entire document. \begin{itemize} \item \textbf{exercise/template} = \texttt{template-name}: Sets the default style for all exercises. \item \textbf{solution/template} = \texttt{sol-template-name}: Sets the default style for all solutions (e.g., \texttt{sol-inline}, \texttt{sol-block}, \texttt{sol-dotted}). \item \textbf{solution/print} = \texttt{true/false}: Globally shows or hides solutions. Can be overridden by the \textbf{answers} class option. \end{itemize} Other class options affecting exercises: \begin{itemize} \item \textbf{exercisestyle} = \texttt{template-name}: Sets the default display template for all exercises (e.g., \texttt{inline}, \texttt{box-hrule}, \texttt{elegant-box}). If unset, it defaults to the style defined by \texttt{theoremstyle}. \item \textbf{exerciseicons}: Enables icon display for all exercises. \item \textbf{answers} / \textbf{answersonly}: Displays solutions after each exercise / Displays only the solutions. \item \textbf{shuffle}: Shuffles answers randomly in \texttt{choices} and \texttt{checkboxes} environments. \item \textbf{sectionthmcounter}: Numbers exercises (and theorems) per section (e.g., Ex 1.1, Ex 1.2, Ex 2.1...). \item \textbf{sharedexcounter}: Makes exercises and theorems share the same counter (combined with \texttt{sharedthmcounter}). \item \textbf{blocksol}: Uses the \texttt{sol-block} template for solutions. \end{itemize} \subsubsection{Exercise Templates (Display Styles)} Possible values for \texttt{template} (in \texttt{exercise} options or \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}: Various framed box styles with titles. \item \textbf{rect-box}, \textbf{rect-box-out}: Simple rectangular boxes, with or without an outline. \item \textbf{num-box}, \textbf{num-box-out}: Compact boxes displaying just the number. \item \textbf{ex-num-box}, \textbf{ex-num-box-out}: Like \texttt{num-box} but with "Ex." before the number. \item \textbf{box-hrule}, \textbf{box-hrule-out}, \textbf{box-hrule-in}: Title in a box followed by a horizontal rule. \item \textbf{boxed}, \textbf{boxed-out}: Title in a small box (filled or outline). \item \textbf{inline} (default if \texttt{amslikethm}): Simple inline style, like a paragraph. \item \textbf{section}: Style like a section heading. \item \textbf{terminal}: Style mimicking a terminal, with \faTerminal icon. \item \textbf{block}: Minimalist style with no box or decoration. \item \textbf{hrule}: Style with a simple horizontal rule under the title. \item \textbf{smart-box}: Simple box with a colored title. \item \textbf{minimal-ams}: Minimalist style, bold title without a box. \item \textbf{rule-ams}: Minimalist style with a title and horizontal rule. \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} % Revert to default \end{code} \tcblower \xsimsetup{exercise/template=box-hrule-out} \begin{exercise}[points=2] Style box-hrule-out. \end{exercise} \xsimsetup{exercise/template=inline} % Revert to default \end{sidebyside} \subsubsection{Multiple Choice Questions} Environments to be used inside an \texttt{exercise}. \begin{itemize} \item \textbf{choices}\texttt{(\textit{n})}: For single-answer MCQs. \texttt{\textbackslash choice} for an answer, \texttt{\textbackslash choice[\textbackslash correct]} for the correct answer. \textit{n} is the number of columns. \item \textbf{checkboxes}\texttt{(\textit{n})}: For multiple-answer MCQs. \texttt{\textbackslash checkbox} for an answer,\\ \texttt{\textbackslash checkbox[\textbackslash correct*]} for a correct answer. \textit{n} is the number of columns. \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{exercise}[ID=qcm-deriv, points=1] What is the derivative of $f(x)=x^2$? \begin{choices}(2) % In 2 columns \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] What is the derivative of $f(x)=x^2$? \begin{choices}(2) % In 2 columns \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] Check the true properties. \begin{checkboxes}(1) % In 1 column \checkbox[\correct*] $1+1=2$ \checkbox $\sqrt{2}$ is rational. \checkbox[\correct*] $0 \times 5 = 0$ \end{checkboxes} \end{exercise} \end{code} \tcblower \begin{exercise}[ID=qcm-props, points=2] Check the true properties. \begin{checkboxes}(1) % In 1 column \checkbox[\correct*] $1+1=2$ \checkbox $\sqrt{2}$ is rational. \checkbox[\correct*] $0 \times 5 = 0$ \end{checkboxes} \end{exercise} \end{sidebyside} \section{Mathematical Environments (Theorems, Definitions, etc.)} Based on \texttt{tcolorbox}. \subsection{Theorem Styles (Class Options)} These class options set the default appearance for all theorem-like environments. \begin{itemize} \item \textbf{classythm}, \textbf{soberthm}, \textbf{elegantthm}, \textbf{classicthm}, \textbf{slantedthm}, \textbf{shadedthm}, \textbf{boxedthm}: Various styles with boxes, colors, etc. \item \textbf{amslikethm} (default): Minimalist style similar to standard AMS environments. \item \textbf{theoremstyle} = \texttt{style-name}: Allows setting the theorem style by name (e.g., \texttt{elegant}, \texttt{amslike}, \texttt{shaded}). This is an alternative to using the boolean options above. \end{itemize} \begin{code}{latex} % Applies the \texttt{elegantthm} style to all math environments. \documentclass[elegantthm]{neoschool} \end{code} \subsection{Common Environment Options} Passed in square brackets: \texttt{\textbackslash begin\{theorem\}[options]}. \begin{itemize} \item \textbf{title} = \texttt{text}: Custom title (e.g., \texttt{title=Pythagorean Theorem}). \item \textbf{label} = \texttt{name}: Label for referencing (\texttt{\textbackslash ref}, \texttt{\textbackslash nameref}). \item \textbf{colback} = \texttt{color}: Specific background color. \item \textbf{colframe} = \texttt{color}: Specific frame color. \item \textbf{coltitle} = \texttt{color}: Specific title color. \item \textbf{fonttitle} = \texttt{commands}: Formatting commands for the title (e.g., \texttt{fonttitle=\textbackslash sffamily\textbackslash bfseries}). \end{itemize} \subsection{Numbering Options (Class Options)} \begin{itemize} \item \textbf{sectionthmcounter}: Counters are relative to each section (e.g., Thm 1.1, Def 1.2, Thm 2.1...). \item \textbf{sharedthmcounter}: A single shared counter is used for all environments (Thm 1, Def 2, Lem 3...). \item \textbf{thmgroupcounter}: Groups theorem-like environments (theorem, lemma, corollary, proposition, property) under a single shared counter. \end{itemize} \subsection{Available Mathematical Environments} \begin{itemize} \item \textbf{theorem} (label prefix: \texttt{thm}) \item \textbf{lemma} (label prefix: \texttt{lem}) \item \textbf{corollary} (label prefix: \texttt{cor}) \item \textbf{conjecture} (label prefix: \texttt{conj}) \item \textbf{proposition} (label prefix: \texttt{propo}) \item \textbf{property} (label prefix: \texttt{prop}) \item \textbf{definition} (label prefix: \texttt{def}) \item \textbf{method} (label prefix: \texttt{meth}) \item \textbf{activity} (label prefix: \texttt{act}) \item \textbf{application} (label prefix: \texttt{appl}) \item \textbf{remark} (unnumbered) \item \textbf{remarks} (unnumbered, for multiple remarks) \item \textbf{example} (label prefix: \texttt{ex}) \item \textbf{examples} (unnumbered, for multiple examples) \item \textbf{proof}: Environment for proofs. \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{definition}[ title=Prime Number, label=prime ] A natural number is prime if it has exactly two distinct divisors: 1 and itself. \end{definition} See Definition~\ref{def:prime}. \end{code} \tcblower \begin{definition}[ title=Prime Number, label=prime ] A natural number is prime if it has exactly two distinct divisors: 1 and itself. \end{definition} See Definition~\ref{def:prime}. \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{proof} The proof is trivial and is left as an exercise for the reader. \end{proof} \end{code} \tcblower \begin{proof} The proof is trivial and is left as an exercise for the reader. \end{proof} \end{sidebyside} \section{Code Listings} Two systems are available via the \textbf{listings} (default) or \textbf{minted} class options. \subsection{The \texttt{listings} option} Uses the \texttt{listings} package. Syntax highlighting is defined by the chosen color theme. \subsubsection{\texttt{code} environment} Displays a code block. \begin{codeside}[numbers=none]{latex} \begin[options]{code}{language}[title][box-style] ... code ... \end{code} \end{codeside} \begin{itemize} \item \texttt{options}: \texttt{listings} options (e.g., \texttt{numbers=none}, \texttt{frame=single}). \item \texttt{language}: Code language (e.g., \texttt{python}, \texttt{latex}, \texttt{c++}...). \item \texttt{title}: Optional title for the box. \item \texttt{box-style}: \texttt{tcolorbox} style for the box (see below). \item \texttt{code*}: Variant without automatic listing numbering. \end{itemize} The \texttt{codestyle=[style]} class option (default \texttt{box-elegant}) sets the default box style for the entire document. The \texttt{[box-style]} parameter of the environment allows overriding this choice locally. Available box styles: \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}[Square Function][box-minimal] def square(x): """Calculates the square of x.""" return x * x \end{code} \end{codeside} \tcblower \begin{code}[numbers=none]{python}[Square Function][box-minimal] def square(x): """Calculates the square of x.""" return x * x \end{code} \end{sidebyside} \subsubsection{Preconfigured Languages} \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{Additional Commands} \begin{itemize} \item \texttt{\textbackslash codeinline[\textit{lang}]\{\textit{code}\}}: Displays inline \textit{code} with highlighting (\textit{lang} is optional). \item \texttt{\textbackslash codeinput[\textit{opt}]\{\textit{lang}\}\{\textit{file}\}[\textit{title}][\textit{style}]}: Imports and displays code from a \textit{file}. \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} The code \codeinline[python]{x = 5} initializes x. \end{code} \tcblower The code \codeinline[python]{x = 5} initializes x. \end{sidebyside} \subsection{The \texttt{minted} option} Uses the \texttt{minted} package, which requires Python and Pygments to be installed, as well as compilation with the \texttt{--shell-escape} flag. It provides richer syntax highlighting. The \texttt{code}, \texttt{code*}, \texttt{\textbackslash codeinline}, and \texttt{\textbackslash codeinput} environments work similarly, but the options passed are those from \texttt{minted} (e.g., \texttt{linenos}, \texttt{highlightlines=\{2,3\}}, \texttt{style=tango}). The box styles remain the same. \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \documentclass[minted]{neoschool} ... \usemintedstyle{friendly} \begin{code}[linenos]{python}[Minted Example] import math def circle_area(radius): return math.pi * radius**2 \end{code} \end{codeside} \tcblower % Simulation (does not compile without minted and shell-escape) \begin{code}[numbers=left]{python}[Minted Example][box-fancy] import math def circle_area(radius): return math.pi * radius**2 \end{code} \end{sidebyside} \subsection{Algorithms and Pseudocode} The class provides a \texttt{pseudocode} environment based on \texttt{algpseudocode} and \texttt{tcolorbox} for displaying algorithms. It is automatically numbered and titled. \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{pseudocode}{Example Algorithm} \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}{Example Algorithm} \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 and Annotations} \subsection{Marginal Notes (\texttt{todonotes})} Enabled by the \texttt{notes=\textit{length}} class option. \begin{itemize} \item \texttt{\textbackslash tdnote[\textit{options}]\{\textit{text}\}}: Creates a note in the margin. Notes alternate between the left and right sides. Options (\texttt{backgroundcolor}, \texttt{linecolor}, etc.) are from the \texttt{todonotes} package. \item \texttt{\textbackslash boxnote[\textit{label}]\{\textit{text}\}} + \texttt{\textbackslash tdmark[\textit{label}]}: Allows placing a \texttt{tdnote} (\texttt{boxnote}) anchored at a specific location (\texttt{tdmark}), even inside environments where \texttt{todonotes} might fail. The \textit{label} must be identical. \end{itemize} \begin{code}{latex} This is some text\tdnote{Important point!}. \boxnote[thm-imp]{Don't forget this hypothesis.} \begin{theorem} \tdmark[thm-imp] If $x>0$, then... \end{theorem} \end{code} \subsection{Admonitions} Colored boxes with icons to draw attention to specific points. \begin{itemize} \item \texttt{note}: General remarks (\faEdit). \item \texttt{info}: Supplementary information (\faInfoCircle). \item \texttt{warning}: Warnings (\faExclamationTriangle). \item \textbf{important}: Essential points (\faExclamationCircle). \item \textbf{tip}: Advice, tips (\faLightbulb). \item \textbf{reminder}: Key takeaways (\faBookmark). \item \textbf{summary}: Summary, in short (\faClipboardList). \item \textbf{toolbox}: Materials list, prerequisites (\faTools). \end{itemize} Each environment accepts \texttt{[\textit{Optional Title}][\textit{Optional Icon}]}. The \textbf{inlineadmonition} class option displays the title and content on the same line. \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{warning}[Caution][\faSkull] Do not divide by zero! \end{warning} \begin{tip} Remember to factor first. \end{tip} \end{code} \tcblower \begin{warning}[Caution][\faSkull] Do not divide by zero! \end{warning} \begin{tip} Remember to factor first. \end{tip} \end{sidebyside} \section{Grading and Answer Sheets} \subsection{Grading Tools} \begin{itemize} \item \texttt{\textbackslash gradingstrip[\textit{total}]}: Displays a strip for the grade and comments. Optional \textit{total} overrides the total defined by the \texttt{totalpoints} class option (default: 20). \item \texttt{\textbackslash mrk[*][\textit{comment}]\{\textit{pts}\}}, \texttt{\textbackslash mrks[*][\textit{comment}]\{\textit{pts}\}}: Displays (\textit{pts} pt) or (\textit{pts} pts) in the margin. \texttt{*} places it on the left, \textit{comment} adds a comment. \end{itemize} \begin{sidebyside}[righthand width=.55\linewidth] \begin{code}[numbers=none]{latex} \gradingstrip[10] % Graded out of 10 Question 1 \mrks*[Grading details here... lorem ipsum dolor sit amet]{3} \end{code} \tcblower \gradingstrip[10] Question 1 \mrks*[Grading details here... lorem ipsum dolor sit amet]{3} \end{sidebyside} \subsection{Answer Areas} \begin{itemize} \item \texttt{\textbackslash answerfield[\textit{width}]\{\textit{lines}\}}: Creates an answer area with a colored background, a height of \textit{lines} text lines, and a \textit{width} (default: \texttt{0.975\textbackslash linewidth}). \item \texttt{\textbackslash answerframe[\textit{width}]\{\textit{lines}\}[\textit{options}]}: Creates a framed answer area, a height of \textit{lines}, and a \textit{width} (default: \texttt{\textbackslash linewidth}). \item \texttt{\textbackslash vardots[\textit{length}]}: Draws a dotted line of \textit{length} (default: \texttt{\textbackslash linewidth}). \end{itemize} \begin{sidebyside} \begin{code}[numbers=none]{latex} Answer: \answerfield[6cm]{1} \end{code} \tcblower Answer: \answerfield[6cm]{1} \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} Answer: \answerframe{1} \end{code} \tcblower Answer: \answerframe{1} \end{sidebyside} \begin{sidebyside} \begin{code}[numbers=none]{latex} Signature: \vardots[4cm] \end{code} \tcblower Signature: \vardots[4cm] \end{sidebyside} \subsection{Checkmarks and Symbols} \begin{multicols}{2} \begin{itemize} \item \texttt{\textbackslash cmark}: $\checkmark$ (green). \item \texttt{\textbackslash xmark}: $\times$ (red). \item \texttt{\textbackslash unchecked}: $\square$ (for lists). \item \texttt{\textbackslash done}: $\rlap{$\square$}{\raisebox{1pt}{\large\hspace{1pt}\cmark}\hspace{-2.5pt}}$ (for lists). \item \texttt{\textbackslash wontfix}: $\rlap{$\square$}{\large\hspace{1pt}\color{red}\boldsymbol{\times}}$ (for lists). \end{itemize} \end{multicols} \begin{sidebyside} \begin{code}[numbers=none]{latex} \begin{itemize} \unchecked Task 1 \done Task 2 \wontfix Task 3 \end{itemize} \end{code} \tcblower \begin{itemize} \unchecked Task 1 \done Task 2 \wontfix Task 3 \end{itemize} \end{sidebyside} \subsection{Competency-Based Assessment} \texttt{\textbackslash competencies\{\textit{Comp1}\textbackslash\textbackslash \textit{Comp2}...\}}: Creates a table to assess competencies based on 4 mastery levels (with emojis). \begin{sidebyside}[righthand width=.55\linewidth] \begin{code}[numbers=none]{latex} \competencies{ Mastering fractions \\ Solving linear equations \\ Calculating a derivative } \end{code} \tcblower \competencies{ Mastering fractions \\ Solving linear equations \\ Calculating a derivative } \end{sidebyside} \section{Mathematical Commands and Special Tools} \subsection{Mathematical Commands} \subsubsection{Highlighting and Coloring} \begin{itemize} \item \texttt{\textbackslash mhl[\textit{color}]\{\textit{expr}\}}: Highlights the math expression \textit{expr} with \textit{color} (default: theme-specific color). \item \texttt{\textbackslash mc[\textit{color}]\{\textit{expr}\}}: Colors the math expression \textit{expr} with \textit{color} (default: theme-specific color). \item \texttt{\textbackslash mathbox[border]\{content\}}: Quickly boxes math \textit{content} in a \texttt{tcolorbox}. The \textit{background} color (default: white) and \textit{border} color (default: theme-specific) are customizable. \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}$ % White bg, theme border $\mathbox[red]{a^2+b^2=c^2}$ % Custom \end{code} \tcblower $\mathbox{E=mc^2}$ \\[1ex] $\mathbox[red]{a^2+b^2=c^2}$ \end{sidebyside} \subsubsection{APMEP Support} Commands available with the \texttt{apmep} class option. \begin{itemize} \item Vectors: \texttt{\textbackslash vectt\{AB\}}. \item Coordinate systems: \texttt{\textbackslash Oij}, \texttt{\textbackslash Oijk}, \texttt{\textbackslash Ouv}. \item Symbols/Commands: \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{Special Tools} \subsubsection{Trees and Graphs} \begin{itemize} \item \textbf{Trees} (\texttt{neotree} environment): Uses \texttt{forest}. The syntax is that of \texttt{forest}, with options passed to the environment. The \texttt{w=\textit{val}} option adds a weight to an edge. \item \textbf{Graphs} (\texttt{\textbackslash neograph} command, \texttt{lualatex} required): Uses TikZ \texttt{graphs}. The syntax is that of TikZ for graphs. \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} % Requires 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{Math Grid (\texttt{mathgrid})} Environment to align blocks of equations (\texttt{align*}) in a grid. \begin{itemize} \item \texttt{\textbackslash begin\{mathgrid\}\{\textit{n}\}}: Starts a grid with \textit{n} columns. \item \texttt{\textbackslash neoline}: Starts a new row in the grid. \item \texttt{\textbackslash neocol[\textit{span}]\{\textit{content}\}}: Adds a column containing \textit{content} (an \texttt{align*} block). \textit{span} (optional, default 1) indicates how many columns the content spans. \end{itemize} \begin{sidebyside}[righthand width=.5\linewidth] \begin{code}[numbers=none]{latex} \begin{mathgrid}{2} % 2 columns \neoline % Row 1 \neocol{ % Col 1 A &= 1+1 \\ A &= 2 } \neocol{ % Col 2 B &= 3 \times 4 \\ B &= 12 } \neoline % Row 2 \neocol[2]{ % Single column (span=2) C &= A+B \\ C &= 2+12 \\ C &= 14 } \end{mathgrid} \end{code} \tcblower \begin{mathgrid}{2} % 2 columns \neoline % Row 1 \neocol{ % Col 1 A &= 1+1 \\ A &= 2 } \neocol{ % Col 2 B &= 3 \times 4 \\ B &= 12 } \neoline % Row 2 \neocol[2]{ % Single column (span=2) C &= A+B \\ C &= 2+12 \\ C &= 14 } \end{mathgrid} \end{sidebyside} \end{document}