Tutorial: create a technical report with TeX-templates

This tutorial will guide you through creating a technical report using the TeX-UPmethodology LaTeX packages with the UTBM/CIAD style extension. This template is designed for writing structured documents with:

  • Professional front and back pages
  • Document version tracking
  • Author, validator, and informed person management
  • Automatic table of contents, figures, and tables
  • Bibliography support
  • Customizable colors and logos

Prerequisites

Before starting, ensure you have:

  1. A LaTeX distribution (TeX Live, MiKTeX, or MacTeX)
  2. The TeX-UPmethodology packages installed (see the installation section in the documentation)
  3. The UTBM/CIAD extension files

Step 1: Project Setup

Create a new directory for your report. Inside, create the following file structure:

my-report/
├── myreport.tex          (main LaTeX file)
├── references.bib        (bibliography file)
├── images/               (folder for your figures)
│   └── (your images here)

Step 2: Create the Main LaTeX File

Create a file named myreport.tex with the following minimal structure:

\documentclass[english]{utbmciadreport}

\begin{document}

\chapter{Introduction}
This is my first report.

\end{document}

Let's break down what this does:

  • \documentclass[english]{utbmciadreport} loads the UTBM/CIAD report class with English language
  • The document environment contains your content

Step 3: Configure Document Information

Add document metadata before \begin{document}. This information appears on the front page and in document summaries.

\documentclass[english]{utbmciadreport}

% Document identification
\declaredocument{My Project}{Technical Report}{TR-2026-001}

% Version information
\initialversion{1.0}{2024/01/15}{First draft}{\upmrestricted}

\begin{document}
...
\end{document}

Explanation of commands:

  • \declaredocument{project}{document name}{reference}: Sets the project name, document title, and reference number
  • \initialversion{version}{date}{description}{status}: Registers the first version of your document, with its version number, its publication date, a brief description, and the status (see the table below).

3.1 Version Status

The commands in the following table represent the standard statuses of a document.

Command Meaning
\upmrestricted Restricted access (confidential or only authors, not yet for broad distribution)
\upmvalidable The document is ready to be sent to validators
\upmvalidated The document has been validated but not yet published
\upmpublic The document is published and publicly accessible

The commands below return the status string associated with a given version or the latest version.

Command Returns
\upmstatusversion{version} The status of the specified version number.
\theupmstatus The status of the last (current) version.

Example:
\theupmstatus would expand to e.g., \upmrestricted, \upmvalidable, \upmvalidated, or \upmpublic depending on the last registered version.

3.2 Version History

You could also keep an history of the changes applied to your document by using one of the following commands:

Command Description
\initialversion{version}{date}{description}{status} Registers the initial version with the given status.
\incversion{date}{description}{status} Registers a new major version (increments the major number) with the given status.
\incsubversion{date}{description}{status} Registers a new minor version (increments the minor number) with the given status.
\updatesversion{version}{date}{description}{status} General‑purpose command to register any version with a status.

3.3 Watermark

If the document's status is set to \upmrestricted, a "CONFIDENTIAL" watermark is automatically added to every page. You can customise its colour and scale using:

  • \definecolor{watermarkcolor}{...}
  • \Setwatermarksize{scale} (e.g., \Setwatermarksize{0.5})

Step 4: Add Authors, Validators, and Informed People

Still in the preamble (before \begin{document}), add the people involved:

\documentclass[english]{utbmciadreport}

% Document identification
\declaredocument{AI Research Project}{Technical Report}{TR-2024-001}

% Version information
\initialversion{1.0}{2024/01/15}{First draft}{\upmrestricted}

% Authors (people who write the document)
\addauthor{john.doe@example.com}{John}{Doe}
\addauthor{jane.smith@example.com}{Jane}{Smith}

% Validators (people who approve the document)
\addvalidator{bob.wilson@example.com}{Bob}{Wilson}

% Informed people (people who receive the document for information)
\addinformed{alice.brown@example.com}{Alice}{Brown}
\addinformed{carol.white@example.com}{Carol}{White}

