This is a Typst template for writing bachelor’s thesis and diploma at the Faculty of Informatics and Information Technologies (FIIT) in Slovak Technical University in Bratislava (STU). The template was crafted using the for the official requirements and conditions, as of May 2025 provided by the faculty, with this LaTeX template being the basis for how the document looks.
This template also supports the new format of Bachelor’s thesis!
The template is available in these languages: Slovak (sk), English (en)
Theses that already use this template:
- Extending a RISC-V processor with bit instructions, Kirill Putiatin
- Development of an Adverse Media Screening System using Face Recognition via Existing APIs, Illia Chaban
Here’s a quick look on different template styles. You can choose any one of these styles, it’s up to your personal preference. The previews are just for visual clarity, they are going to be slightly different from the final documents.
legacy |
regular |
compact |
---|---|---|
![]() ![]() |
![]() ![]() |
![]() ![]() |
You can use Typst’s online editor to edit and display your thesis. Sign up, sign in and click “Start from template”. Search for “vintage-fiit-thesis” and start writing!
Building your thesis locally
- Install Typst. If you’re on Linux, it should be pretty easy.
- Next, initialize the template using:
typst init @preview/vintage-fiit-thesis
- Start watching the changes of your thesis using:
typst watch main.typ --watch
- Begin writing your thesis!
If you’re new to Typst, we recommend to start reading the Typst tutorial.
Don’t forget to intialize a Git repository and backup your work somewhere!
Cheatsheet
Option | Type | Example/Default | Description | Possible values |
---|---|---|---|---|
title | str |
"Moja záverečná práca" |
thesis title | |
thesis | enum (str ) |
"bp2" |
type of your thesis | "bp1" , "bp2" , "dp1" , "dp2" , "dp3" |
author | str |
"Jožko Mrkvička" |
your name | |
supervisor | str or dictionary of array |
"prof. Jozef Mrkva, PhD." |
your supervisor | str if you have one supervisor, localized dictionary if many |
abstract | dict |
( sk: lorem(150), en: lorem(150) ) |
abstract in two languages | keys are the language, with str as values |
id | str |
"FIIT-12345-123456" |
id from AIS | |
lang | enum(str ) |
"en" |
language of your thesis | "sk" , "en" |
month | int |
5 |
month of the hand-in | 1-12 |
current-date | datetime |
datetime.today() |
declaration date and year of the work | |
acknowledgment | str or none |
"Omitted" |
thanks at the start of the thesis | |
assignment | path | none |
recommended to leave as default, see “How to insert the thesis assignment?” | |
tables-outline | bool |
false |
enable tables outline | |
figures-outline | bool |
false |
enable figures outline | |
abbreviations-outline | array |
( ("SSL", "Secure socket layer"), ... ) |
list of abbreviations, if you need one | |
disable-cover | bool |
false |
disable cover page (the first one) | |
style | enum (str ) |
regular |
select style of the document | "regular" , "legacy" , "compact" , "pagecount" , "legacy-noncompliant" |
Template
The template supports general customization options. First, you should choose
the language that you are writing this paper in using lang
argument.
Currently supported languages are listed at the top of this page. If you choose
an unsupported language, the template will generate a compile error.
Next, you should insert general info for your thesis: title
, author
, id
,
supervisor
. They are pretty straight-forward, so just write the correct data
into them. id
is your thesis ID number from the informational system.
supervisor
supports two options: either one supervisor’s name as a string,
or multiple supervisors with localization. The latter option is achieved using
a localized array of pairs. Example:
// ...
supervisor: (
sk: (
("Vedúci práce", "Ing. John Doe"),
("Fakultný vedúci", "prof. Jozef Mrkva, PhD."),
// ...
),
en: (
("Supervisor", "Ing. John Doe"),
("Faculty advisor", "prof. Jozef Mrkva, PhD."),
// ...
),
),
// ...
thesis
selects the type of your work. The allowed values are: bp1
, bp2
,
dp1
, dp2
, dp3
. These values control what text is displayed on the title
and cover pages. Sometimes, you might get an error while upgrading your thesis
to the final stage. Pay attention to those errors, as they tell you how exactly
your work should be structured.
abstract
is a dictionary of the translated abstracts that you provide with
your work. The keys are the language identifiers, like the lang
argument.
The values are the abstract text. en
and sk
keys are required for thesis
to compile. The template shows an example of how the dictionaries are created
in Typst.
acknowledgment
sets the acknowledgment text. You can write anything you want
here.
month
lets you select which month you hand in the thesis. For most people
it’s May (5), but if you selected the new format with an article, you may need
to choose a different month. Just pick a number and it will automatically
insert the correct month for you.
current-date
is Typst’s datetime
that tells when the declaration will be
signed, and which year the thesis is being written.
assignment
sets the assignment PDF file path. This isn’t the ideal way to
insert your assignment from AIS, see “How to insert the thesis assignment?”
table-outline
is a boolean, set it to true to enable list of tables.
figures-outline
enables list of figures (pictures).
abbreviations-outline
is an array of pairs, where each pair contains an
abbreviation and its explanation. If you leave this argument as default or
explicitly empty, the list of abbreviations will not show.
disable-cover
lets you disable the first (cover) page of the thesis. That’s
it.
style
selects the style of the document. The style affects mostly cosmetic
parameters. Here are the possible options:
regular
: the default, inspired by the LaTeX template, embraces the digital formatlegacy
: fully devoted to imitating the old LaTeX template, virtually no differencescompact
: tighter layout with less empty space wasted, useful if your thesis is longpagecount
: apply this one to estimate how many pages of pure text you gotlegacy-noncompliant
: don’t use this one. It uses the same citation standard (IEEE) that the old LaTeX template used, but it is not approved by FIIT STU
Appendices
To style the appendices correctly, you need to use a simple show
rule with a
special function: section-appendices
. Every heading you put after this will
be considered an appendix and numbered accordingly. You can add nested headings
as usual, they will be numbered and labeled correctly.
#show: section-appendices.with()
To reference the appendix, just use regular Typst referencing. The word “Appendix” will be inserted automatically with regard to your language of choice.
Resumé
The resumé chapter is a chapter that is needed only when you write your thesis
in a language other from Slovak. There is a special function for that:
resume
. Here’s how to use it:
#resume()[
#lorem(250) // any resume content should go here
]
Assertions
This template has integrated a few useful assertions that will help you to remember important points about your thesis. For example, if you forget to write a resumé and your language is set to English, the assertion will refuse all compilation attempts. This particular assertion is set only for BP2/DP3.
The assertion will give you a helpful error message. If for some reason, you think an assertion is wrong, please open an issue in our GitHub repository.
How to hand in the thesis?
To hand in the thesis, it needs to be separated into two parts, and your thesis assignment needs to be inserted into the final PDF.
How to separate the thesis?
The file needs to be separated into the main part, and the appendices part.
You can use external tools for that, or settle for Typst compiler arguments.
The --pages
argument to the CLI compiler can be used to specify which pages
should be rendered for the output. In the examples, we use page 29 as the first
appendix page.
Here’s an example how to split just your main part:
typst compile --pages=1-28 main.typ BP_JozkoMrkvicka.pdf
And your appendices part:
typst compile --pages=29- main.typ BP_prilohy_JozkoMrkvicka.pdf
How to insert the thesis assignment?
You might notice the warning page in the thesis right after you load the
template. This page can be removed by specifying an assignment file path. Typst
doesn’t support inserting PDFs into documents, but package muchpdf
partially
solves this issue. However, due to how it works (renders the PDF into an SVG),
we cannot recommend using this option. This rendering erases text data from
the PDF, and automated AIS tools most likely rely on those.
To get rid of the warning page, use external tools like pdfarrange
(GUI) and
pdftk
(CLI).
To develop the template, you should install Task. Here are the tasks that you can run:
push
: run this before pushingbuild
: compile the template examplewatch
: watch the template exampleopen
: open the template example in your system default viewerthumbnail
: compile the template thumbnailinstall-local
: install the package into @local namespaceuninstall-local
: uninstall the package from @local namespaceinstall-preview
: install the package into @preview namespaceuninstall-preview
: uninstall the package from @preview namespace
If you want to help, you can take a look at the GitHub issues in the template repository. If anything goes wrong, feel free to open a new issue or contact me directly.
If you have any questions, feel free to contact me: Sasetz