\documentclass[
    english,
    compacttoc,
    twocoltoc,
    apmep,
    vspacing=0.85,
    faketext,
    mainface=Zilla Slab,
    sansface=Work Sans,
    sansfaceoptions={BoldFont = {Work Sans SemiBold}},
    monoface=iAWriterDuoV.ttf,
    monofacescale=0.85,
    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.3.12)}
\author{Razik Ikhlef \normalfont \textemdash{} \href{https://apps.edulatex.xyz}{https://apps.edulatex.xyz} \textemdash{} \href{mailto:razik.ikhlef@csilyon.fr}{razik.ikhlef@csilyon.fr}}
\date{August 20, 2026}

\begin{document}

\maketitle

\begin{abstract}
  The \texttt{neoschool} class provides secondary school teachers with
  a comprehensive toolkit for creating educational documents (tests,
  course handouts, exercise sheets with answer keys, and more).
  To accommodate a wide range of needs, it offers fifty-nine built-in color themes, sixteen preconfigured profiles,
  extensive class options for layout and typography,
  specialized environments, dedicated commands, and various
  preformatted header styles for each type of document.
  It bundles dozens of commonly used LaTeX packages,
  which significantly reduces preamble clutter and helps avoid compatibility issues.
  Multilingual support is included for English, French, and German.
\end{abstract}

\tableofcontents

\section{Preconfigured profiles}

The \textbf{profile}=\texttt{name} option automatically sets up a coherent group of options tailored to a specific type of document.
Each profile defines a theme, title layout, box styles, and visual settings suited to a particular use case.

\begin{itemize}
    \item \textbf{academic}: well suited for lectures and course handouts.
    Theme \texttt{royal}, title layout \texttt{band}, theorem style \texttt{block}, exercise style \texttt{bar}, admonition style \texttt{modern}, code style \texttt{plain}, boxshape \texttt{soft}.

    \item \textbf{minimalist}: clean, pared-down style.
    Theme \texttt{ink}, title layout \texttt{stream}, theorem style \texttt{plain}, exercise style \texttt{line-outline}, admonition style \texttt{classic}, code style \texttt{lines}, boxshape \texttt{sharp}.

    \item \textbf{material}: inspired by Material Design.
    Theme \texttt{azure}, title layout \texttt{notion}, theorem style \texttt{tile}, exercise style \texttt{capsule}, admonition style \texttt{material}, code style \texttt{shadow}, boxshape \texttt{rounded}.

    \item \textbf{coder}: for technical and computer science documents.
    Theme \texttt{marine}, title layout \texttt{blocks}, theorem style \texttt{bar}, exercise style \texttt{shell}, admonition style \texttt{professional}, code style \texttt{frame}, boxshape \texttt{chamfer}.

    \item \textbf{memo}: for review sheets and compact summaries.
    Theme \texttt{lagoon}, title layout \texttt{bristol}, theorem style \texttt{sticker}, exercise style \texttt{badge}, admonition style \texttt{soft}, code style \texttt{plain}, boxshape \texttt{chat}.

    \item \textbf{exam}: for tests and proctored assessments.
    No theme enforced (uses the default or whatever the user specifies), title layout \texttt{eval}, theorem style \texttt{plain}, exercise style \texttt{inline}, admonition style \texttt{classic}, code style \texttt{plain}, boxshape \texttt{sharp}. Enables \texttt{print} mode (black and white).

    \item \textbf{organic}: natural look with soft shapes.
    Theme \texttt{forest}, title layout \texttt{flow}, theorem style \texttt{curve}, exercise style \texttt{capsule}, admonition style \texttt{soft}, code style \texttt{plain}, boxshape \texttt{leaf}.

    \item \textbf{origami}: geometric style with creases.
    Theme \texttt{crimson}, title layout \texttt{geometric}, theorem style \texttt{fold}, exercise style \texttt{rule}, admonition style \texttt{classic}, code style \texttt{lines}, boxshape \texttt{bevel}.

    \item \textbf{blueprint}: technical drafting style.
    Theme \texttt{frost}, title layout \texttt{grid}, theorem style \texttt{frame}, exercise style \texttt{counter-inline}, admonition style \texttt{classic}, code style \texttt{lines}, boxshape \texttt{sharp}.

    \item \textbf{swiss}: inspired by Swiss graphic design.
    Theme \texttt{crimson}, title layout \texttt{brush}, theorem style \texttt{bar}, exercise style \texttt{capsule-outline}, admonition style \texttt{modern}, code style \texttt{lines}, boxshape \texttt{southeast}.

    \item \textbf{creative}: for playful, colorful handouts.
    Theme \texttt{neon}, title layout \texttt{memphis}, theorem style \texttt{pastel}, exercise style \texttt{badge}, admonition style \texttt{material}, code style \texttt{shadow}, boxshape \texttt{sharpish}.

    \item \textbf{focus}: understated style with a side accent.
    Theme \texttt{rhodium}, title layout \texttt{spine}, theorem style \texttt{tag}, exercise style \texttt{capsule}, admonition style \texttt{classic}, code style \texttt{frame}, boxshape \texttt{west}.

    \item \textbf{elegant}: refined and stripped-back.
    Theme \texttt{velours}, title layout \texttt{minimal}, theorem style \texttt{bar}, exercise style \texttt{line-circle}, admonition style \texttt{classic}, code style \texttt{line}, boxshape \texttt{sharp}.

    \item \textbf{slate}: sober style with a side banner.
    Theme \texttt{slate}, title layout \texttt{band}, theorem style \texttt{tile}, exercise style \texttt{bar}, admonition style \texttt{professional}, code style \texttt{lines}, boxshape \texttt{sharp}.

    \item \textbf{maker}: technical style for DIY projects.
    Theme \texttt{terra}, title layout \texttt{tech}, theorem style \texttt{sticker}, exercise style \texttt{rule}, admonition style \texttt{classic}, code style \texttt{lines}, boxshape \texttt{sharp}.

    \item \textbf{zen}: calm, harmonious style.
    Theme \texttt{moss}, title layout \texttt{wave}, theorem style \texttt{block}, exercise style \texttt{line-outline}, admonition style \texttt{soft}, code style \texttt{shadow}, boxshape \texttt{sharpish}. Enables \texttt{unicolor} mode.
\end{itemize}

\begin{code}{latex}
% Using a profile
\documentclass[profile=academic]{neoschool}

% Customizing a profile
\documentclass[profile=exam, theme=midnight]{neoschool}
\end{code}

\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{bookmark}
    \item \texttt{calc}
    \item \texttt{changepage}
    \item \texttt{colortbl}
    \item \texttt{cuted}
    \item \texttt{enumitem}
    \item \texttt{environ}
    \item \texttt{etoolbox}
    \item \texttt{fontawesome5}
    \item \texttt{forest}
    \item \texttt{iftex}
    \item \texttt{kvoptions}
    \item \texttt{lastpage}
    \item \texttt{marginnote}
    \item \texttt{mathtools}
    \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{tikz}
    \item \texttt{tikzpagenodes}
    \item \texttt{tikzsymbols}
    \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 loads \texttt{fontenc} (with the \texttt{T1} option), \texttt{inputenc} (with the \texttt{utf8} option), \texttt{newpxtext}, and \texttt{newpxmath}.
When compiling with \texttt{lualatex}, it makes \texttt{fontspec}, \texttt{luacas}, \texttt{lua-ul}, and \texttt{luacolor} available, and applies the \texttt{TeX Gyre Pagella} and \texttt{TeX Gyre Heros} fonts 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{nomath}: disables the mathematics bundle that is loaded by default (\texttt{annotate-equations}, \texttt{bm}, \texttt{cancel}, \texttt{esvect}, \texttt{mathrsfs}, \texttt{ncccomma}, \texttt{numprint}, \texttt{tdsfrmath}, \texttt{tkz-euclide}, \texttt{tkz-tab}, \texttt{witharrows}, and \texttt{xlop}). Use this option for documents that do not require advanced mathematical typesetting, to reduce compilation time.
    \item \textbf{notes}/\textbf{leftnotes}/\textbf{rightnotes}: load \texttt{todonotes}.
    \item \textbf{apmep}: loads a bundle of packages for compiling APMEP past exam papers, including \texttt{esvect}, \texttt{fourier-orns}, \texttt{numprint}, \texttt{pstricks} and its ecosystem, \texttt{tabularx}, \texttt{textcomp}, 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}: enables the translations and conventions for each language.
    These options affect environment labels, typographic rules, and math conventions. The \texttt{french} option also loads \texttt{frenchmath}.
    \item \textbf{nofrenchmath}: with the \texttt{french} option, skips the loading of \texttt{frenchmath}.
    \item \textbf{nofrenchlist}: disables the French list style (switches dashes back to bullets).
    \item \textbf{frenchlistaspar}: treats lists as paragraphs in French.
\end{itemize}

\subsection{Global appearance}

\subsubsection{Built-in themes}

The \textbf{theme}=\texttt{name} option sets the document's color theme.
There are 59 themes available.

\begin{multicols}{4}
  \begin{itemize}[label={}]
    \item \texttt{amethyst}
    \item \texttt{arctic}
    \item \texttt{athenee}
    \item \texttt{aurora}
    \item \texttt{axiom} (default)
    \item \texttt{azure}
    \item \texttt{bordeaux}
    \item \texttt{coffee}
    \item \texttt{crimson}
    \item \texttt{cyprus}
    \item \texttt{dusk}
    \item \texttt{eton}
    \item \texttt{excellence}
    \item \texttt{forest}
    \item \texttt{frost}
    \item \texttt{garden}
    \item \texttt{graphite}
    \item \texttt{harvard}
    \item \texttt{hearth}
    \item \texttt{heritage}
    \item \texttt{ink}
    \item \texttt{ivy}
    \item \texttt{jewel}
    \item \texttt{lagoon}
    \item \texttt{library}
    \item \texttt{mahogany}
    \item \texttt{manor}
    \item \texttt{marine}
    \item \texttt{midnight}
    \item \texttt{mineral}
    \item \texttt{mist}
    \item \texttt{moss}
    \item \texttt{mulberry}
    \item \texttt{neon}
    \item \texttt{nocturne}
    \item \texttt{oceanic}
    \item \texttt{opera}
    \item \texttt{orchid}
    \item \texttt{peony}
    \item \texttt{prestige}
    \item \texttt{renaissance}
    \item \texttt{retro}
    \item \texttt{rhodium}
    \item \texttt{royal}
    \item \texttt{rubis}
    \item \texttt{saffron}
    \item \texttt{sage}
    \item \texttt{sequoia}
    \item \texttt{slate}
    \item \texttt{studio}
    \item \texttt{study}
    \item \texttt{taiga}
    \item \texttt{terra}
    \item \texttt{trinity}
    \item \texttt{tundra}
    \item \texttt{velours}
    \item \texttt{velvet}
    \item \texttt{vivid}
    \item \texttt{woodland}
  \end{itemize}
\end{multicols}

Each theme defines four colors: a primary color (titles, sections, definitions), a secondary color (theorems), a tertiary color (exercises), and a structural color (neutral elements such as remarks and inline code).

\begin{code}{latex}
\documentclass[theme=oceanic]{neoschool}
\end{code}

\subsubsection{Color modes}

\begin{itemize}
    \item \textbf{print}: black and white, for printing.
    \item \textbf{unicolor}: uses the primary color for every environment.
    \item \textbf{darktheme}: enables a dark theme with a dark background and light text.
\end{itemize}

\subsubsection{Color customization}

\begin{itemize}
    \item \textbf{globalcolor}=\texttt{color}: body text color (default: \texttt{black}).
    \item \textbf{titlecolor}=\texttt{color}: main title color.
    \item \textbf{titlehexcolor}=\texttt{RRGGBB}: main title color in hexadecimal.
    \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}: toggles theorem frames.
    \item \textbf{thmnoback} / \textbf{thmback}: toggles theorem backgrounds.
    \item \textbf{codenoframe} / \textbf{codeframe}: toggles code block frames.
    \item \textbf{codenoback} / \textbf{codeback}: toggles code block backgrounds.
    \item \textbf{codenonum} / \textbf{codenum}: toggles line numbering in code blocks.
    \item \textbf{exnoback} / \textbf{exback}: toggles exercise backgrounds.
    \item \textbf{noback} / \textbf{back}: toggles all backgrounds.
    \item \textbf{noframe} / \textbf{frame}: toggles 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: 8).
    \item \textbf{thmboxopacity}=\texttt{n}: theorem background opacity (default: 8).
    \item \textbf{exboxopacity}=\texttt{n}: exercise background opacity (default: 0).
    \item \textbf{codeboxopacity}=\texttt{n}: code block background opacity (default: 8).
    \item \textbf{adboxopacity}=\texttt{n}: admonition background opacity (default: 8).
    \item \textbf{mathboxopacity}=\texttt{n}: math highlight background opacity (default: 15).