\begin{document}
...
\end{document}

Note: The starred version \addauthor*{...}{...}{...}{comment} allows adding a comment (e.g., "Project Leader").

To add a single person with multiple roles (e.g., both author and validator, you could use the command: \addauthorvalidator. This command registers the same person simultaneously as an author and a validator. It saves you from calling \addauthor and \addvalidator separately.

All the functions for adding a person have the arguments [email]{firstname}{lastname} or [email]{firstname}{lastname}{comment}.

  • email (optional) – the person's email address.
  • firstname (mandatory) – the first name.
  • lastname (mandatory) – the last/family name.
  • comment (only for starred version of the commands) – an additional comment (e.g., "Project Leader").

Step 5: Add Abstract and Keywords

Add the abstract and keywords to your document preamble:

...
% Abstract and keywords
\setdocabstract{This technical report presents the findings of the AI Research Project
conducted during the first quarter of 2026. We demonstrate novel approaches to machine
learning that improve efficiency by 30\%.}

\setdockeywords{artificial intelligence, machine learning, technical report, UTBM}
...

Step 6: Create the Full Document Structure

Now let's build a complete document with standard sections:

\documentclass[english]{utbmciadreport}

% === Document Information ===
\declaredocument{AI Research Project}{Technical Report}{TR-2024-001}

% === Version History ===
\initialversion{1.0}{2024/01/15}{First draft}{draft}

% === Authors ===
\addauthor{john.doe@example.com}{John}{Doe}
\addauthor{jane.smith@example.com}{Jane}{Smith}

% === Validators ===
\addvalidator{bob.wilson@example.com}{Bob}{Wilson}

% === Informed People ===
\addinformed{alice.brown@example.com}{Alice}{Brown}
\addinformed{carol.white@example.com}{Carol}{White}

% === Abstract and Keywords ===
\setdocabstract{This technical report presents the findings of the AI Research Project
conducted during the first quarter of 2026. We demonstrate novel approaches to machine
learning that improve efficiency by 30\%.}

\setdockeywords{artificial intelligence, machine learning, technical report, UTBM}

\begin{document}

\tableofcontents

% Main content
\chapter{Introduction}

This chapter introduces the context of our research. Artificial intelligence has become a
cornerstone of modern technology.

\section{Problem Statement}

The main challenge we address is the computational inefficiency of traditional machine
learning algorithms.

\section{Contributions}

Our main contributions are:
\begin{enumerate}
    \item A novel algorithm for efficient training
    \item An open-source implementation
    \item Experimental validation on real-world datasets
\end{enumerate}

% Back matter
\bibliography{references}
\listoffigures
\listoftables

\appendix

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Technical Details}

...

\end{document}

Step 7: Using Commands to Enhanced the Content

For writing the content of your report, you could use the commands that are explained in this section.

7.1. Definitions, theorems, and similar environments

The template already defines a definition environment. You can use it as follows:

\begin{definition}{Name of the definition}{label}
   Text of the definition.
\end{definition}

Example:

\begin{definition}{Multi-Agent System}{mas}
  A Multi-Agent System (MAS) is a system composed of multiple interacting intelligent agents.
\end{definition}

To reference it later: Definition \ref{def:mas} (the label prefix def: is added automatically when you write the definition). The command \defref{mas} may be used as an equivalent to \ref{def:mas}. For page reference: \defpageref{mas} or \pageref{def:mas}.

If you need additional theorem‑like environments (theorem, lemma, corollary, etc.), you can declare them in the preamble:

\declareupmtheorem{mytheorem}{My Theorem}{List of my Theorems}{mythm}{mytheorem}{\textbf}
  • mytheorem (first argument) - the name of the LaTeX environment that is used in all commands.
  • My Theorem (second argument) - the text to be displayed in the header of the theorem box.
  • List of my Theorems (third argument) - the text to be used as the title of the "list of theorem" chapter.
  • mythm (fourth argument) - the prefix to be automatically appended to the reference labels (similar to the def above for definitions).
  • mytheorem (fifth argument) - name for the file containing the list of theorems.
  • \textbf (sixth argument) - command that is used for formatting the source information associated to a theorem.

