The neoschool class

Version 1.3.3 • Author: Razik Ikhlef

https://apps.edulatex.xyz

Files and demos

Compiled examples

Demo 1
Demo 2
Demo 3
Demo 4
Demo 5
The neoschool class gives K–12 teachers a comprehensive toolkit for creating classroom materials: tests, lesson handouts, exercise sheets with answer keys, and more. It ships with fifty-eight color themes, sixteen preconfigured profiles, over thirty title layouts, specialized environments for theorems, exercises, code and admonitions, and bundles dozens of commonly used LaTeX packages.

Quick start

The easiest way to get started is to pick a profile, which automatically sets the theme, title layout, box styles and shapes:

\documentclass[english, profile=academic]{neoschool}

For full manual control:

\documentclass[english, theme=axiom, titlelayout=band, thmstyle=bar, exstyle=capsule]{neoschool}

The class automatically loads dozens of packages, so additional \usepackage calls are rarely needed.

Preconfigured profiles

The profile=<name> option configures the theme, title layout, box styles (theorems, exercises, admonitions, code), corner shapes and opacity levels all at once. Sixteen profiles are available.

academic Lectures and course notes. Theme royal, title band, thmstyle block, exstyle bar, adstyle modern, codestyle plain, boxshape soft.
minimalist Clean and understated. Theme ink, title stream, thmstyle plain, exstyle line-outline, adstyle classic, codestyle lines, boxshape sharp.
material Material Design inspired. Theme azure, title notion, thmstyle tile, exstyle capsule, adstyle material, codestyle shadow, boxshape rounded.
coder CS-oriented documents. Theme marine, title blocks, thmstyle bar, exstyle shell, adstyle professional, codestyle frame, boxshape chamfer.
memo Reference sheets. Theme lagoon, title bristol, thmstyle sticker, exstyle badge, adstyle soft, codestyle plain, boxshape chat.
exam Tests and quizzes. Title eval, thmstyle plain, exstyle inline, boxshape sharp. Enables print mode (no backgrounds or frames).
organic Soft, natural shapes. Theme forest, title flow, thmstyle curve, exstyle capsule, adstyle soft, boxshape leaf.
origami Geometric, folded look. Theme crimson, title geometric, thmstyle fold, exstyle rule, adstyle classic, boxshape bevel.
blueprint Technical blueprint feel. Theme frost, title grid, thmstyle frame, exstyle counter-inline, adstyle classic, boxshape sharp.
swiss Swiss design. Theme crimson, title brush, thmstyle bar, exstyle capsule-outline, adstyle modern, boxshape southeast.
creative Playful and colorful. Theme neon, title memphis, thmstyle pastel, exstyle badge, adstyle material, boxshape sharpish.
focus Clean with a side accent. Theme rhodium, title spine, thmstyle tag, exstyle capsule, adstyle classic, boxshape west.
elegant Refined and polished. Theme velours, title minimal, thmstyle bar, exstyle line-circle, adstyle classic, boxshape sharp.
slate Side-band layout. Theme slate, title band, thmstyle tile, exstyle bar, adstyle professional, boxshape sharp.
maker DIY project sheets. Theme terra, title tech, thmstyle sticker, exstyle rule, adstyle classic, boxshape sharp.
zen Calm and soothing. Theme moss, title wave, thmstyle block, exstyle line-outline, adstyle soft, boxshape sharpish. Enables unicolor mode.

Loaded packages

The class automatically loads the following packages (no need for \usepackage): adforn, adjustbox, algpseudocode, bookmark, calc, changepage, colortbl, cuted, enumitem, environ, etoolbox, fontawesome5, forest, iftex, kvoptions, lastpage, marginnote, mathtools, microtype, multicol, nccmath, needspace, pdftexcmds, pgffor, pgfplots, pifont, qrcode, scrlayer-scrpage, setspace, silence, siunitx, tabularray, tasks, tcolorbox, tikz, tikzpagenodes, tikzsymbols, ulem, wrapfig, xcolor, xhfill, xkeyval, xsim, xstring.

Optional package groups