\end{itemize}

\paragraph{Frame opacity:}
\begin{itemize}
    \item \textbf{frameopacity}=\texttt{n}: global frame opacity (0--100).
    \item \textbf{thmframeopacity}=\texttt{n}: theorem frame opacity (default: 90).
    \item \textbf{exframeopacity}=\texttt{n}: exercise frame opacity (default: 95).
    \item \textbf{codeframeopacity}=\texttt{n}: code block frame opacity (default: 90).
    \item \textbf{adframeopacity}=\texttt{n}: admonition frame opacity (default: 90).
    \item \textbf{sideframeopacity}=\texttt{n}: sidebyside frame opacity (default: 90).
\end{itemize}

\paragraph{Border thickness:}
\begin{itemize}
    \item \textbf{border}=\texttt{dim}: global border thickness.
    \item \textbf{thmborder}=\texttt{dim}: theorem border thickness (default: 0.8pt).
    \item \textbf{exborder}=\texttt{dim}: exercise border thickness (default: 0.8pt).
    \item \textbf{codeborder}=\texttt{dim}: code block border thickness (default: 0.8pt).
    \item \textbf{adborder}=\texttt{dim}: admonition border thickness (default: 0.8pt).
\end{itemize}

\paragraph{Internal padding:}
\begin{itemize}
    \item \textbf{padding}=\texttt{value}: adjusts internal padding of boxes.
    \textit{Options:} \texttt{tight}, \texttt{loose}, \texttt{normal} (default).
