# novathesis: a LaTeX template that already knows your university

> novathesis is a LaTeX template for MSc dissertations and PhD theses with ready-made covers, spines and formatting rules for 25 or more Portuguese institutions, built on the memoir class with biber and bib2gls. It suits a student who would otherwise fight their school's formatting rules, and the 8.0 glossary migration is the one thing to read before you start.

**joaomlourenco/novathesis** — A LaTeX template for academic monographs (e.g., dissertations and thesis). This template serves both beginners and proficient LaTeX users.

- Repository: https://github.com/joaomlourenco/novathesis
- Website: http://joaomlourenco.github.io/novathesis/
- Stars: 1,009 · Forks: 185
- Language: TeX
- License: LPPL-1.3c
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/joaomlourenco-novathesis

## A template for a Portuguese thesis, in twenty-five variants

novathesis is a LaTeX template for academic theses and dissertations, and it says it serves both beginners and proficient LaTeX users. The primary language is TeX, the licence is LPPL-1.3c, and the author is João M. Lourenço, with the copyright line covering 2004 to 2026.

The scope is stated in the overview. It provides ready-to-use cover pages compliant with each institution's rules, a structured and extensible LaTeX codebase, automated bibliography management via biblatex and biber, and professional typographic standards. The summary line at the top of the README says it offers compliant covers, spines and formatting for 20+ Portuguese institutions, while the feature list says 25+ schools are supported.

That number is the reason to use the template rather than write a class from scratch. A thesis template that has already encoded one institution's margin rules, binding conventions, spine layout and required front matter is doing work that would otherwise take a week, and a collection of twenty-five of them is doing work that would otherwise take a year.

The project describes itself as open source and actively maintained, with a maintenance badge, and the release history backs that up: v8.5.0 on 2026-10-10, v8.3.0 on 2026-08-29 and v8.0.2 on 2026-07-27, with the last push to the main branch on 2026-10-10. The releases carry bird names, v8.5.0 being Kingfisher: Landing Where There Is No Water and v8.3.0 being Stork: Flying International.

## The 8.0 glossary migration, and the silent failure inside it

The README leads with a warning for anyone coming from 7.10.x or earlier, and the detail is specific enough to be worth reading twice.

Version 8.0 changes where glossary entries live. Acronyms, glossary terms and symbols moved from .tex files, using newacronym and newglossaryentry and processed by makeglossaries, to .bib files processed by bib2gls.

The migration procedure is: run make glsbib to convert your entry files, then re-add any sort keys, because the converter drops them, which silently reorders symbols and any entry whose name is a command. The build still succeeds, so nothing warns you. Delete glsaddall if your document calls it. And bib2gls needs a Java runtime, which Overleaf has, and locally you check with bib2gls --version.

That last point about the sort keys is the one worth dwelling on. A migration that reorders your symbols without failing the build is the worst kind of migration, because the damage shows up in a printed thesis rather than in an error message, and the fix is to remember the sort keys. The template now makes the failure visible at the other end too, since a registered .tex entry file stops the build with an explanatory error, so you cannot miss the migration. The full procedure is in the Migrating from 7.10.x appendix of the manual, template.pdf.

The reason for the change is also stated, and it is a good reason. Glossaries no longer consume any of pdfTeX's 16 write registers, so most documents no longer need the morewrites package, and a full pdfLaTeX build of the manual went from 109 s to 36 s.

That number is the kind of detail that tells you about the project's engineering, because a nearly three times faster manual build is a visible improvement for anyone reading the documentation.

## memoir underneath, and the tooling around it

The template is built on the memoir class, and the key features list pairs that with a few other decisions that shape what you can do.

Beginner-friendly means minimal setup, clear configuration files, and it works with any major LaTeX distribution. Expert-ready means it uses the powerful memoir class, supports extensive customization, and is well-organized and modular.

School-compliant covers 25+ schools, with automatic generation of covers, spine and formatting rules. Modern tooling is latexmk support, biber for bibliographies, and bib2gls for glossaries, acronyms and symbols, which ships with TeX Live but needs a Java runtime on your machine, which Overleaf provides. The features list ends with Overleaf-ready.

The tooling story is where the template differs from a plain class file, and it is worth understanding that latexmk is the build engine rather than an optional extra. The Makefile at the repository root says so at the top: the build engine is latexmk, and all LaTeX-specific behaviour, meaning engine defaults, biber, glossaries and clean lists, lives in ./latexmkrc.

That separation is a good design decision. The Makefile is a thin wrapper over latexmk, and the LaTeX behaviour is in a configuration file that a LaTeX user can read. The Makefile also exposes the engine choice directly, with make building with LuaLaTeX as the recommended engine, and make lua, make pdf and make xe selecting a specific one.

## The Makefile targets, and the variables that matter

The Makefile documents its own targets in a comment block, which is the clearest way to describe the workflow.