Option Packages loaded
math annotate-equations, bm, cancel, esvect, mathrsfs, ncccomma, numprint, tdsfrmath, tkz-euclide, witharrows, xlop.
apmep Packages for French math-competition archives: esvect, pstricks and friends, tkz-tab, variations, etc.
mathastext Uses the text font for math mode.
faketext blindtext and lipsum.
notes todonotes. Variants: leftnotes, rightnotes.
mathics asymptote and latexalpha2.

Language

Three languages are supported. The chosen language automatically translates environment labels (theorem, exercise, proof, etc.) and sets typographic conventions via babel.

Option Effect
english English (default).
french French (babel-french conventions).
german German.
nofrenchlist Disables em-dashes for French lists.
frenchlistaspar Treats list items as paragraphs.

Fonts

With LuaLaTeX or XeLaTeX, system fonts can be used. Each family can be configured independently with its own scale factor.

Option Effect
mainface=Name Main serif font.
sansface=Name Sans-serif font (headings, sections).
monoface=Name Monospaced font (code).
mathface=Name Math font.
facefamily=Name Font family preset.
mainfacescale, sansfacescale, monofacescale, mathfacescale Scale factor for each family (default: 1.0).
sfbody Sets body text to sans-serif.
sfall Sets the entire document to sans-serif.

Each font also accepts additional options via mainfaceoptions, sansfaceoptions, monofaceoptions and mathfaceoptions.

Page layout

Margins and spacing

Option Effect
margin=dim Side margins (default: 1.5cm).
vspacing=factor Global vertical spacing multiplier (0.25 to 2.0, default: 1.0).
indent=dim Paragraph indentation (default: 1em).

Table of contents

Option Effect
compacttoc Compact table of contents.
twocoltoc Two-column table of contents.
monotoc Primary-color-only table of contents.

Headers and footers

Option Effect
fullheader Enables the full running header.
nofooter Removes the footer.
pageonlyfooter Shows only page numbers in the footer.

Imposition and booklets

Options for printing multiple pages per sheet or producing booklets: 2a5toa4, 2a4toa3, 4a5toa3, 2toa3, bookleta5, bookleta4.

Color themes

The theme=name option selects from fifty-eight available themes. Each theme defines four colors: primary (headings, sections, definitions), secondary (theorems), tertiary (exercises), structural (remarks, inline code). The default is axiom.

Family Themes
Near black graphite, mineral.
Dark slate athenee, axiom (default), prestige, renaissance, sequoia, studio.
Navy dusk, excellence, library, marine, midnight, neon, nocturne, retro, taiga.
Blues azure, ink, rhodium, royal, slate, trinity, velours.
Teal arctic, frost, lagoon, mist, oceanic, tundra, woodland.
Greens eton, forest, garden, hearth, ivy, jewel, manor, moss, sage.
Purples amethyst, mulberry, opera, velvet.
Reds / burgundy aurora, bordeaux, crimson, harvard, heritage, mahogany, orchid, peony, vivid.
Browns / ochre coffee, cyprus, saffron, study, terra.

Color modes

Option Effect
print Black and white, optimized for printing. Disables colored backgrounds and frames.
unicolor Uses the primary color for all environments.
darktheme Dark theme (dark background, light text). Automatically adjusts opacity levels.

Color customization

To override specific colors without changing theme:

Option Effect
globalcolor=color Global primary color (default: black).
headcolor=color Section heading color.
subcolor=color Subsection color.
subsubcolor=color Subsubsection color.
titlecolor=color Document title color.

The \documentcolor{color} command redefines the primary color mid-document.

Box appearance

Boxes (theorems, exercises, code, admonitions) share a common option system for frames, backgrounds, opacity, corner radius and shapes. Each family can be configured independently or globally.

Frames and backgrounds

Category Options (enable / disable)
Theorems thmframe / thmnoframe, thmback / thmnoback.
Exercises exframe / exnoframe, exback / exnoback.
Code codeframe / codenoframe, codeback / codenoback.
All frame / noframe, back / noback.
Shortcuts clean (no backgrounds or frames), styled (with backgrounds and frames).

Opacity

Background and frame opacity are set between 0 and 100:

Background Frame
boxopacity (global), thmboxopacity, exboxopacity, codeboxopacity, adboxopacity. frameopacity (global), thmframeopacity, exframeopacity, codeframeopacity, adframeopacity.