\end{itemize}

\paragraph{Corner radii:}
\begin{itemize}
    \item \textbf{boxarc}=\texttt{dim}: global corner radius applied to every box whose specific radius is not set.
    \item \textbf{thmboxarc}=\texttt{dim}: corner radius for theorems (default: \texttt{3pt}).
    \item \textbf{exboxarc}=\texttt{dim}: corner radius for exercises (default: \texttt{3pt}).
    \item \textbf{codeboxarc}=\texttt{dim}: corner radius for code blocks (default: \texttt{3pt}).
    \item \textbf{sideboxarc}=\texttt{dim}: corner radius for \texttt{sidebyside} (default: \texttt{3pt}).
    \item \textbf{pseudoboxarc}=\texttt{dim}: corner radius for \texttt{pseudocode} (default: \texttt{3pt}).
    \item \textbf{sectionarc}=\texttt{dim}: corner radius for section headings (\texttt{highlighted} or \texttt{shaded} style, default: \texttt{0pt}).
\end{itemize}

\paragraph{Box shapes:}

The \textbf{boxshape}=\texttt{shape} option sets the overall corner shape of boxes.
Element-specific overrides are available: \textbf{thmboxshape}, \textbf{exboxshape}, \textbf{codeboxshape}, \textbf{adboxshape}, \textbf{neoboxshape}, \textbf{sideboxshape}.
Two additional options let you give the theorem title label a different shape than the main box:
\begin{itemize}
    \item \textbf{thmtitleshape}=\texttt{shape}: shape of the title label (inherits from \texttt{thmboxshape} if not set, default: \texttt{rounded}).
    \item \textbf{thmtitlearc}=\texttt{dim}: corner radius of the title label (inherits from \texttt{thmboxarc} if not set, default: \texttt{3pt}).
