v

vintage-fiit-thesis

@preview

Bachelor's or master's thesis at Faculty of Informatics and Information Technologies (FIIT), STU

v1.1.1
MIT-0
Template

Package Information

Last Updated
Authors
Sasetz
Categories
thesis
Disciplines
education

Preview

Template preview

1. Get the package

Download the package using the TPIX CLI:

tpix get @preview/vintage-fiit-thesis:1.1.1

2. Initialize from template

Create a new project from this template:

typst init @preview/vintage-fiit-thesis:1.1.1

Version History

1.1.1
c677888ccc22...
1.1.0
951036dc4aae...
1.0.0
564bb08ed87a...

Faculty of Informatics and Information Technologies (FIIT) Thesis Template


This is a Typst template for writing bachelor's and master's thesis 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 December 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:

Showcase

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
Legacy style of the template, resized to an A6 paper sheet. Legacy style of the template, resized to an A6 paper sheet. Legacy style of the template, resized to an A6 paper sheet. Legacy style of the template, resized to an A6 paper sheet. Legacy style of the template, resized to an A6 paper sheet. Legacy style of the template, resized to an A6 paper sheet.

Usage

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

  1. Install Typst.
    If you're on Linux, it should be pretty easy.
  1. Next, initialize the template using:
typst init @preview/vintage-fiit-thesis
  1. Start watching the changes of your thesis using:
typst watch main.typ --watch
  1. 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
department enum(str) "upai" department of your thesis "upai", "iise"
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 content none 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.
department determines which department you work from. Usually it's UPAI
("upai"), but you can also change it to "iise".

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 content. This is the recommended way to
insert your AIS assignment, 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 format
  • legacy: fully devoted to imitating the old LaTeX template, virtually no differences
  • compact: tighter layout with less empty space wasted, useful if your thesis is long
  • pagecount: apply this one to estimate how many pages of pure text you got
  • legacy-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

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

If you're not using a local Typst setup, use external tools to separate the
thesis into multiple parts. We can recommend pdfarrange (GUI) and pdftk
(CLI).

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 your thesis assignment. Typst
supports importing PDFs as images as of version 0.14.0, including the
embedded text. Since version 1.1.0 of this template, you can use assignment
option to specify your assignment from AIS. You can download it from the
thesis' page, choose the print option. Assignment should be passed like this:
assignment: image("topic.pdf"). Ensure it is exactly one page! If you are
using an older Typst version, you'll have to use external tools to insert the
assignment.

Developing

To develop the template, you should install Task. Here
are the tasks that you can run:

  • push: run this before pushing
  • build: compile the template example
  • watch: watch the template example
  • open: open the template example in your system default viewer
  • thumbnail: compile the template thumbnail
  • install-local: install the package into @local namespace
  • uninstall-local: uninstall the package from @local namespace
  • install-preview: install the package into @preview namespace
  • uninstall-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.

Changelog

v1.1.1

  • added department

v1.1.0

  • replaced muchpdf assignment rendering with Typst's 0.14 PDF image rendering. Now it is the preferred way to include assignments
  • the template now requires Typst 0.14
  • added binding to all styles, as per the new requirements
  • chapters now always start on new odd pages, as per the new requirements
  • empty pages do not contain page number, as per the new requirements
  • fixed annotation localization
  • various formatting fixes and compliance improvements (thanks @Ddystopia)

Contact

If you have any questions, feel free to contact me: Sasetz