The list is: make to build with LuaLaTeX, which is recommended, and make lua, make pdf and make xe to build with a specific engine. make view or make v builds and then opens the PDF. make watch rebuilds automatically on every change with LuaLaTeX, and make watch-pdf and make watch-xe do the same with pdfLaTeX or XeLaTeX. make glsbib converts the 7.10.x glossary .tex entry files to .bib as a one-off migration step. make log shows the build log, make info prints the version, commit and TeX environment for bug reports, make clean removes build artifacts while keeping the PDF and the AUXDIR/matrix/ directory, make distclean cleans and also removes the PDF and synctex files, and make help shows the help. There is also a make help-dev target for maintainer work covering the school, matrix and zip tasks, which is git checkout only.

The variables are as useful as the targets. FILE is the root .tex file, defaulting to auto-detection of the documentclass. NT takes k=v pairs for ntsetup overrides, with the example NT="doctype=msc,lang=pt". V=1 gives verbose raw LaTeX output. BATCH=1 is batch mode, never stopping at errors, which the comment marks as good for CI.

Two of the variables exist for a specific failure mode. FASTWRITES=0 loads the morewrites package, with the default being 1 which skips it, and it is only needed for a pdf or xe document that overshoots the 16 write streams, producing a No room for a new write error, and it is a no-op for LuaLaTeX. TL=2024 points the run at a particular TeX Live installation under /usr/local/texlive.

And SIZE=x downsamples raster images after building, via Ghostscript, until the final PDF is under a size limit, which is the usual last resort for a thesis with too many high resolution images.

## A directory layout that mirrors the document

The repository top level is organised by the numbered structure of a thesis, and it is worth reading as a description of what the template does for you.

There is 0-Config/, then 1-FrontMatter/, 2-MainMatter/, 3-BackMatter/, 4-Bibliography/, 5-Figures/, and alongside them novathesis.cls, template.tex, novathesisFiles/, a latexmkrc, a Makefile and a Makefile.dev, an ANNOUNCE.md, a CHANGELOG.md, a CITATION.cff, a LICENSE, and a .Build/ directory that holds the build output.

The numbered directories are the document skeleton, and the naming makes the order explicit. Front matter is the part with the cover and the preliminary pages, main matter is the body, back matter is the closing apparatus, and the bibliography and figures have their own homes. A student writing a two hundred page thesis has to keep a lot of files organised, and having the template impose that structure saves the decisions being made badly by hand.

novathesis.cls is the class file, template.tex is the root document, and novathesisFiles/ holds the per-school assets, with the school tree visible in the paths the README uses, for example novathesisFiles/Schools/other/novathesis/Images/red/insignia-red1.svg, which is the red insignia image for the default or other school and a variant of it.

The manual ships in two forms, novathesis-manual.pdf and a versioned novathesis-manual-8.5.0.pdf, and CITATION.cff and a Zenodo DOI badge are there so the template itself can be cited, which is a detail that matters if your thesis acknowledges the template it was built with.

## Conclusion

Adopt novathesis if you are writing a thesis at one of the supported Portuguese institutions, because the cover, spine and formatting rules are already implemented and the cost of using it is learning its configuration conventions. Do not adopt it if your institution is not covered and you do not need the 20-plus school configurations, since the template is substantial and opinionated. Before you start on version 8, read the upgrade note about glossaries moving from .tex files to .bib files and processed by bib2gls, because the converter drops sort keys silently and a Java runtime is required.

## FAQ

### What does novathesis provide for a thesis or dissertation?

It provides ready-to-use cover pages compliant with each institution's rules, automatic generation of covers, spine and formatting rules for 25+ schools, a structured and extensible LaTeX codebase built on the memoir class, automated bibliography management via biblatex and biber, and glossaries, acronyms and symbols through bib2gls.

### What changed in novathesis version 8.0 for glossaries?

Glossary entries moved from .tex files, using newacronym and newglossaryentry with makeglossaries, to .bib files processed by bib2gls. You run make glsbib to convert your entry files and then re-add any sort keys, because the converter drops them and silently reorders symbols. bib2gls also needs a Java runtime, and a registered .tex entry file now stops the build with an explanatory error.

### How do I build a novathesis document?

The build engine is latexmk, with all LaTeX specific behaviour living in ./latexmkrc. The Makefile gives make for a LuaLaTeX build, which is recommended, and make lua, make pdf or make xe for a specific engine, plus make view to build and open the PDF, make watch to rebuild on every change, and make glsbib for the one-off glossary migration.

### What are the main Makefile variables in novathesis?

FILE sets the root .tex file and defaults to auto-detection of the documentclass. NT takes k=v pairs for ntsetup overrides, with the example NT="doctype=msc,lang=pt". V=1 gives verbose raw LaTeX output, BATCH=1 is batch mode that never stops at errors and is described as good for CI, FASTWRITES=0 loads the morewrites package for pdf or xe builds that overshoot the 16 write streams, TL=2024 selects a TeX Live installation, and SIZE=x downsamples raster images via Ghostscript after the build.

## Sources

- [joaomlourenco/novathesis on GitHub](https://github.com/joaomlourenco/novathesis)
- [License: LPPL-1.3c](https://github.com/joaomlourenco/novathesis/blob/main/LICENSE)
- [Project website](http://joaomlourenco.github.io/novathesis/)
- [README](https://github.com/joaomlourenco/novathesis/blob/main/README.md)
- [Releases](https://github.com/joaomlourenco/novathesis/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/joaomlourenco-novathesis