\end{itemize}

Available shapes:
\begin{itemize}
    \item \texttt{rounded} (default): standard rounded corners.
    \item \texttt{soft}: slightly rounded corners.
    \item \texttt{sharp}: square corners.
    \item \texttt{sharpish}: very slightly rounded corners.
    \item \texttt{curve}: pronounced curved corners.
    \item \texttt{bevel}: chamfered corners.
    \item \texttt{chamfer}: angular beveled corners.
    \item \texttt{chat}: speech-bubble style.
    \item \texttt{leaf}: leaf-shaped rounded corners.
    \item \texttt{northeast}, \texttt{northwest}, \texttt{southeast}, \texttt{southwest}: rounding on a single corner.
    \item \texttt{north}, \texttt{south}, \texttt{east}, \texttt{west}: rounding on one side.
    \item \texttt{downhill}, \texttt{uphill}: diagonally rounded corners.
\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 the name and custom title.
    \item \textbf{adterminator}=\texttt{text}: terminator for admonitions (default: \texttt{.}).
    \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{inlinecodebox}: renders inline code (\texttt{\textbackslash texttt}) in a framed, colored box.
    \item \textbf{inlineadmonition} (default): admonition title and body on the same line.
    \item \textbf{blockadmonition}: forces admonition body 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-serif font.
    \item \textbf{sansfacescale}=\texttt{factor}: scale factor (default: 1.0).
    \item \textbf{monoface}=\texttt{Font}: monospaced (code) font.
    \item \textbf{monofaceoptions}=\texttt{options}: options for the monospaced 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}: full font family.
    \item \textbf{facefamilyoptions}=\texttt{options}: options for the family.
    \item \textbf{sfbody}: uses the sans-serif font for the body text.
    \item \textbf{sfall}: uses the sans-serif font for the entire document.
    \item \textbf{mathastext}: uses the text font for math.
    \item \textbf{semibold}: enables automatic detection of the SemiBold variant
        of the configured fonts (used by \verb|\sbseries| or \verb|\textsb|).
        Enable it only when the chosen font actually ships a SemiBold weight.
        Disabled by default to avoid the luaotfload ``Reload initiated'' message
        on fonts without a SemiBold variant; in that case \verb|\sbseries|
        falls back to \verb|\bfseries|.
