Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions packages/preview/minimalyst-academic-report/0.1.0/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*.pdf

.DS_Store
22 changes: 22 additions & 0 deletions packages/preview/minimalyst-academic-report/0.1.0/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
MIT License

Copyright (c) 2024 Gabriel Espindola
Copyright (c) 2026 Casemiro Melo

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
43 changes: 43 additions & 0 deletions packages/preview/minimalyst-academic-report/0.1.0/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# minimalyst-academic-report

This template is a modified version of [klaro-ifsc-sj](https://github.com/gabrielluizep/klaro-ifsc-sj) by [gabrielluizep](https://github.com/gabrielluizep/)

A *minimalyst* template for clean and organized academic reports.

Feel free to open issues in the repository!

## What does it look like?

| Cover | Table of Contents | Table of Figures | Content |
|---------------------------------------|-------------------------------------------|------------------------------------------|---------------------------------------|
| ![An example of cover](assets/thumbnail.png) | ![An example of a Table Of Contents](assets/ToC.png) | ![An example of Table Of Figures](assets/ToF.png) | ![An example of a page with Content](assets/content.png) |

## Usage

You can use this template in the Typst web app by clicking "Start from template"
on the dashboard and searching for `minimalyst-academic-report`.

Alternatively, you can use the CLI to pull this project using the command
```
typst init @preview/minimalyst-academic-report
```

Typst will create a new directory with all the files needed to get you started and the template will be in its newest version.

## Configuration

This template exports the `report` function with the following named arguments:

- `title`: The report's title as string. This is displayed at the center of the cover page.
- `subtitle`: The report's subtitle as string. This is displayed below the title at the cover page. It is an optional parameter.
- `authors`: The array of pairs *(name, number)* of authors. Each author is displayed on a separate line at the cover page. It is mandatory to have at least 1 author and only *name* is mandatory. The *number* parameter can be useful to show your student number.
- `font`: Font to be used in the report. Since it is an optional parameter, if none is passed it fallsback to *Liberation Sans* or *Libertinus Serif*, depending on [`sans` flag](#param-sans)
- `font-size`: Font size to be used in the report text (headings are not included in this). Default is *11pt*.
- `lang`: Languague in which the document is written. Default is *en*.
- `date`: The date of the last revision of the report as a string. This is displayed at the bottom of the cover page. It is an optional parameter.
- <a id="param-sans"></a>`sans`: A flag that determines if you want to use a *sans-serif* font or a *serif* font. Only applicable if no preferred font is passed. Default is *true*.
- `cover-image`: An *image()* object to determine the image that will be showcased in the cover. Useful for putting your university logo. You most likely will need to use the *width* parameter to fix the image size. It is an optional parameter.
- `paper`: Paper format to output the document. Default is *a4*.
- `line-spacing`: Determine the space between lines. Default is *1*.
- `table-of-contents`: A Flag to determine whether the author wants a Table of Contents or not. Default is *true*.
- `table-of-figures`: A Flag to determine whether the author wants a Table of Figures or not. Default is *false*.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
feup.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
148 changes: 148 additions & 0 deletions packages/preview/minimalyst-academic-report/0.1.0/lib.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
#let report(
title: "A Report Template",
subtitle: "",
authors: (
(
name: "John Doe",
number: "",
),
),
font: "",
font-size: 11pt,
lang: "en",
date: "",
sans: true,
cover-image: none,
paper: "a4",
line-spacing: 1,
table-of-contents: true,
table-of-figures: false,
doc,
) = {

// metadata
set document(title: title, author: authors.map(a => a.name))

set text(
font:
if (font != "") {
font
} else {
if sans {"Liberation Sans"} else {"Libertinus Serif"}
}
,
size: font-size,
lang: lang,

ligatures: false
)

// COVER

set page(
numbering: none,
paper: paper,
)

set par(
first-line-indent: (amount: 0.5in, all: true),
justify: true,
leading: line-spacing*0.65em,
spacing: 0.65em,
linebreaks: "optimized",
)

set block(spacing: 1.2em)

set heading(numbering: "1.")
set math.equation(numbering: "(1)")
set figure(numbering: "(1)")

show heading: set block(below: 1em)

show ref: it => highlight(fill: rgb("fff3a1"), it)

if cover-image != none {
align(top + left)[
#cover-image
]
}

align(horizon + center)[
#text(24pt, title, weight: "bold")
#v(0.3em)
#text(12pt, subtitle, weight: "regular")
]

v(12em, weak: true)
align(horizon + center)[
#text(
weight: "semibold",
list(
marker: "",
body-indent: 0pt,
..authors.map(a => if a.number != none { [#columns(2, gutter: -10cm)[#a.name #colbreak() #a.number]] } else { a.name }),
)
)
]

if date != "" [#align(center + bottom)[#text(date)]]

pagebreak()

// OTHER PAGES

set footnote.entry(separator: none)
show footnote.entry: set text(size: 0.8em, fill: rgb(0, 0, 0, 80%))

let footer = context [
#line(length: 100%)
#set text(0.8em,)

#grid(
columns: (1fr, auto),
align: (horizon + left, horizon + right),

text(fill: rgb(0, 0, 0, 60%))[#title -- #subtitle],
counter(page).display()
)

]

set page(
footer: footer
)

// TABLE OF CONTENTS
if table-of-contents == true {
{
set par(first-line-indent: 0pt)

show outline.entry.where(level: 1): it => {
v(1em, weak: true)
strong(it)
}

outline(title: [Table of Contents #v(1em)], indent: auto,)

pagebreak()
}
}

// TABLE OF FIGURES
if table-of-figures == true {
{
set par(first-line-indent: 0pt)

outline(
title: [Table of Figures #v(1em)],
target: figure.where(kind: image),
indent: auto,
)
}

pagebreak()
}

doc
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#import "@preview/minimalyst-academic-report:0.1.0": report
// #import "@local/minimalyst-academic-report:0.1.0": report

#show: doc => report(
title: "Academic Template",
subtitle: "A clean template for reports",
// if a single author, leave a comma ate the ending to ensure it is an array
authors: (
(name: "John Doe", number: "424242"),
(name: "Jane Doe", number: "424242")
),
table-of-contents: true,
table-of-figures: true,
cover-image: (rect(
fill: blue,
width: 30%,
height: 5em,
stroke: (dash: "dashed"))[
#set align(center + horizon)
REPLACE THIS WITH YOUR IMAGE
]
),
date: "02 April 2026",
doc,
)

= Soft
== Close
=== Closest
@hard: #lorem(80)

== Softest

#lorem(80)

== Softest

#lorem(80)

= Hard <hard>

#lorem(80)

== Hardest

#lorem(80)
16 changes: 16 additions & 0 deletions packages/preview/minimalyst-academic-report/0.1.0/typst.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[package]
name = "minimalyst-academic-report"
version = "0.1.0"
compiler = "0.10.0"
entrypoint = "lib.typ"
repository = "https://github.com/casemiromjm/report-template"
authors = ["casemiromjm <https://casemiromjm.me>"]
license = "MIT"
description = "A minimalyst report template for Typst"
keywords = ["feup", "academic", "report", "clean", "university"]
categories = ["report"]

[template]
path = "template"
entrypoint = "main.typ"
thumbnail = "assets/thumbnail.png"
Loading