Border width

border (global), thmborder, exborder, codeborder, adborder.

Corner radius

boxarc=dim (global), thmboxarc, exboxarc, codeboxarc, adboxarc, neoboxarc, sideboxarc, pseudoboxarc. Theorem titles have their own radius: thmtitlearc.

Corner shapes

The boxshape=shape option applies globally. Each family also has its own option (thmboxshape, exboxshape, codeboxshape, adboxshape, neoboxshape, sideboxshape). Theorem titles: thmtitleshape.

Available shapes: sharp, rounded, soft, sharpish, curve, chamfer, bevel, chat, leaf, north, south, east, west, northeast, northwest, southeast, southwest, downhill, uphill.

Padding

padding=tight|normal|loose controls internal box spacing.

Title layouts

The titlelayout=name option sets the title page appearance. Over thirty layouts are available.

Exams and assessments

exam, shortexam, mockexam, eval, evalicons, evalgrade, evaliconsgrade, shorteval.

Classic

default, titlebox, tighttitle, onlytitle, shorttitle, shortlesson, minimal, frame.

Design

band, banner, bar, bauhaus, blocks, book, bristol, brush, bubbles, champagne, circles, cloud, confetti, flow, geometric, grid, magazine, memphis, notion, simplenotion, particles, spine, stream, tech, wave.

Title customization

Option Effect
titledecor=style Title decoration (default: none).
titlealign=alignment Title alignment (default: center).
titlesize=size Title font size.
titlestyle, titleweight, titleshape Title font style, weight and shape.

Section styles

Option Effect
headstyle=style Section heading font style (default: sffamily).
headweight=weight Weight (default: bfseries).
headshape=shape Shape (default: upshape).
headerules=style Header rule style (default: none).
sectionnumstyle=style Section number style (circle, square, etc.).
sectiontextstyle=style Section text style (sc, bf, etc.).
sectionstyle=style General style: normal, highlighted, shaded, shadedline, underline.
sectionalign=alignment Alignment (default: center).

Math environments

Environments are built with tcolorbox. The thmstyle=style option sets their global appearance.

Available styles

tag (default), bar, block, tile, fold, plain, frame, curve, sticker, pastel, raw.

Environments

theorem, lemma, corollary, conjecture, proposition, property, properties, definition, definitions, method, activity, application, example, examples, remark, remarks, proof.

Syntax

\begin{definition}[title=Prime number, label=def:prime]
  An integer is prime if it has exactly two divisors.
\end{definition}