\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{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}: default \texttt{upshape}.
    \item \textbf{titlesize}=\texttt{size}: title size (default: \texttt{LargeLARGEminus}).
    \item \textbf{titlealign}=\texttt{align}: alignment (default: \texttt{center}).
    \item \textbf{titledecor}=\texttt{decor}: decoration below the title (default: \texttt{none}).
    \item[] Options: \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[] Options: \texttt{circle}, \texttt{box}, \texttt{dash}, \texttt{plain}.
    \item \textbf{sectiontextstyle}=\texttt{style}: text case (default: \texttt{sc}).
    \item[] Options: \texttt{sc}, \texttt{upper}, \texttt{lower}.
    \item \textbf{sectionstyle}=\texttt{style}: visual style (default: \texttt{normal}).
    \item[] Options: \texttt{normal}, \texttt{ornaments}, \texttt{underline}, \texttt{highlighted}, \texttt{shaded}, \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{headstyle}.
\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{parskip}=\texttt{value}: inter-paragraph spacing (default: \texttt{half}).
    Accepts KOMA-Script values: \texttt{false}, \texttt{true}/\texttt{full}, \texttt{half},
    with optional suffixes \texttt{-}, \texttt{+}, \texttt{*} to control end-of-line fill.
    Do not load the \texttt{parskip} package alongside.
    \item \textbf{listparskip}: propagates \texttt{parskip} spacing inside lists
    (\texttt{itemize}, \texttt{enumerate}, \texttt{description}) for typographic consistency.
    Enabled by default. Use \textbf{nolistparskip} to keep lists compact regardless of
    \texttt{parskip}.
    \item \textbf{vspacing}=\texttt{factor}: vertical compression/expansion factor (default: \texttt{1.0}).
    Accepts values between 0.25 and 2.0.
\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} page style).
    \item \textbf{pageonlyfooter}: shows only the centered page number.
    \item \textbf{headerules}=\texttt{style}: rules (default: \texttt{none}).
    Options: \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 the table of contents using the primary color only.
    \item \textbf{twocoltoc}: displays the table of contents in two columns.
\end{itemize}

\subsubsection{Output modes}

These options let you print multiple logical pages onto 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 the grading scale (default: 20).
\end{itemize}

\section{Document styles}

\subsection{Title layout (\texttt{titlelayout})}

The \textbf{titlelayout}=\texttt{style} option controls the appearance of the first page and the title.

\subsubsection{Exam styles}