Then use:

\begin{mytheorem}{Theorem of Everything}{everything}
This is the theorem.
\end{mytheorem}

You can also add a source as an optional argument:

\begin{mytheorem}{Theorem of Everything}{everything}[Galland et al., 2025]
...
\end{mytheorem}

At the end of your document, you can list all theorems with \listofmytheorems.

7.2. Figures

Including figures in LaTeX always needs many commands (figure environment, caption, label, inclusion of the drawing, etc.). TeX-templates provides a macro for making all these things for you. So that, the simplest way to include a figure is with \mfigure:

\mfigure[ht]{width=0.8\linewidth}{myfigure}{Caption of the figure}{example}

Parameters:

  • [ht] – placement options (h=here, t=top, b=bottom, p=page of floats).
  • {width=0.8\linewidth} – options passed to \includegraphics.
  • {myfigure} – filename of the image (without extension, supports .pdf, .png, .jpg, etc.).
  • {Caption...} – the figure caption.
  • {example} – label (the prefix fig: is added automatically).

Refer to the figure with \figref{example} or \ref{fig:example}, and its page with \figpageref{example} or \pageref{fig:example}.

You can also add a source text:

\mfigure[ht]{width=0.8\linewidth}{myfigure}{Caption}{example}[Source: From Smith et al.]

For figures including subfigures, use the mfigures environment:

\begin{mfigures}[ht]{Main caption}{main}
  \msubfigure{width=0.45\linewidth}{subfig1}{First subfigure}
  \hfill
  \msubfigure{width=0.45\linewidth}{subfig2}{Second subfigure}
\end{mfigures}

This environment builds a big figure with caption Main caption and the label fig:main. Then, you could add a subfigure with \msubfigure followed by the options to pass to \includegraphics, the filename of the drawing and the caption of the subfigure. This subfigure will be assigned automatically to a label with the value fig:main:IDX, where the prefix is the label of the enclosing figure, and IDX is replaced by the alphabetic index of the subfigure in the list of subfigures, i.e., a for the first, b for the second, c for the third, etc.

7.3. Tables

Use the mtable environment for floating tables with a caption:

\begin{mtable}[ht]{0.9\linewidth}{3}{|l|X|c|}{Comparison of methods}{comparison}
  \tabularheader{Method}{Description}{Accuracy}
  A & This is a long description that will wrap & 95\% \\
  B & Another description & 88\% \\
\end{mtable}

Parameters:

  • [ht] – placement.
  • {0.9\linewidth} – total width of the table.
  • {3} – number of columns.
  • {|l|X|c|} – column specification (l=left, r=right, c=center, X=flexible width, | = vertical line).
  • {Comparison...} – caption.
  • {comparison} – label (prefix tab: added automatically).
  • \tabularheader – defines the header row (with background colour). The number of arguments for this command is the same as the number of columns of the table.

You can add a source with \addsource{...} and a table note with \tablenote{...}.

For long tables spanning several pages, use mlongtabular (non‑floating). Example of a long table:

\begin{mlongtabular}[\linewidth]{3}{l|X|c}{Top title}
  \tabularheader{Col1}{Col2}{Col3}\\
  Row 1 & data & value \\
  Row 2 & more data & 42 \\
  % ... many rows
\end{mlongtable}

Parameters:

  • [\linewidth] – total width of the table.
  • {3} – number of columns.
  • {l|X|c} – column specification (l=left, r=right, c=center, X=flexible width, | = vertical line).
  • {Top...} – title at the top of the table.

7.4. Lists, enumerations and descriptions

The standard itemize, enumerate and description work as usual. But the template enhances them:

Description with custom separator
\begin{description}
  \item[Term 1] Definition 1.
  \item[Term 2] Definition 2.
\end{description}

