From 2bca935b19969ce3ef5fe5bdca8f857a2b857321 Mon Sep 17 00:00:00 2001 From: Gaspard Jankowiak Date: Tue, 12 May 2026 10:03:39 +0200 Subject: [PATCH] import --- README.md | 27 +++++++++++ src/lib.typ | 92 ++++++++++++++++++++++++++++++++++++ src/logos/kfulogo_claim.pdf | Bin 0 -> 16288 bytes template/letter.typ | 38 +++++++++++++++ typst.toml | 22 +++++++++ 5 files changed, 179 insertions(+) create mode 100644 README.md create mode 100644 src/lib.typ create mode 100644 src/logos/kfulogo_claim.pdf create mode 100644 template/letter.typ create mode 100644 typst.toml diff --git a/README.md b/README.md new file mode 100644 index 0000000..cd45fa1 --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +# Typst unofficial KFU letter template + +![thumbnail](thumbnail.png) + +## Installation (Linux only) + +#### Using [`typship`](https://github.com/sjfhsjfh/typship) + +```bash +typship download -n local https://imsc.uni-graz.at/git/gjankowiak/typst-kfu-letter +``` + +#### Manually + +```bash +mkdir -p ~/.local/share/typst/packages/local/kfu-letter/ +cd ~/.local/share/typst/packages/local/kfu-letter/ +curl https://imsc.uni-graz.at/git/gjankowiak/typst-kfu-letter/archive/0.1.0.tar.gz | tar zx --xform 's/typst-kfu-letter/0.1.0/' +``` + +## Quickstart (CLI) + +```sh +typst init @local/kfu-letter letter +``` + +Tested typst version: `0.14.2`. diff --git a/src/lib.typ b/src/lib.typ new file mode 100644 index 0000000..39ec0f7 --- /dev/null +++ b/src/lib.typ @@ -0,0 +1,92 @@ + +#let letter( +lang: "de", + +place: "Graz", +date: "01. April 1970", + +title: "Dr.", +firstname: "John", +lastname: "Doe", + +departement: [Institut für Mathematik und Wissenschaftliches Rechnen], + +address: "Heinrichstraße 36, 8010 Graz", + +phone: 1234, + + +homepage: "https://imsc.uni-graz.at/doe", + +subject: [Der Betreff eines Schreibens sollte in einer Zeile gut Platz finden.], + +signature: none, +body:none, +firstpage +) = [ + +#set text(font:"Nunito Sans", lang: lang) + +#let email = [#firstname.#lastname\@uni-graz.at] + +#let signature_block = [ + #if signature != none { + signature + } else [ + #v(2em) + Mit freundlichen Grüßen + + #title #firstname #lastname + ] +] + +#let senderinfo = align(right)[ + #set text(8pt) + *Universität Graz* \ + *#departement* \ + #title #firstname #lastname \ + #address \ + +43 (0)316 / 380-#phone | #email \ + #homepage] + +#set page( + margin: (bottom: 5.23cm), + footer: [ + #set text(8pt) + #grid(columns:(auto, 1fr, auto), + align(bottom)[#context{ counter(page).display("1/1", both: true) }], + [], + senderinfo) +]) + +#page( + margin: auto, + footer: context { + set text(8pt) + if counter(page).final().at(0) > 1 { counter(page).display("1/1", both: true) } + })[#align(right)[#image("logos/kfulogo_claim.pdf", height: 2cm)] + +Name/Institution \ +Abteilung \ +Titel Vorname Nachnamen \ +Adresse \ +PLZ Ort + +#senderinfo +#align(right)[#place, #date] + +*#subject* + +#firstpage + +#if body == none [ + #signature_block +] +] + +#if body != none [ +#body + +#signature_block +] +] diff --git a/src/logos/kfulogo_claim.pdf b/src/logos/kfulogo_claim.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1ed510049609fe19d263d9a629195500d1d90c8c GIT binary patch literal 16288 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 s#?A^72k~%9vWl^Y3;ypMdQZSmCy0?F