\begin{itemize}
    \item \textbf{exam}: full layout with fields for name, class, date, and a grading strip.
    \item \textbf{shortexam}: compact exam layout.
    \item \textbf{mockexam}: layout designed for mock exams.
\end{itemize}

\subsubsection{Assessment styles}

\begin{itemize}
    \item \textbf{eval}: standard layout, information in the corners.
    \item \textbf{evalicons}: \texttt{eval} with customizable icons.
    \item \textbf{evalgrade}: \texttt{eval} with a grading strip.
    \item \textbf{evaliconsgrade}: combines \texttt{evalicons} and \texttt{evalgrade}.
    \item \textbf{shorteval}: compact single-line layout.
\end{itemize}

\subsubsection{Design styles}

\begin{multicols}{4}
  \begin{itemize}
    \item \textbf{band}
    \item \textbf{banner}
    \item \textbf{bar}
    \item \textbf{bauhaus}
    \item \textbf{blocks}
    \item \textbf{book}
    \item \textbf{bristol}
    \item \textbf{brush}
    \item \textbf{bubbles}
    \item \textbf{champagne}
    \item \textbf{circles}
    \item \textbf{cloud}
    \item \textbf{confetti}
    \item \textbf{flow}
    \item \textbf{geometric}
    \item \textbf{grid}
    \item \textbf{magazine}
    \item \textbf{memphis}
    \item \textbf{notion}
    \item \textbf{particles}
    \item \textbf{simplenotion}
    \item \textbf{spine}
    \item \textbf{stream}
    \item \textbf{tech}
    \item \textbf{wave}
  \end{itemize}
\end{multicols}

\subsubsection{Classic styles}

\begin{itemize}
    \item \textbf{default}: centered standard title.
    \item \textbf{titlebox}: title in a colored banner at the top of the page.
    \item \textbf{tighttitle}: compact title without a box.
    \item \textbf{onlytitle}: displays only the centered title.
    \item \textbf{shorttitle}: compact centered title on a single line.
    \item \textbf{shortlesson}: compact layout for lesson handouts.
    \item \textbf{minimal}: stripped-down minimalist style.
    \item \textbf{frame}: framed title.
\end{itemize}