Example of result:

  • Term 1: Definition 1.
  • Term 2: Definition 2.

By default, the separator is :. You can change it globally or for a single environment by passing an optional argument:
\begin{description}[//] would use // as separator.

Enumerate with descriptions (mixed numbering and description)
\begin{enumerate}
  \item[First point] Explanation of first point.
  \item[Second point] Explanation of second point.
\end{enumerate}

Example of result:

  1. First point: Explanation of first point.
  2. First point: Explanation of second point.

You can also specify the numbering style:

\begin{enumerate}[1]   % Arabic numerals
\begin{enumerate}[i]   % lower‑case Roman
\begin{enumerate}[a]   % lower‑case letters
\begin{enumerate}[A]   % upper‑case letters

Example of result with [i]:

i. First point: Explanation of first point.

ii. First point: Explanation of second point.

Example of result with [a]:

a. First point: Explanation of first point.

b. First point: Explanation of second point.

Example of result with [A]:

A. First point: Explanation of first point.

B. First point: Explanation of second point.

Inline enumeration (inside a paragraph)
You can list items inline: \begin{inlineenumeration}
  \item first,
  \item second,
  \item third.
\end{inlineenumeration} This continues the paragraph.

Example of result: You can list items inline: (i) first, (ii) second, (iii) third. This continues the paragraph.`

7.5. Text formatting helpers

  • \textup{text} – superscript in text mode (e.g., 1\textup{st}).
  • \textdown{text} – subscript in text mode.
  • \emph{text} – emphasised (italic).
  • \Emph{text} – very important (bold and coloured).
  • \makename{first}{last} – formats a person's name (e.g., \makename{John}{Doe} → "John DOE").
  • \drname{first}{last} – adds "Dr." prefix.
  • \phdname{first}{last} – adds "Ph.D." prefix.

7.6. Mathematical symbols

The template predefines several useful math commands:

$\R$   % ℝ
$\N$   % ℕ
$\Z$   % ℤ
$\Q$   % ℚ
$\C$   % ℂ
$\powerset{A}$   % 𝒫(A)
$\sgn(x)$        % sign function

7.7. Algorithms (if you use the algorithm package)

Load the algorithm package in your preamble:

\usepackage{algorithm}
\usepackage{algorithmic}

Then use:

\begin{algorithm}
  \caption{My algorithm}
  \label{alg:myalgo}
  \begin{algorithmic}[1]
    \STATE $x \gets 0$
    \WHILE{$x < 10$}
      \STATE $x \gets x+1$
    \ENDWHILE
  \end{algorithmic}
\end{algorithm}

The template provides colours for algorithm captions and borders; you can customise them with \colorlet{algorithmcaptionlabel}{blue}, etc.

7.8. Emphasising boxes

For highlighting important text:

\begin{emphbox}{0.7\linewidth}
  This is an important statement.
\end{emphbox}

For boxes with a title:

\begin{titleemphbox}{0.7\linewidth}{Important}
  Content.
\end{titleemphbox}

There are three variants: titleemphbox, titleemphbox2, titleemphbox3 (different background colours).

Message boxes (caution, info, question) are also available:

\begin{upmcaution}
  Be careful about this.
\end{upmcaution}

\begin{upminfo}
  Useful information.
\end{upminfo}

\begin{upmquestion}
  What is the meaning of life?
\end{upmquestion}

7.9. Footnotes that can be recalled

You can define a footnote once and reuse its reference number later:

Some text.\savefootnote{This is a footnote}{myfn}
Later, you can refer to it again: \reffootnote{myfn}

The starred version \savefootnote* defines the footnote but does not print it at that location (useful for footnotes that appear only in later references).

Step 8: Create a Bibliography File

8.1. Create the BibTeX file

Create references.bib in the same directory:

@article{goodfellow2014generative,
    title={Generative Adversarial Networks},
    author={Goodfellow, Ian and Pouget-Abadie, Jean and Mirza, Mehdi and Xu, Bing and Warde-Farley, David and Ozair, Sherjil and Courville, Aaron and Bengio, Yoshua},
    journal={arXiv preprint arXiv:1406.2661},
    year={2014}
}

@inproceedings{he2016deep,
    title={Deep Residual Learning for Image Recognition},
    author={He, Kaiming and Zhang, Xiangyu and Ren, Shaoqing and Sun, Jian},
    booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition},
    pages={770--778},
    year={2016}
}

@book{goodfellow2016deep,
    title={Deep Learning},
    author={Goodfellow, Ian and Bengio, Yoshua and Courville, Aaron},
    year={2016},
    publisher={MIT Press}
}

8.2. Citations with standard BibTeX Command

The template uses BibTeX. To cite works, use \cite{key}. The provided bibliography style formats citations according to the CIAD requirements.

8.3. Citations with NatBib

If you have passed the class option natbib (it is the default), then the natbib package is included and provides a comprehensive set of citation commands for LaTeX. The two most essential ones are \citet and \citep.

  • \citet and \citep: The main commands for textual (in‑sentence) and parenthetical (in‑parentheses) citations, respectively. For example, \citet{jon90} produces "Jones et al. (1990)", while \citep{jon90} gives "(Jones et al., 1990)".
  • \citet* and \citep*: prints the full author list instead of the abbreviated "et al." form.
  • You can cite multiple sources at once by including several keys in the same command, separated by commas. For example, \citep{jon90,jam91} produces "(Jones et al., 1990; James et al., 1991)".

Step 9: Compile Your Document

Compile using the following sequence (in a terminal):

pdflatex myreport
bibtex myreport
pdflatex myreport
pdflatex myreport

Why multiple compilations?

  • First pass: generates auxiliary files
  • BibTeX: processes citations
  • Second pass: resolves cross-references
  • Third pass: ensures all references are correct

The easiest way to compile the document is to use AutoLaTeX. If you have it installed, open a terminal in the folder containing myreport.tex and run:

autolatex -f myreport

or

autolatex

AutoLaTeX will automatically run pdflatex the required number of times, process the bibliography (if any), and generate the final myreport.pdf.

Step 10: Customizing the Report Appearance

10.1. Class Options

You can modify the document class options to show/hide logos and elements:

% Hide CIAD logo, show all others
\documentclass[english,nociadlogo]{utbmciadreport}

% Hide document reference on front page
\documentclass[english,nodocrefonfront]{utbmciadreport}

% Show UT logo, hide UBFC logo
\documentclass[english,utlogo,noubfclogo]{utbmciadreport}

% Multiple options
\documentclass[english,noutbmlogo,noubfclogo,docrefonfront]{utbmciadreport}

Available options:

Option Effect
ciadlogo / nociadlogo Show/hide CIAD logo
utbmlogo / noutbmlogo Show/hide UTBM logo
ubfclogo / noubfclogo Show/hide UBFC logo
utlogo / noutlogo Show/hide UT Network logo
icartslogo / noicartslogo Show/hide iC ARTS logo
docrefonfront / nodocrefonfront Show/hide document reference on front page
docrefonback / nodocrefonback Show/hide document reference on back page
contactonback / nocontactonback Show/hide contact information on back page

10.2. Changing Colors

To customize colors, add color redefinitions in your preamble:

\documentclass[english]{utbmciadreport}

% Custom colors
\definecolor{sectiontitlecolor}{RGB}{0,100,150}
\colorlet{UTBMblue}{cyan!80!black}

% Rest of your document...

Summary

You have now created a professional technical report using the UTBM/CIAD LaTeX template. The key features you've learned:

  1. Document setup with \declaredocument
  2. Version tracking with \initialversion, \inversion, \incsubversion
  3. People management with \addauthor, \addvalidator, \addinformed
  4. Content creation with chapters, sections, tables and figures
  5. Bibliography management with BibTeX
  6. Customization through class options and color definitions

For more advanced features, refer to the full TeX-UPmethodology documentation, which covers additional environments like enumdescription, and more.