\documentclass[ english, compacttoc, twocolumntoc, apmep, faketext, margin=1cm, vspacing=0.85, theme=fjord, mainface=Zilla Slab, sansface=Work Sans, sansfaceoptions={BoldFont = {Work Sans SemiBold}, Scale=0.9}, monoface=iAWriterDuoV.ttf, monofacescale=0.9, abstracttitle={}, monofaceoptions={UprightFont={iAWriterDuoV.ttf}, UprightFeatures = { RawFeature={axis={wght=430}} }, BoldFont={iAWriterDuoV.ttf}, BoldFeatures={RawFeature={+axis={wght=700}}}}, mathface=Concrete Math, ]{neoschool} \title{The \texttt{neoschool} Class (v1.2.0)} \author{Razik Ikhlef \textemdash{} \href{https://apps.edulatex.xyz}{https://apps.edulatex.xyz} \textemdash{} \href{mailto:razik.ikhlef@csilyon.fr}{razik.ikhlef@csilyon.fr}} \date{\today} \begin{document} \maketitle \vspace*{-.25cm} \begin{abstract} The \texttt{neoschool} class provides K--12 educators with a comprehensive toolkit for creating pedagogical documents---exams, lecture notes, worksheets, answer keys, and more. It ships with sixty predefined color themes, extensive layout and typography options, specialized environments, dedicated commands, and multiple header styles tailored for different document types. Dozens of commonly used LaTeX packages are loaded automatically, keeping your preamble clean and minimizing compatibility issues. Full localization support is available for English, French, and German. \end{abstract} \vspace*{-0.35cm} \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{amsmath} \item \texttt{babel} \item \texttt{bookmark} \item \texttt{calc} \item \texttt{changepage} \item \texttt{colortbl} \item \texttt{environ} \item \texttt{fontawesome5} \item \texttt{forest} \item \texttt{iftex} \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{todonotes} \item \texttt{ulem} \item \texttt{wrapfig} \item \texttt{xcolor} \item \texttt{xhfill} \item \texttt{xkeyval} \item \texttt{xsim} \item \texttt{xstring} \end{itemize} \end{multicols} When compiling with \texttt{pdflatex}, the class also loads \texttt{fontenc} (with \texttt{T1}), \texttt{inputenc} (with \texttt{utf8}), \texttt{newpxtext}, and \texttt{newpxmath}. When using \texttt{lualatex}, it provides access to \texttt{fontspec}, \texttt{luacas}, \texttt{lua-ul}, and \texttt{luacolor}, and sets up \texttt{TeX Gyre Pagella} and \texttt{TeX Gyre Heros} alongside \texttt{newpxmath}. \subsection{Optional Packages} \begin{itemize} \item \textbf{faketext}: loads \texttt{blindtext} and \texttt{lipsum} for placeholder text. \item \textbf{mathastext}: loads \texttt{mathastext} to use the text font in math mode. \item \textbf{math}: loads \texttt{annotate-equations}, \texttt{bm}, \texttt{cancel}, \texttt{esvect}, \texttt{mathrsfs}, \texttt{ncccomma}, \texttt{numprint}, \texttt{tdsfrmath} (with \texttt{suite} and \texttt{taupe} options), \texttt{tkz-euclide}, \texttt{witharrows}, and \texttt{xlop}. \item \textbf{notes}/\textbf{leftnotes}/\textbf{rightnotes}: activates margin notes (left, right, or alternating). \item \textbf{apmep}: loads a bundle of packages for compiling French national exam papers (APMEP), including \texttt{esvect}, \texttt{fourier-orns}, \texttt{numprint}, \texttt{pstricks} and its ecosystem, \texttt{tabularx}, \texttt{textcomp}, \texttt{tkz-tab}, and \texttt{variations}. \item \textbf{mathics}: loads \texttt{asymptote} and \texttt{latexalpha2} for computer algebra via Mathics. \end{itemize} \section{Configuration Options} \subsection{Language} \begin{itemize} \item \textbf{english}, \textbf{french}, \textbf{german}: activates localization, including environment labels, typography rules, and math conventions. \item \textbf{nofrenchlist}: disables French-style lists (uses bullets instead of dashes). \item \textbf{frenchlistaspar}: treats list items as paragraphs in French mode. \item \textbf{frenchmath}: applies French math conventions (upright capitals and Greek letters). \end{itemize} \subsection{Global Appearance} \subsubsection{Predefined Themes} The \textbf{theme}=\texttt{name} option sets the document's color scheme. Available themes are organized by category. \begin{itemize} \item \textbf{Modern:} \texttt{cambridge}, \texttt{fjord}, \texttt{granite}, \texttt{graphite}, \texttt{midnight} (default), \texttt{nocturne}, \texttt{nordic}, \texttt{oceanic}, \texttt{oxford}, \texttt{petrol}, \texttt{slate}. \item \textbf{Blue:} \texttt{academic}, \texttt{azure}, \texttt{book}, \texttt{klein}, \texttt{pacific}, \texttt{prussian}, \texttt{royalblue}, \texttt{scholar}, \texttt{skyblue}. \item \textbf{Green:} \texttt{classic}, \texttt{dartmouth}, \texttt{emerald}, \texttt{forest}, \texttt{hunter}, \texttt{jungle}, \texttt{olive}, \texttt{reef}, \texttt{science}, \texttt{teal}. \item \textbf{Red:} \texttt{burgundy}, \texttt{cherry}, \texttt{crimson}, \texttt{deeporange}, \texttt{firebrick}, \texttt{pepper}, \texttt{scarlet}. \item \textbf{Brown:} \texttt{coffee}, \texttt{goldenrod}, \texttt{monastery}, \texttt{rosewood}, \texttt{sahara}, \texttt{sienna}, \texttt{terra}, \texttt{titian}, \texttt{tuscany}, \texttt{vandyke}, \texttt{vintage}. \item \textbf{Purple:} \texttt{amethyst}, \texttt{dusk}, \texttt{indigo}, \texttt{iris}, \texttt{lavender}, \texttt{marrs}, \texttt{modern}, \texttt{modern2}, \texttt{mulberry}, \texttt{violetrose}. \item \textbf{Dark:} \texttt{dracula}, \texttt{night}, \texttt{mocha}, \texttt{nord}. \end{itemize} \begin{code}{latex} \documentclass[theme=emerald]{neoschool} \end{code} \subsubsection{Accent Styles} The \textbf{accent}=\texttt{style} option controls how theme colors are applied throughout the document. \begin{itemize} \item \textbf{strong}: vivid, high-contrast colors everywhere. \item \textbf{emphasized}: colored headings, neutral body text. \item \textbf{gradient}: colors shift across heading levels. \item \textbf{soft}: muted colors with black text. \item \textbf{flat}: primary color dominates all elements. \item \textbf{light} (default): balanced, lighter tones. \item \textbf{structured}: structural colors only; code in black. \item \textbf{minimal}: sparse color usage; content-focused. \item \textbf{mono}: monochrome based on the primary color. \item \textbf{technical}: technical style; white background, black text. \item \textbf{print}: grayscale for printing. \item \textbf{accessible}: cream background with high-contrast colors for accessibility. \end{itemize} \subsubsection{Color Profiles} The \textbf{colorprofile}=\texttt{profile} option determines how colors are assigned to environment types. \begin{itemize} \item \textbf{mathbook} (default): primary for foundations (definitions), secondary for theory (theorems), tertiary for exercises and examples. \item \textbf{exam}: primary for exercises, secondary for foundations and theory. \item \textbf{core}: primary for foundations and theory, secondary for exercises. \item \textbf{school}: primary for exercises and examples, secondary for theory, tertiary for foundations. \end{itemize} \subsubsection{Color Modes} \begin{itemize} \item \textbf{unicolor}: uses a single color for all environments. \item \textbf{bicolor}: uses two complementary colors. \end{itemize} \subsubsection{Custom Colors} \begin{itemize} \item \textbf{globalcolor}=\texttt{color}: main text color (default: \texttt{black}). \item \textbf{titlecolor}=\texttt{color}: document title color. \item \textbf{titlehexcolor}=\texttt{RRGGBB}: document title color in hex. \item \textbf{headcolor}=\texttt{color}: \texttt{\textbackslash section} heading color. \item \textbf{subcolor}=\texttt{color}: \texttt{\textbackslash subsection} heading color. \item \textbf{subsubcolor}=\texttt{color}: \texttt{\textbackslash subsubsection} heading color. \item \textbf{headfootcolor}=\texttt{color}: header and footer color. \end{itemize} \subsubsection{Box Appearance} \paragraph{Frames and Backgrounds:} \begin{itemize} \item \textbf{thmnoframe} / \textbf{thmframe}: toggle theorem box frames. \item \textbf{thmnoback} / \textbf{thmback}: toggle theorem box backgrounds. \item \textbf{codenoframe} / \textbf{codeframe}: toggle code box frames. \item \textbf{codenoback} / \textbf{codeback}: toggle code box backgrounds. \item \textbf{codenonum} / \textbf{codenum}: toggle line numbers in code. \item \textbf{adnoframe} / \textbf{adframe}: toggle admonition frames (default: no frame). \item \textbf{adnoback} / \textbf{adback}: toggle admonition backgrounds (default: no background). \item \textbf{exnoback} / \textbf{exback}: toggle exercise backgrounds. \item \textbf{noback} / \textbf{back}: toggle all backgrounds. \item \textbf{noframe} / \textbf{frame}: toggle all frames. \item \textbf{clean}: disables all frames and backgrounds. \item \textbf{styled}: enables all frames and backgrounds. \end{itemize} \paragraph{Background Opacity:} \begin{itemize} \item \textbf{boxopacity}=\texttt{n}: global background opacity (0--100, default: 0). \item \textbf{thmboxopacity}=\texttt{n}: theorem background opacity. \item \textbf{exboxopacity}=\texttt{n}: exercise background opacity. \item \textbf{codeboxopacity}=\texttt{n}: code background opacity (default: 7). \item \textbf{adboxopacity}=\texttt{n}: admonition background opacity. \item \textbf{mathboxopacity}=\texttt{n}: math highlight opacity (default: 15). \end{itemize} \paragraph{Corner Radius:} \begin{itemize} \item \textbf{boxarc}=\texttt{dim}: radius for \texttt{neobox} and \texttt{answerframe} (default: \texttt{0pt}). \item \textbf{thmboxarc}=\texttt{dim}: radius for theorems (default: \texttt{0pt}). \item \textbf{exboxarc}=\texttt{dim}: radius for exercises (default: \texttt{0pt}). \item \textbf{codeboxarc}=\texttt{dim}: radius for code boxes (default: \texttt{0pt}). \item \textbf{adboxarc}=\texttt{dim}: radius for admonitions (default: \texttt{0pt}). \item \textbf{sideboxarc}=\texttt{dim}: radius for \texttt{sidebyside} (default: \texttt{0pt}). \item \textbf{pseudoboxarc}=\texttt{dim}: radius for \texttt{pseudocode} (default: \texttt{0pt}). \end{itemize} \paragraph{Title Terminators:} \begin{itemize} \item \textbf{thmterminator}=\texttt{text}: terminator after theorem titles (default: \texttt{.\textbackslash !}). \item \textbf{thmseparator}=\texttt{text}: separator between name and custom title. \item \textbf{adterminator}=\texttt{text}: terminator for admonitions (default: \texttt{.\textbackslash !}). \item \textbf{exterminator}=\texttt{text}: terminator for exercises (default: \texttt{.}). \item \textbf{boxtitle}=\texttt{text}: default title for generic boxes. \end{itemize} \subsubsection{Other Display Options} \begin{itemize} \item \textbf{scale}: harmonizes font sizes in \texttt{lualatex}/\texttt{xelatex}. \item \textbf{inlinecodebox}: renders inline code (\texttt{\textbackslash texttt}) in a colored box. \item \textbf{inlineadmonition} (default): admonition title and content on the same line. \item \textbf{blockadmonition}: forces admonition content below the title. \end{itemize} \subsection{Typography} \subsubsection{Fonts} \begin{itemize} \item \textbf{mainface}=\texttt{Font}: main serif font. \item \textbf{mainfaceoptions}=\texttt{options}: options for the main font. \item \textbf{mainfacescale}=\texttt{factor}: scale factor (default: 1.0). \item \textbf{sansface}=\texttt{Font}: sans-serif font. \item \textbf{sansfaceoptions}=\texttt{options}: options for the sans font. \item \textbf{sansfacescale}=\texttt{factor}: scale factor (default: 1.0). \item \textbf{monoface}=\texttt{Font}: monospace font (for code). \item \textbf{monofaceoptions}=\texttt{options}: options for the mono font. \item \textbf{monofacescale}=\texttt{factor}: scale factor (default: 1.0). \item \textbf{mathface}=\texttt{Font}: math font. \item \textbf{mathfaceoptions}=\texttt{options}: options for the math font. \item \textbf{mathfacescale}=\texttt{factor}: scale factor for math. \item \textbf{facefamily}=\texttt{Family}: complete font family. \item \textbf{facefamilyoptions}=\texttt{options}: options for the family. \item \textbf{sfbody}: use sans-serif for body text. \item \textbf{sfall}: use sans-serif throughout the document. \item \textbf{mathastext}: use the text font for math. \end{itemize} \subsubsection{Heading Styles} \paragraph{Global Styles:} \begin{itemize} \item \textbf{headstyle}=\texttt{style}: font family (default: \texttt{sffamily}). \item \textbf{headweight}=\texttt{weight}: font weight (default: \texttt{bfseries}). \item \textbf{headshape}=\texttt{shape}: font shape (default: \texttt{upshape}). \end{itemize} \paragraph{Document 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}: default \texttt{upshape}. \item \textbf{titlesize}=\texttt{size}: title font size (default: \texttt{hugeminus}). \item \textbf{titlealign}=\texttt{align}: alignment (default: \texttt{center}). \item \textbf{titledecor}=\texttt{decor}: decoration below title (default: \texttt{none}). \item[] Values: \texttt{none}, \texttt{ornament}, \texttt{rule}, \texttt{midrule}, \texttt{fullrule}. \end{itemize} \paragraph{Sections:} \begin{itemize} \item \textbf{sectionnumstyle}=\texttt{style}: number appearance (default: \texttt{circle}). \item[] Values: \texttt{circle}, \texttt{box}, \texttt{dash}, \texttt{plain}. \item \textbf{sectiontextstyle}=\texttt{style}: text case (default: \texttt{sc}). \item[] Values: \texttt{sc}, \texttt{upper}, \texttt{lower}. \item \textbf{sectionstyle}=\texttt{style}: visual style (default: \texttt{normal}). \item[] Values: \texttt{normal}, \texttt{ornaments}, \texttt{underline}, \texttt{highlighted}, \texttt{shadedline}. \item \textbf{sectionalign}=\texttt{align}: alignment (default: \texttt{center}). \end{itemize} \paragraph{Headers and Footers:} \begin{itemize} \item \textbf{headfootstyle}=\texttt{style}: inherits from \texttt{titlestyle}. \end{itemize} \subsection{Page Layout} \subsubsection{Margins and Spacing} \begin{itemize} \item \textbf{margin}=\texttt{dim}: horizontal margin width (default: \texttt{1.5cm}). \item \textbf{indent}=\texttt{dim}: paragraph indentation (default: \texttt{1em}). \item \textbf{noindent}: removes paragraph indentation. \item \textbf{vspacing}=\texttt{factor}: vertical spacing factor (default: \texttt{1.0}). Range: 0.25 to 2.0. \end{itemize} \subsubsection{Margin Notes} \begin{itemize} \item \textbf{noteswidth}=\texttt{dim}: margin note width (activates \texttt{todonotes}). \item \textbf{notesposition}=\texttt{position}: note placement (\texttt{left}, \texttt{right}, or alternating by default). \end{itemize} \subsubsection{Headers and Footers} \begin{itemize} \item \textbf{fullheader}: enables full header/footer (requires \texttt{\textbackslash neoheader}). \item \textbf{nofooter}: removes header and footer (\texttt{empty} style). \item \textbf{pageonlyfooter}: shows only centered page number. \item \textbf{headerules}=\texttt{style}: rule lines (default: \texttt{none}). Values: \texttt{none}, \texttt{headrule}, \texttt{footrule}, \texttt{headfootrule}. \end{itemize} \subsubsection{Table of Contents} \begin{itemize} \item \textbf{compacttoc}: reduces spacing in the table of contents. \item \textbf{monotoc}: renders TOC in \texttt{globalcolor}. \item \textbf{twocolumntoc}: displays TOC in two columns. \end{itemize} \subsubsection{Output Modes} These options let you print multiple logical pages on a single physical sheet. \begin{itemize} \item \textbf{2a5toa4}: 2 identical A5 pages on one landscape A4 sheet. \item \textbf{2a4toa3}: 2 identical A4 pages on one landscape A3 sheet. \item \textbf{4a5toa3}: 4 identical A5 pages on one A3 sheet. \item \textbf{2toa3}: 2 different A4 pages on one landscape A3 sheet. \item \textbf{bookleta5}: A5 booklet (A5 pages on folded A4 sheets). \item \textbf{bookleta4}: A4 booklet (A4 pages on folded A3 sheets). \end{itemize} \subsection{Miscellaneous Options} \begin{itemize} \item \textbf{abstracttitle}=\texttt{Title}: title for the \texttt{abstract} environment (default: \texttt{DEFAULT}). \item \textbf{boldlistlabels}: renders list labels in bold. \item \textbf{totalpoints}=\texttt{n}: total points for grading (default: 20). \end{itemize} \section{Document Styles} \subsection{Title Layouts (\texttt{titlelayout})} The \textbf{titlelayout}=\texttt{style} option controls the first page and title appearance. \subsubsection{Exam Styles} \begin{itemize} \item \textbf{exam}: full layout with name/class/date fields and grading strip. \item \textbf{shortexam}: compact exam layout. \item \textbf{mockexam}: style for practice exams. \end{itemize} \subsubsection{Quiz Styles} \begin{itemize} \item \textbf{eval}: standard layout with corner info. \item \textbf{evalicons}: \texttt{eval} with customizable icons. \item \textbf{evalgrade}: \texttt{eval} with grading strip. \item \textbf{evaliconsgrade}: combines \texttt{evalicons} and \texttt{evalgrade}. \item \textbf{shorteval}: compact single-line layout. \end{itemize} \subsubsection{Visual Styles} \begin{itemize} \item \textbf{bubbles}: centered title over colored bubbles. \item \textbf{topbubbles}: bubbles at top, title below. \item \textbf{bottombubbles}: bubbles at bottom, title above. \item \textbf{geometric}: geometric pattern background. \item \textbf{banner}: title in a decorative banner. \end{itemize} \subsubsection{Classic Styles} \begin{itemize} \item \textbf{default}: standard centered title. \item \textbf{titlebox}: title in a colored banner at page top. \item \textbf{tighttitle}: compact title without box. \item \textbf{onlytitle}: displays only the centered title. \item \textbf{shorttitle}: compact centered single-line title. \item \textbf{shortlesson}: compact style for lesson handouts. \end{itemize} \begin{code}{latex} \documentclass[titlelayout=exam]{neoschool} \neoheader{ type = Unit Test 1, school = Springfield High, level = AP Calculus BC, duration = 90 min, calculator = exam } \title{Sequences and Series} \date{October 21, 2025} \subject{Mathematics} \begin{document} \maketitle ... \end{document} \end{code} \subsection{Header Configuration (\texttt{\textbackslash neoheader})} This command configures metadata for the \texttt{exam}, \texttt{eval}, \texttt{mockexam}, \texttt{shortlesson} styles, and the \texttt{fullheader} option. \begin{code}{latex} \neoheader{ type = {Pop Quiz}, school = {Lincoln Middle School}, academy = {District 7}, level = {8th Grade}, duration = {20 minutes}, calculator = {false}, % true / false / exam leftcontent = {\faFlask}, rightcontent = {\faCalculator}, leftcontentfill = {true}, rightcontentfill = {true} } \end{code} \section{Math Environments} Built on \texttt{tcolorbox}. \subsection{Theorem Styles} The \textbf{thmstyle}=\texttt{style} option sets the appearance of theorem-like environments. Values: \texttt{amslike} (default), \texttt{leftrule}, \texttt{elegant}, \texttt{shaded}, \texttt{slanted}, \texttt{sober}, \texttt{classic}, \texttt{classy}, \texttt{boxed}. \subsection{Available Environments} \begin{itemize} \item \textbf{theorem} (ref: \texttt{thm}) \item \textbf{lemma} (ref: \texttt{lem}) \item \textbf{corollary} (ref: \texttt{cor}) \item \textbf{conjecture} (ref: \texttt{conj}) \item \textbf{proposition} (ref: \texttt{propo}) \item \textbf{property} (ref: \texttt{prop}) \item \textbf{definition} (ref: \texttt{def}) \item \textbf{method} (ref: \texttt{meth}) \item \textbf{activity} (ref: \texttt{act}) \item \textbf{application} (ref: \texttt{appl}) \item \textbf{remark}, \textbf{remarks} (unnumbered) \item \textbf{example}, \textbf{examples} (ref: \texttt{ex}) \item \textbf{proof} \end{itemize} \subsection{Environment Options} \begin{itemize} \item \textbf{title}=\texttt{text}: custom title. \item \textbf{label}=\texttt{name}: label for \texttt{\textbackslash ref}. \item \textbf{colback}=\texttt{color}: background color. \item \textbf{colframe}=\texttt{color}: frame color. \item \textbf{coltitle}=\texttt{color}: title color. \item \textbf{fonttitle}=\texttt{commands}: title formatting. \end{itemize} \subsection{Numbering Options} \begin{itemize} \item \textbf{sectionthmcounter}: counters reset per section. \item \textbf{sharedthmcounter}: single counter shared across all environments. \item \textbf{thmgroupcounter}: shared counter for theorem, lemma, corollary, proposition, property. \item \textbf{sharedexcounter}: shares counter between exercises and theorems. \end{itemize} \subsection{Environment Examples} \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \begin{definition}[ title=Prime Number, label=prime ] A natural number is called prime if it has exactly two distinct divisors: 1 and itself. \end{definition} See Definition~\ref{def:prime}. \end{codeside} \tcblower \begin{definition}[ title=Prime Number, label=prime ] A natural number is called prime if it has exactly two distinct divisors: 1 and itself. \end{definition} See Definition~\ref{def:prime}. \end{sidebyside} \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \begin{theorem}[title=Pythagorean Theorem] In a right triangle, the square of the hypotenuse equals the sum of the squares of the other two sides: \[ c^2 = a^2 + b^2 \] \end{theorem} \end{codeside} \tcblower \begin{theorem}[title=Pythagorean Theorem] In a right triangle, the square of the hypotenuse equals the sum of the squares of the other two sides: \[ c^2 = a^2 + b^2 \] \end{theorem} \end{sidebyside} \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \begin{property} Every differentiable function is continuous. \end{property} \begin{proof} This follows directly from the definition of the derivative. \end{proof} \end{codeside} \tcblower \begin{property} Every differentiable function is continuous. \end{property} \begin{minipage}{0.95\linewidth} \begin{proof} This follows directly from the definition of the derivative. \end{proof} \end{minipage} \end{sidebyside} \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \begin{example} Let $f(x) = x^2$. Then $f'(x) = 2x$. \end{example} \begin{remark} The converse is false: $|x|$ is continuous but not differentiable at $0$. \end{remark} \end{codeside} \tcblower \begin{example} Let $f(x) = x^2$. Then $f'(x) = 2x$. \end{example} \begin{remark} The converse is false: $|x|$ is continuous but not differentiable at $0$. \end{remark} \end{sidebyside} \section{Exercises} Built on the \texttt{xsim} package. \subsection{The \texttt{exercise} and \texttt{solution} Environments} \subsubsection{Exercise Options} \begin{itemize} \item \textbf{points}=\texttt{n}: point value. \item \textbf{bonus-points}=\texttt{n}: bonus points. \item \textbf{level}=\texttt{n}: difficulty level (1--5, shown as stars). \item \textbf{subtitle}=\texttt{text}: subtitle. \item \textbf{icon}=\texttt{fa-name}: FontAwesome icon (requires \texttt{exerciseicons}). \item \textbf{topic}=\texttt{topic}: topic for sorting/filtering. \item \textbf{grade}=\texttt{level}: grade level. \item \textbf{subject}=\texttt{subject}: subject area. \item \textbf{ID}=\texttt{id}: identifier for \texttt{\textbackslash exercisenumber\{id\}}. \item \textbf{template}=\texttt{name}: display template. \end{itemize} \subsubsection{Exercise Styles (\texttt{exstyle})} The \textbf{exstyle}=\texttt{style} option sets the exercise appearance. Values: \texttt{inline} (default with \texttt{amslike}), \texttt{boxed}, \texttt{box}, \texttt{elegant-box}, \texttt{shaded-box}, \texttt{slanted-box}, \texttt{sober-box}, \texttt{classic-box}, \texttt{classy-box}, \texttt{rect-box}, \texttt{num-box}, \texttt{ex-num-box}, \texttt{box-hrule}, \texttt{smart-box}, \texttt{section}, \texttt{terminal}, \texttt{hrule}, \texttt{rule-ams}. \subsubsection{Global Options} \begin{itemize} \item \textbf{exerciseicons}: enables icon display. \item \textbf{answers}: shows solutions after each exercise. \item \textbf{answersonly}: shows only solutions. \item \textbf{shuffle}: randomizes multiple-choice answers. \item \textbf{blocksol}: uses the \texttt{sol-block} template for solutions. \end{itemize} \subsubsection{Exercise with Solution Example} \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \begin{exercise}[ points=4, level=2, subtitle={Derivative Computation} ] Find the derivative of $f(x) = x^3 - 2x + 1$. \end{exercise} \begin{solution} Using the power rule: $f'(x) = 3x^2 - 2$. \end{solution} \end{codeside} \tcblower \begin{exercise}[ points=4, level=2, subtitle={Derivative Computation} ] Find the derivative of $f(x) = x^3 - 2x + 1$. \end{exercise} \xsimsetup{solution/print=true} \begin{solution} Using the power rule: $f'(x) = 3x^2 - 2$. \end{solution} \xsimsetup{solution/print=false} \end{sidebyside} \subsubsection{Multiple Choice} \begin{itemize} \item \textbf{choices}\texttt{(\textit{n})}: single-answer MCQ in \textit{n} columns. Use \texttt{\textbackslash choice} for an option; \texttt{\textbackslash choice[\textbackslash correct]} for the correct answer. \item \textbf{checkboxes}\texttt{(\textit{n})}: multiple-answer MCQ. Use \texttt{\textbackslash checkbox} for an option; \texttt{\textbackslash checkbox[\textbackslash correct*]} for a correct answer. \end{itemize} \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \begin{exercise}[points=1] What is the derivative of $f(x)=x^2$? \begin{choices}(2) \choice[\correct] $x\mapsto 2x$ \choice $x\mapsto x$ \choice $x\mapsto x^2$ \choice $x\mapsto 2$ \end{choices} \end{exercise} \end{codeside} \tcblower \begin{exercise}[points=1] What is the derivative of $f(x)=x^2$? \begin{choices}(2) \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} \begin{codeside}[numbers=none]{latex} \begin{exercise}[points=2] Check all true statements. \begin{checkboxes}(1) \checkbox[\correct*] $\pi > 3$ \checkbox $\sqrt{2}$ is rational \checkbox[\correct*] $0! = 1$ \checkbox $\ln(1) = 1$ \end{checkboxes} \end{exercise} \end{codeside} \tcblower \begin{exercise}[points=2] Check all true statements. \begin{checkboxes}(1) \checkbox[\correct*] $\pi > 3$ \checkbox $\sqrt{2}$ is rational \checkbox[\correct*] $0! = 1$ \checkbox $\ln(1) = 1$ \end{checkboxes} \end{exercise} \end{sidebyside} \section{Code Listings} Two syntax highlighting backends are available via class options: \begin{itemize} \item \textbf{listings} (default): syntax highlighting via \texttt{listings}. \item \textbf{minted}: syntax highlighting via \texttt{minted} (requires Python, Pygments, and \texttt{--shell-escape}). \end{itemize} \subsection{The \texttt{code} Environment} \begin{codeside}[numbers=none]{latex} \begin[options]{code}{language}[title][box-style] ... code ... \end{code} \end{codeside} \begin{itemize} \item \texttt{options}: \texttt{listings}/\texttt{minted} options. \item \texttt{language}: \texttt{python}, \texttt{latex}, \texttt{c++}, etc. \item \texttt{title}: optional title. \item \texttt{box-style}: box style. \end{itemize} \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \begin{code}{python}[Factorial Function] def fact(n): if n <= 1: return 1 return n * fact(n - 1) \end{code} \end{codeside} \tcblower \begin{code}{python}[Factorial Function] def fact(n): if n <= 1: return 1 return n * fact(n - 1) \end{code} \end{sidebyside} \subsection{Code Box Styles (\texttt{codestyle})} The \textbf{codestyle}=\texttt{style} option sets the code box appearance. Values: \texttt{box-leftrule} (default), \texttt{box-minimal}, \texttt{box-subtle}, \texttt{box-fancy}, \texttt{box-elegant}, \texttt{box-sober}, \texttt{box-shaded}, \texttt{box-academic}, \texttt{box-diagonal}, \texttt{box-bevel}, \texttt{box-corner}, \texttt{box-rounded}, \texttt{box-downhill}, \texttt{box-toptitle}, \texttt{box-bottomtitle}. \subsection{Code Options} \begin{itemize} \item \textbf{codewidth}=\texttt{factor}: code block width (default: 1.0). \item \textbf{centeredcode}: centers code blocks. \end{itemize} \subsection{Additional Commands} \begin{itemize} \item \texttt{\textbackslash codeinline[\textit{lang}]\{\textit{code}\}}: inline code with highlighting. \item \texttt{\textbackslash codeinput[\textit{opt}]\{\textit{lang}\}\{\textit{file}\}[\textit{title}][\textit{style}]}: imports code from a file. \end{itemize} \begin{sidebyside}[righthand width=.45\linewidth] \begin{codeside}[numbers=none]{latex} The \codeinline[python]{range(n)} function generates integers from $0$ to $n-1$. \end{codeside} \tcblower The \codeinline[python]{range(n)} function generates integers from $0$ to $n-1$. \end{sidebyside} \subsection{The \texttt{pseudocode} Environment} Built on \texttt{algpseudocode}. Keywords are automatically localized. Special commands: \begin{itemize} \item \texttt{\textbackslash Gets}: assignment arrow $\leftarrow$. \item \texttt{\textbackslash To}: ``to'' keyword for loops. \end{itemize} \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \begin{pseudocode}{Binary Search} \Require Sorted array $T$, value $v$ \Ensure Index of $v$ or $-1$ \State $lo \Gets 0$, $hi \Gets |T| - 1$ \While{$lo \leq hi$} \State $mid \Gets (lo + hi) / 2$ \If{$T[mid] = v$} \State \Return $mid$ \ElsIf{$T[mid] < v$} \State $lo \Gets mid + 1$ \Else \State $hi \Gets mid - 1$ \EndIf \EndWhile \State \Return $-1$ \end{pseudocode} \end{codeside} \tcblower \begin{pseudocode}{Binary Search} \Require Sorted array $T$, value $v$ \Ensure Index of $v$ or $-1$ \State $lo \Gets 0$, $hi \Gets |T| - 1$ \While{$lo \leq hi$} \State $mid \Gets (lo + hi) / 2$ \If{$T[mid] = v$} \State \Return $mid$ \ElsIf{$T[mid] < v$} \State $lo \Gets mid + 1$ \Else \State $hi \Gets mid - 1$ \EndIf \EndWhile \State \Return $-1$ \end{pseudocode} \end{sidebyside} \section{Admonitions} Colored callout boxes with icons for drawing attention. \begin{itemize} \item \textbf{note}: general remarks (\faEdit). \item \textbf{info}: additional information (\faInfoCircle). \item \textbf{warning}: cautions (\faExclamationTriangle). \item \textbf{important}: key points (\faExclamationCircle). \item \textbf{tip}: hints and tips (\faLightbulb). \item \textbf{reminder}: things to remember (\faBookmark). \item \textbf{summary}: summaries (\faClipboardList). \item \textbf{toolbox}: materials, prerequisites (\faTools). \end{itemize} Each environment accepts \texttt{[\textit{Title}][\textit{Icon}]}. \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \begin{warning}[Caution][\faSkull] Never divide by zero! \end{warning} \begin{tip} Factor first whenever possible. \end{tip} \end{codeside} \tcblower \begin{warning}[Caution][\faSkull] Never divide by zero! \end{warning} \begin{tip} Factor first whenever possible. \end{tip} \end{sidebyside} \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \begin{toolbox}[Materials Needed] Calculator, ruler, compass. \end{toolbox} \begin{reminder} $\sin^2(x) + \cos^2(x) = 1$ \end{reminder} \end{codeside} \tcblower \begin{toolbox}[Materials Needed] Calculator, ruler, compass. \end{toolbox} \begin{reminder} $\sin^2(x) + \cos^2(x) = 1$ \end{reminder} \end{sidebyside} \section{Content Layout} \subsection{Absolute Positioning} \texttt{\textbackslash positionobject\{\textit{x}\}\{\textit{y}\}\{\textit{scale}\}\{\textit{content}\}}: places content at coordinates (\textit{x}, \textit{y}) from the top-left corner. \subsection{Two-Column Layout} \texttt{\textbackslash splitcontent[\textit{w1}][\textit{gap}]\{\textit{col1}\}\{\textit{col2}\}}: divides horizontal space. \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \splitcontent[0.4][0.05]{% \textbf{Left Column (40\%)} First paragraph... }{% \textbf{Right Column (55\%)} Second paragraph... } \end{codeside} \tcblower \splitcontent[0.4][0.05]{% \textbf{Left Column (40\%)} First paragraph with some text to demonstrate the layout. }{% \textbf{Right Column (55\%)} Second paragraph with additional content. } \end{sidebyside} \subsection{The \texttt{sidebyside} Environment} Creates two \texttt{tcolorbox} panels side by side. Use \texttt{\textbackslash tcblower} to separate them. \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \begin{sidebyside}[ title=Comparison, righthand width=.45\linewidth ] \textbf{Pros} \begin{itemize} \item Simple \item Fast \end{itemize} \tcblower \textbf{Cons} \begin{itemize} \item Limited \end{itemize} \end{sidebyside} \end{codeside} \tcblower \begin{sidebyside}[title=Comparison, righthand width=.45\linewidth] \textbf{Pros} \begin{itemize} \item Simple \item Fast \end{itemize} \tcblower \textbf{Cons} \begin{itemize} \item Limited \end{itemize} \end{sidebyside} \end{sidebyside} \subsection{Text with Image} \texttt{\textbackslash textwithimage[*]\{\textit{w\_img}\}\{\textit{s\_img}\}\{\textit{text}\}\{\textit{path}\}}: combines text and image. The starred version places the image on the left. \subsection{QR Codes} \texttt{\textbackslash withqrcode[*][\textit{size}]\{\textit{url}\}\{\textit{content}\}}: QR code alongside content. The starred version places the QR code on the right. \begin{sidebyside}[righthand width=.5\linewidth] \begin{codeside}[numbers=none]{latex} \withqrcode{https://example.com}{% Scan this QR code to visit the website. } \end{codeside} \tcblower \withqrcode{https://example.com}{% Scan this QR code to visit the website. } \end{sidebyside} \subsection{Grids and Paper Styles} \begin{itemize} \item \texttt{\textbackslash grid[\textit{color}]\{\textit{width}\}\{\textit{height}\}}: 5mm × 5mm grid. \item \texttt{\textbackslash customgrid[\textit{color}][\textit{dx}][\textit{dy}]\{\textit{width}\}\{\textit{height}\}}: custom grid. \item \texttt{\textbackslash frenchgrid[\textit{minor}][\textit{major}]\{\textit{width}\}\{\textit{height}\}}: Seyès-style ruled paper. \item \texttt{\textbackslash gridfill} / \texttt{\textbackslash gridfill*}: fills page with a grid. \item \texttt{\textbackslash notebook}, \texttt{\textbackslash nbminorgrid}, \texttt{\textbackslash nbmajorgrid}: page background styles. \end{itemize} \begin{sidebyside}[righthand width=.5\linewidth] \begin{codeside}[numbers=none]{latex} \grid[blue!40]{4cm}{2cm} \end{codeside} \tcblower \centering \grid[blue!40]{4cm}{2cm} \end{sidebyside} \begin{sidebyside}[righthand width=.5\linewidth] \begin{codeside}[numbers=none]{latex} \frenchgrid{4cm}{2cm} \end{codeside} \tcblower \centering \frenchgrid{4cm}{2cm} \end{sidebyside} \subsection{Simple Boxes} \begin{itemize} \item \texttt{neobox}: box with frame. \item \texttt{neobox*}: box without visible frame. \item \texttt{\textbackslash neocolorbox[\textit{color}]\{\textit{content}\}}: simple colored box. \item \texttt{\textbackslash inlinebox[\textit{frame}][\textit{bg}][\textit{text}]\{\textit{content}\}}: customizable inline box. \end{itemize} \begin{sidebyside} \begin{codeside}[numbers=none]{latex} \begin{neobox}[title=My Box] Box content with frame. \end{neobox} \begin{neobox*} Content without visible frame. \end{neobox*} \end{codeside} \tcblower \begin{neobox}[title=My Box] Box content with frame. \end{neobox} \begin{neobox*} Content without visible frame. \end{neobox*} \end{sidebyside} \subsection{Logos and Special Symbols} \begin{itemize} \item \texttt{\textbackslash AILogo[\textit{options}]}: AI logo (chip with neural network). \item \texttt{\textbackslash NoAILogo[\textit{options}]}: ``No AI'' logo (crossed-out chip). \item \texttt{\textbackslash documentcolor\{\textit{color}\}}: changes the document text color. \end{itemize} \begin{sidebyside}[righthand width=.4\linewidth] \begin{codeside}[numbers=none]{latex} \AILogo \quad \NoAILogo \end{codeside} \tcblower \centering \AILogo \qquad \NoAILogo \end{sidebyside} \section{Grading and Correction} \subsection{Grading Tools} \begin{itemize} \item \texttt{\textbackslash gradingstrip[\textit{total}]}: grading banner with score and comments. \item \texttt{\textbackslash mrk[*][\textit{comment}]\{\textit{pts}\}}: points in the margin. \end{itemize} \begin{sidebyside}[righthand width=.65\linewidth] \begin{codeside}[numbers=none]{latex} \gradingstrip[20] \end{codeside} \tcblower \gradingstrip[20] \end{sidebyside} \subsection{Answer Spaces} \begin{itemize} \item \texttt{\textbackslash answerfield[\textit{width}]\{\textit{lines}\}}: shaded answer area. \item \texttt{\textbackslash answerframe[\textit{width}]\{\textit{lines}\}}: framed answer area. \item \texttt{\textbackslash vardots[\textit{length}]}: fill-in-the-blank line. \item \texttt{\textbackslash lines[\textit{char}][\textit{spacing}]\{\textit{n}\}}: draws \textit{n} horizontal lines. \item \texttt{\textbackslash emptybox\{\textit{width}\}\{\textit{height}\}}: blank box for free response. \end{itemize} \begin{sidebyside}[righthand width=.5\linewidth] \begin{codeside}[numbers=none]{latex} Answer: \answerfield[5cm]{1} \end{codeside} \tcblower Answer: \answerfield[5cm]{1} \end{sidebyside} \begin{sidebyside}[righthand width=.5\linewidth] \begin{codeside}[numbers=none]{latex} Show your work: \answerframe{3} \end{codeside} \tcblower Show your work: \answerframe{3} \end{sidebyside} \begin{sidebyside}[righthand width=.5\linewidth] \begin{codeside}[numbers=none]{latex} Name: \vardots[4cm] Date: \vardots[3cm] \end{codeside} \tcblower Name: \vardots[4cm] Date: \vardots[3cm] \end{sidebyside} \begin{sidebyside}[righthand width=.5\linewidth] \begin{codeside}[numbers=none]{latex} \lines{3} \end{codeside} \tcblower \lines{3} \end{sidebyside} \subsection{Markers and Symbols} \begin{multicols}{2} \begin{itemize} \item \texttt{\textbackslash cmark}: \cmark{} (green). \item \texttt{\textbackslash xmark}: \xmark{} (red). \item \texttt{\textbackslash unchecked}: $\square$. \item \texttt{\textbackslash done}: $\rlap{$\square$}{\raisebox{1pt}{\large\hspace{1pt}\cmark}\hspace{-2.5pt}}$. \item \texttt{\textbackslash wontfix}: $\rlap{$\square$}{\large\hspace{1pt}\color{red}\boldsymbol{\times}}$. \end{itemize} \end{multicols} \begin{sidebyside}[righthand width=.4\linewidth] \begin{codeside}[numbers=none]{latex} \begin{itemize} \unchecked Task to do \done Task completed \wontfix Task canceled \end{itemize} \end{codeside} \tcblower \begin{itemize} \unchecked Task to do \done Task completed \wontfix Task canceled \end{itemize} \end{sidebyside} \subsection{Standards-Based Grading} \texttt{\textbackslash competencies\{\textit{Skill1}\textbackslash\textbackslash \textit{Skill2}...\}}: rubric table with 4 proficiency levels. \begin{sidebyside}[righthand width=.55\linewidth] \begin{codeside}[numbers=none]{latex} \competencies{ Compute derivatives \\ Solve equations \\ Write proofs } \end{codeside} \tcblower \competencies{ Compute derivatives \\ Solve equations \\ Write proofs } \end{sidebyside} \section{Math Commands} \subsection{Highlighting} \begin{itemize} \item \texttt{\textbackslash mhl[\textit{color}]\{\textit{expr}\}}: highlights the expression. \item \texttt{\textbackslash mc[\textit{color}]\{\textit{expr}\}}: colors the expression. \item \texttt{\textbackslash mathbox<\textit{bg}>[\textit{border}]\{\textit{content}\}}: boxes math content. \end{itemize} \begin{sidebyside}[righthand width=.35\linewidth] \begin{codeside}[numbers=none]{latex} $f(x) = \mhl[yellow!30]{x^2} + \mc[blue]{3x} - 1$ \end{codeside} \tcblower $f(x) = \mhl[yellow!30]{x^2} + \mc[blue]{3x} - 1$ \end{sidebyside} \begin{sidebyside}[righthand width=.35\linewidth] \begin{codeside}[numbers=none]{latex} The formula $\mathbox{E = mc^2}$ is famous. With colors: $\mathbox[red]{a^2+b^2=c^2}$ \end{codeside} \tcblower The formula $\mathbox{E = mc^2}$ is famous. With colors: $\mathbox[red]{a^2+b^2=c^2}$ \end{sidebyside} \subsection{APMEP Support} Commands available with the \texttt{apmep} option: \begin{itemize} \item Vectors: \texttt{\textbackslash vectt\{AB\}}. \item Coordinate systems: \texttt{\textbackslash Oij}, \texttt{\textbackslash Oijk}, \texttt{\textbackslash Ouv}. \item Symbols: \texttt{\textbackslash euro}, \texttt{\textbackslash cg}, \texttt{\textbackslash cd}, \texttt{\textbackslash pg}, \texttt{\textbackslash pp}, \texttt{\textbackslash barre\{x\}}. \end{itemize} \begin{sidebyside}[righthand width=.4\linewidth] \begin{codeside}[numbers=none]{latex} The vector $\vectt{AB}$ in the frame \Oij. We have $x \pg 0$ and $y \pp 5$. The mean is $\barre{x} = 12$. \end{codeside} \tcblower The vector $\vectt{AB}$ in the frame \Oij. We have $x \pg 0$ and $y \pp 5$. The mean is $\barre{x} = 12$. \end{sidebyside} \section{Special Tools} \subsection{Trees and Graphs} \begin{itemize} \item \textbf{neotree}: tree environment (built on \texttt{forest}). The \texttt{w=\textit{val}} option adds edge weights. \item \texttt{\textbackslash neograph}: graph command (\texttt{lualatex} required). \end{itemize} \begin{sidebyside}[righthand width=.4\linewidth] \begin{codeside}[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{codeside} \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} \subsection{Math Grid (\texttt{mathgrid})} Environment for aligning equation blocks in a grid. \begin{itemize} \item \texttt{\textbackslash begin\{mathgrid\}\{\textit{n}\}}: \textit{n}-column grid. \item \texttt{\textbackslash neoline}: new row. \item \texttt{\textbackslash neocol[\textit{span}]\{\textit{content}\}}: column with \texttt{align*}. \end{itemize} \begin{sidebyside}[righthand width=.5\linewidth] \begin{codeside}[numbers=none]{latex} \begin{mathgrid}{2} \neoline \neocol{ A &= 2 + 3 \\ A &= 5 } \neocol{ B &= 4 \times 2 \\ B &= 8 } \end{mathgrid} \end{codeside} \tcblower \begin{mathgrid}{2} \neoline \neocol{ A &= 2 + 3 \\ A &= 5 } \neocol{ B &= 4 \times 2 \\ B &= 8 } \end{mathgrid} \end{sidebyside} \section{Margin Notes} Enabled by \texttt{noteswidth=\textit{dim}}. \begin{itemize} \item \texttt{\textbackslash tdnote[\textit{options}]\{\textit{text}\}}: note in the margin. \item \texttt{\textbackslash boxnote[\textit{label}]\{\textit{text}\}} + \texttt{\textbackslash tdmark[\textit{label}]}: anchored note. \end{itemize} \begin{code}{latex} % In the preamble or class options: \documentclass[noteswidth=2.5cm]{neoschool} % In the document: This is important\tdnote{Remember this!}. \boxnote[hyp]{Key assumption} \begin{theorem} \tdmark[hyp] If $f$ is continuous on $[a,b]$... \end{theorem} \end{code} \end{document}