\begin{code}{latex}
\documentclass[titlelayout=exam]{neoschool}
\neoheader{
  type = Unit Test #1,
  school = Springfield High School,
  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 the information used by the \texttt{exam}, \texttt{eval}, \texttt{mockexam}, \texttt{shortlesson}, and \texttt{fullheader} styles.

\begin{code}{latex}
\neoheader{
  type = {Pop Quiz},
  school = {Turing Academy},
  academy = {District 12},
  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 look of theorem-like environments.
Options: \texttt{bar}, \texttt{block}, \texttt{tile}, \texttt{fold}, \texttt{plain}, \texttt{frame}, \texttt{curve}, \texttt{sticker}, \texttt{pastel}, \texttt{tag} (default), \texttt{raw}.

\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{properties} (ref: \texttt{prop})
    \item \textbf{definition} (ref: \texttt{def})
    \item \textbf{definitions} (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}: resets counters at each section.
    \item \textbf{sharedthmcounter}: a single counter shared across all environments.
    \item \textbf{thmgroupcounter}: shared counter for theorem, lemma, corollary, proposition, and property.
    \item \textbf{sharedexcounter}: shares the 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 tag 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 style.
\end{itemize}

\subsubsection{Exercise styles (\texttt{exstyle})}

The \textbf{exstyle}=\texttt{style} option sets the appearance of exercises.

\textit{Box styles:} \texttt{block}, \texttt{capsule} (default), \texttt{capsule-outline}, \texttt{tile}, \texttt{fold}, \texttt{plain}, \texttt{frame}, \texttt{curve}, \texttt{sticker}, \texttt{pastel}, \texttt{card}, \texttt{bar}.

\textit{Badge styles:} \texttt{badge}, \texttt{badge-outline}, \texttt{digit}, \texttt{digit-outline}, \texttt{digit-inline}, \texttt{digit-outline-inline}, \texttt{counter}, \texttt{counter-inline}, \texttt{counter-outline}, \texttt{counter-outline-inline}.

\textit{Line styles:} \texttt{line}, \texttt{line-outline}, \texttt{line-circle}, \texttt{line-circle-outline}.

\textit{Special styles:} \texttt{inline}, \texttt{shell}, \texttt{section}, \texttt{subsection}, \texttt{item}, \texttt{rule}, \texttt{separator}.

\subsubsection{Global options}

\begin{itemize}
    \item \textbf{exerciseicons}: enables icon display.
    \item \textbf{answers}: shows solutions after each exercise.
    \item \textbf{answersonly}: shows solutions only.
    \item \textbf{shuffle}: randomly shuffles multiple-choice answers.
    \item \textbf{solstyle}=\texttt{style}: solution style (default: \texttt{inline}).
    Options: \texttt{inline}, \texttt{dots}, \texttt{lines}, \texttt{box}.
    \item \textbf{solrotate}: prints solutions upside down (180\textdegree{} rotation).
\end{itemize}

\subsubsection{Exercise with solution}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{exercise}[
  points=4,
  level=2,
  subtitle={Finding a derivative}
]
Find the derivative of
$f(x) = x^3 - 2x + 1$.
\end{exercise}

\begin{solution}
Applying the differentiation rules:
$f'(x) = 3x^2 - 2$.
\end{solution}
\end{codeside}
\tcblower
\begin{exercise}[
  points=4,
  level=2,
  subtitle={Finding a derivative}
]
Find the derivative of $f(x) = x^3 - 2x + 1$.
\end{exercise}
\xsimsetup{solution/print=true}
\begin{solution}
Applying the differentiation rules: $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 multiple choice on \textit{n} columns.
    \texttt{\textbackslash choice} for an answer, \texttt{\textbackslash choice[\textbackslash correct]} for the correct one.
    \item \textbf{checkboxes}\texttt{(\textit{n})}: multiple-answer checkboxes.
    \texttt{\textbackslash checkbox} for an answer, \texttt{\textbackslash checkbox[\textbackslash correct*]} for a correct one.
\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 the \texttt{listings} package.
    \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 override.
\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}[numbers=none]{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 appearance of code boxes.
Options: \texttt{plain}, \texttt{line}, \texttt{lines}, \texttt{bar}, \texttt{frame}, \texttt{shadow} (default).

\subsection{Code options}

\begin{itemize}
    \item \textbf{codewidth}=\texttt{factor}: 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 syntax 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}. When the French language option is active, keywords are automatically translated.

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 boxes with icons designed to draw attention to specific content.

\subsection{Available environments}

\begin{itemize}
    \item \textbf{note}: general remarks (\faEdit).
    \item \textbf{info}: supplementary information (\faInfoCircle).
    \item \textbf{warning}: warnings (\faExclamationTriangle).
    \item \textbf{important}: key points (\faExclamationCircle).
    \item \textbf{tip}: tips and tricks (\faLightbulb).
    \item \textbf{reminder}: things to remember (\faBookmark).
    \item \textbf{summary}: summaries (\faClipboardList).
    \item \textbf{toolbox}: prerequisites and materials (\faTools).
    \item \textbf{method}: step-by-step methods (\faCogs).
    \item \textbf{activity}: hands-on activities (\faPuzzlePiece).
\end{itemize}

\subsection{Admonition styles}

The \textbf{adstyle}=\texttt{style} option sets the global appearance of admonitions.
Options: \texttt{modern}, \texttt{material}, \texttt{soft} (default), \texttt{classic}, \texttt{professional}, \texttt{minimal}.

\subsection{Admonition options}

Each environment accepts key-value options:
\begin{itemize}
    \item \textbf{title}=\texttt{text}: custom title.
    \item \textbf{subtitle}=\texttt{text}: subtitle.
    \item \textbf{icon}=\texttt{\textbackslash faIcon}: custom icon.
    \item \textbf{style}=\texttt{name}: local style (overrides the global style).
\end{itemize}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{warning}[title=Watch out, icon=\faSkull]
  Don't divide by zero!
\end{warning}
\begin{tip}
  Try factoring first.
\end{tip}
\end{codeside}
\tcblower
\begin{warning}[title=Watch out, icon=\faSkull]
  Don't divide by zero!
\end{warning}
\begin{tip}
  Try factoring first.
\end{tip}
\end{sidebyside}

\begin{sidebyside}
\begin{codeside}[numbers=none]{latex}
\begin{method}[title=Solving an equation]
  1. Isolate the variable.
  2. Simplify.
\end{method}
\begin{activity}[subtitle=Group work]
  Construct an equilateral triangle.
\end{activity}
\end{codeside}
\tcblower
\begin{method}[title=Solving an equation]
  1. Isolate the variable.
  2. Simplify.
\end{method}
\begin{activity}[subtitle=Group work]
  Construct an equilateral triangle.
\end{activity}
\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}\}}: splits the 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 illustrate the layout.
}{%
  \textbf{Right column (55\%)}

  Second paragraph with additional content.
}
\end{sidebyside}