\begin{theorem}[title=Fermat's little theorem]
  If $p$ is prime and $a \not\equiv 0 \pmod{p}$,
  then $a^{p-1} \equiv 1 \pmod{p}$.
\end{theorem}

Numbering options

Option Effect
sectionthmcounter Counter reset at each section (e.g. Theorem 2.1).
sharedthmcounter Shared counter across all environment types.
thmgroupcounter Counter grouped by environment family.

Separators

thmterminator (default: .\!): character after the number. thmseparator: separator between number and title.

Exercises and solutions

The exercise system is built on the xsim package. The exstyle=style option sets the appearance.

Exercise styles

Category Styles
Boxed capsule (default), capsule-outline, block, bar, tile, fold, plain, frame, curve, sticker, pastel, card.
Badge badge, badge-outline, digit, digit-outline, digit-inline, digit-outline-inline, counter, counter-outline, counter-inline, counter-outline-inline.
Linear line, line-outline, line-circle, line-circle-outline.
Special inline, shell, section, subsection, item, rule, separator, raw.

Syntax

\begin{exercise}[points=3, subtitle={Derivatives}]
  Find the derivative of $f(x) = x^2$.
\end{exercise}
\begin{solution}
  $f'(x) = 2x$.
\end{solution}

Multiple choice

\begin{choices}(2)
  \choice[\correct] True
  \choice False
\end{choices}

Global options

Option Effect
answers Shows solutions after each exercise.
answersonly Shows only the solutions.
solrotate Prints the solution upside-down (180° rotation).
shuffle Randomizes exercise order.
exerciseicons Displays difficulty icons.
sharedexcounter Shares the exercise counter across sections.
solstyle=style Solution style: inline (default), dots, lines, box.

Separators

exterminator (default: .) and exseparator: characters around the number and subtitle.

Code listings

Syntax highlighting uses listings by default, or minted if the minted class option is enabled.

Code styles

codestyle=style: shadow (default), plain, line, lines, bar, frame.

Environments

Environment Usage
code{language}[title] Code block with line numbers.
codenonum{language}[title] Code block without line numbers.
codeinput{language}{file} External file inclusion with line numbers.
codeinputnonum{language}{file} External file inclusion without line numbers.
\begin{code}{python}[Factorial]
def fact(n):
    return 1 if n <= 1 else n * fact(n - 1)
\end{code}

Additional options

Option Effect
codewidth=factor Code block width (default: 1, i.e. 100%).
centeredcode Centers the code block horizontally.
codenum / codenonum Enables or disables line numbering.

Pseudocode

The pseudocode environment is based on algpseudocode. Keywords are automatically translated into the chosen language.

Admonitions

Admonitions are visual callout boxes. Ten types are predefined, each with its own icon and color.

Environments

Environment Usage
note General note.
info Additional information.
warning Warning.
important Important notice.
tip Helpful tip.
reminder Reminder.
summary Summary.
toolbox Tools and resources.
method Method or procedure.
activity Activity.

Styles

adstyle=style: soft (default), modern, material, classic, professional, minimal.

Options

inlineadmonition (default: true) for inline rendering, or blockadmonition for block rendering. The separators adterminator (default: .) and adseparator (default: ~:~) customize title punctuation.

Content layout

Columns

Command / environment Usage
\splitcontent[ratio]{left}{right} Splits content into two columns. The ratio (default: 0.5) sets the left column proportion.
sidebyside Two side-by-side boxes, separated by \tcblower.

Images and QR codes

Command Usage
\textwithimage{position}{width}{image}{caption}{text} Places an image alongside text.
\withqrcode{url}{text} Adds a QR code in the margin.

Simple boxes

\neobox{content} (simple box), \neocolorbox{content} (colored box), \inlinebox{content} (inline box).

Absolute positioning

\positionobject{x}{y}{width}{content} places an element at an absolute position on the page using TikZ.

Grids and paper

Command Usage
\grid[color]{width}{height} Standard grid (5 mm spacing).
\customgrid[color][h][v]{width}{height} Custom grid (horizontal and vertical spacing).
\frenchgrid[*][c1][c2]{width}{height} French Seyès ruling. The starred variant produces grayscale output.
\gridfill[*][color][h][v] Fills the remaining page with a grid.
\notebook Notebook page background.

Grading and assessment

Point allocation

Command Usage
\gradingstrip[total] Full grading strip (default: 20 points).
\mrk{points} Margin point marker.
totalpoints=N Option to set the total points (default: 20).

Answer areas

Command Usage
\answerfield[width]{lines} Colored answer area.
\answerframe{lines} Framed answer area.
\vardots[length] Dotted line for free-form answers.
\emptybox[options]{width}{height} Empty box for answers.

Competencies

\competencies{Skill 1 \\ Skill 2} generates a competency assessment table.

Symbols

\cmark (✓), \xmark (✗), \unchecked, \done, \wontfix, \neocheckbox (empty box), \neochecksol (checked box), \neocheckcirc (empty circle), \neocheckdisk (filled circle).

Special tools

Math highlighting

Command Usage
\mhl[color]{expression} Colored highlight in math mode.
\mathbox{expression} Boxes an expression.
\mc[color]{text} Colored math text.
\circled{text} Text circled.

Coordinate systems and vectors

With the apmep or math option: \Oij (2D frame), \Oijk (3D frame), \Ouv (vector frame), \vectt.

Special environments

mathgrid: grid for mathematical work. neotree: trees (based on forest).

Notes and annotations

Command Usage
\tdnote{text} Margin note.
\boxnote{text} Boxed note.
\tdmark[label] Note reference marker.

Arrows and symbols

\To (→), \Gets (←), \barre (decorative bar).

AI logos

\AILogo[scale]: "made with AI" logo. \NoAILogo[scale]: "no AI" logo.