Building a No‑Fluff Report Template in LaTeX
LaTeX
Abstract
On a few occasions, I had to write a LaTeX/PDF report or documentation on what I was doing. I often got annoyed with TeX templates, which had lots of wasted whitespace around the title and edges of the document. So, I created a template that improves density, flexibility, and clarity.
Why a New Template?
- Dense (less fluff) — Every square centimeter should serve the reader. Tighter vertical spacing and compact headings keep the narrative flowing.
- Optional titles — Some documents benefit from title; others (like a few‑paragraph conclusion) do not. The template should let me toggle them off with a single flag.
- Flexible — Today, I might need a one‑pager. Tomorrow, a 20‑page appendix. Layout decisions (margins, font, color) should be parameterized — not hard‑wired.
Existing classes like article
or even IEEEtran
come close but still force in essential baggage (abstract blocks, keywords, etc.). Then I stumbled upon the elegant ministate
class. So I adapted it.
Meet ministate
v3.0
ministate.cls
\ProvidesClass{ministate}[2023/03/29 v3.0 Minimalist statement class]
\LoadClass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc} % from 2018, UTF-8 is default in LaTeX
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{microtype}
\usepackage[margin=0.8in]{geometry}
\usepackage{parskip}
\usepackage{fancyhdr}
\setlength{\headheight}{15.2pt}
\pagestyle{fancy}
\fancyhf{} % Clear all header and footer fields
%--------------------------------------------------%
% Title, HeaderTitle, Author, HeaderAuthor, %
% Custom Date %
%--------------------------------------------------%
\let\oldtitle\title
\let\oldauthor\author
\let\olddate\date
\def\@headertitle{}
\def\@headerauthor{}
\def\@headerdate{}
% Redefine the \title and \author commands
\renewcommand{\title}[1]{%
\oldtitle{#1}%
\ifx\@headertitle\@empty%
\relax\def\@headertitle{#1}%
\fi%
}\renewcommand{\author}[1]{%
\oldauthor{#1}%
\ifx\@headerauthor\@empty%
\relax\def\@headerauthor{#1}%
\fi%
}
\renewcommand{\date}[1]{%
\olddate{#1}%
\ifx\@headerdate\@empty%
\relax\def\@headerdate{#1}%
\fi%
}
% Commands for explicitly setting the header title and header author
\newcommand{\headertitle}[1]{\def\@headertitle{#1}}
\newcommand{\headerauthor}[1]{\def\@headerauthor{#1}}
\fancypagestyle{ministate}{%
\fancyhf{}% clear everything
\fancyhead[L]{\textbf{\@headertitle}\ifx\@headerdate\@empty\else\ (\@headerdate)\fi}%
\fancyhead[R]{\textbf{\@headerauthor}}%
\fancyfoot[C]{\thepage}%
}
\pagestyle{ministate}
% Apply header settings including the custom date
%\fancyhead[L]{\textbf{\@headertitle}\ifx\@headerdate\@empty\else\ (\@headerdate)\fi} % Title (Custom Date)
%\fancyhead[R]{\textbf{\@headerauthor}} % Author
%\fancyfoot{} % Override existing foot numbering
%\fancyfoot[C]{\thepage} % Page number at center of footer
%--------------------------------------------------%
% Document Body %
%--------------------------------------------------%
% Usage:
% \title{Your Title Here}
% \author{Author Name}
% \headertitle{Your Header Title Here} - For custom header title
% \headerauthor{Your Header Author Here} - For custom header author
% \date{Custom Date or Empty String} - To change or remove the date
% Comment this block if we don't want header on the first page
\usepackage{etoolbox} % load before you patch anything
\makeatletter
\patchcmd{\maketitle}% the command to patch
\thispagestyle{plain}}% code to replace
{\thispagestyle{ministate}}% replacement
{% ← success / failure actions (empty)
{}{} \makeatother
\makeatletter
\def\@maketitle{%
\newpage
\begin{center}%
\let\footnote\thanks
\LARGE \@title\par}%
{\vskip 0.2em%
\large\begin{tabular}[t]{c}\@author\end{tabular}\par}%
{\vskip 0.2em%
\large \@date}\vskip 0.2em% % Commented out to remove the date
{\end{center}%
\par
%
}\makeatother
The content of example.tex
file:
example.tex
\documentclass[11pt,a4paper,nonatbib]{./ministate}
% (optional) bibliography
%\usepackage[backend=biber,style=ieee,autocite=plain,sorting=none]{biblatex}
%\addbibresource{biblio.bib}
\usepackage[sfdefault]{atkinson}
\usepackage{fontawesome}
\usepackage{hyperref}
\usepackage{url}
\usepackage[english]{babel}
\usepackage[autostyle,english=british]{csquotes}
% (optional) prevent breaking words
\usepackage[none]{hyphenat}
\interdisplaylinepenalty=10000
% lorem ipsum generator
\usepackage{kantlipsum}
% ministate settings
\title{The Summary of Lorem Ipsum}
\headertitle{The Shorter Title} % (optional) will use \title if not used
\author{Johnny English, PhD}
\headerauthor{Johnny E., PhD} % (optional) will use \author if not used
\date{May 7, 2025}
\begin{document}
\maketitle
\kant
%\clearpage
%\printbibliography[title={Osebna bibliografija}]
\end{document}
Outcome
Below, I embedded the outcome PDF of the above code samples …