\subsection{The \texttt{sidebyside} environment}

Creates two \texttt{tcolorbox} boxes side by side. \texttt{\textbackslash tcblower} separates the two halves.

\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 an image.
\texttt{*} places the image on the left.

\subsection{QR codes}

\texttt{\textbackslash withqrcode[*][\textit{size}]\{\textit{url}\}\{\textit{content}\}}: QR code alongside content.
\texttt{*} 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}\}}: 5\,mm $\times$ 5\,mm grid.
    \item \texttt{\textbackslash customgrid[\textit{color}][\textit{dx}][\textit{dy}]\{\textit{width}\}\{\textit{height}\}}: custom grid.
    \item \texttt{\textbackslash frenchgrid[\textit{minor\_c}][\textit{major\_c}]\{\textit{width}\}\{\textit{height}\}}: Seyès (French ruled) grid.
    \item \texttt{\textbackslash gridfill} / \texttt{\textbackslash gridfill*}: fills the 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 a frame.
    \item \texttt{neobox*}: box without a 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]
  Content with a frame.
\end{neobox}

\begin{neobox*}
  Content without a visible frame.
\end{neobox*}
\end{codeside}
\tcblower
\begin{neobox}[title=My box]
  Content with a frame.
\end{neobox}
\begin{neobox*}
  Content without a 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 text color for the entire document.
\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 assessment}

\subsection{Grading tools}

\begin{itemize}
    \item \texttt{\textbackslash gradingstrip[\textit{total}]}: grading banner with a score field and space for comments.
    \item \texttt{\textbackslash mrk[*][\textit{comment}]\{\textit{pts}\}}: margin points.
\end{itemize}

\begin{sidebyside}[righthand width=.65\linewidth]
\begin{codeside}[numbers=none]{latex}
\gradingstrip[20]
\end{codeside}
\tcblower
\gradingstrip[20]
\end{sidebyside}

\subsection{Answer areas}

\begin{itemize}
    \item \texttt{\textbackslash answerfield[\textit{width}]\{\textit{lines}\}}: answer area with a colored background.
    \item \texttt{\textbackslash answerframe[\textit{width}]\{\textit{lines}\}}: framed answer area.
    \item \texttt{\textbackslash vardots[\textit{length}]}: dotted fill 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-form answers.
\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}
Justify:
\answerframe{3}
\end{codeside}
\tcblower
Justify:
\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{Competency-based assessment}

\texttt{\textbackslash competencies\{\textit{Skill1}\textbackslash\textbackslash \textit{Skill2}...\}}: assessment 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}\}}: frames 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<yellow!20>[red]{a^2+b^2=c^2}$
\end{codeside}
\tcblower
The formula $\mathbox{E = mc^2}$ is famous.

With colors: $\mathbox<yellow!20>[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 frames: \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 a weight label to a branch.
    \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})}

An environment for aligning blocks of equations in a grid.
\begin{itemize}
    \item \texttt{\textbackslash begin\{mathgrid\}\{\textit{n}\}}: grid with \textit{n} columns.
    \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 via \texttt{notes=\textit{dim}}, \texttt{leftnotes=\textit{dim}}, or \texttt{rightnotes=\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}]}: note anchored to a specific location.
\end{itemize}

\begin{code}{latex}
\documentclass[notes=2.5cm]{neoschool}

This is important\tdnote{Remember this!}.

\boxnote[hyp]{Key hypothesis}
\begin{theorem}
  \tdmark[hyp] If $f$ is continuous on $[a,b]$...
\end{theorem}
\end{code}

\end{document}
