From 9b6fd2ed04e75c8454b59b9cea5d3019a6489b3d Mon Sep 17 00:00:00 2001 From: Ernesto Martinez Garcia Date: Mon, 8 Sep 2025 13:29:00 +0200 Subject: [PATCH] release 1.0.1 - Show more options in the default template - Fix README visualization in typst universe --- 1.0.1/README.md | 66 +++ 1.0.1/src/assets/tuglogo.svg | 47 +++ 1.0.1/src/helper.typ | 59 +++ 1.0.1/src/lib.typ | 714 ++++++++++++++++++++++++++++++++ 1.0.1/src/logos.typ | 40 ++ 1.0.1/template/bibliography.bib | 13 + 1.0.1/template/slides.typ | 62 +++ 1.0.1/thumbnail.png | Bin 0 -> 65840 bytes 1.0.1/typst.toml | 17 + 9 files changed, 1018 insertions(+) create mode 100644 1.0.1/README.md create mode 100644 1.0.1/src/assets/tuglogo.svg create mode 100644 1.0.1/src/helper.typ create mode 100644 1.0.1/src/lib.typ create mode 100644 1.0.1/src/logos.typ create mode 100644 1.0.1/template/bibliography.bib create mode 100644 1.0.1/template/slides.typ create mode 100644 1.0.1/thumbnail.png create mode 100644 1.0.1/typst.toml diff --git a/1.0.1/README.md b/1.0.1/README.md new file mode 100644 index 0000000..7e5c66a --- /dev/null +++ b/1.0.1/README.md @@ -0,0 +1,66 @@ +# Typst ISEC Slides Template + +An opinionated version of the ISEC slides template made in Typst. Easily configurable for other institutes or organizations. + +Author: Ernesto Martínez García <[ecomaikgolf.com](https://ecomaikgolf.com)> + +Tested typst version: `0.13.1`. + +> [!NOTE] +> If you are an ISEC or TUGraz employee and think that `isec-slides` or +> `tugraz-slieds` fits more, I would need an approval to allocate the name :) + +Need a thesis? Check out the sibling package [definitely-not-isec-thesis](https://typst.app/universe/package/definitely-not-isec-thesis) + +## Contributing + +Contribute to the template in the [upstream repository](https://github.com/ecomaikgolf/typst-isec-slides-template) + +Check for [open issues](https://github.com/ecomaikgolf/typst-isec-slides-template/issues) + +## Design +--- +![title](https://github.com/user-attachments/assets/d29f53ff-0622-45fe-9727-7d286e8d15b1) + +--- +![list](https://github.com/user-attachments/assets/27dc198d-714d-4ed6-ad2e-f39babcf4fce) + +--- +![listimage](https://github.com/user-attachments/assets/b16cb69b-c9a1-4f50-8fd5-e7c3b0a97617) + +--- +![standout](https://github.com/user-attachments/assets/179960f4-e909-4856-8aba-6beb7a91e3c5) + +--- +![colors](https://github.com/user-attachments/assets/312a013e-fd89-4b6a-921b-bbfe9f4fa565) + +--- +![features]https://github.com/user-attachments/assets/1f3cd158-3860-4962-9802-7fc22d4b94a1) + +--- +![code](https://github.com/user-attachments/assets/508abb37-8224-4ef8-9424-2f367981b91f) + +--- +![blocks](https://github.com/user-attachments/assets/e4214dc0-f434-40d2-b1fa-0463ef18d9b7) + +--- +![plots](https://github.com/user-attachments/assets/605a3bab-c040-4932-9777-03dffabb3a9f) + +--- +![configurable](https://github.com/user-attachments/assets/310a25e2-981c-40b3-bbcb-fc243cbb5983) + +--- +![blank](https://github.com/user-attachments/assets/7533e702-bba3-4462-add2-f2fbe1e50a20) + +--- +![bibliography](https://github.com/user-attachments/assets/6ad78bf1-8af1-43c3-ad15-192fdfd42aff) + +## License `src/assets/tuglogo.svg` + +According to Wikipedia: + +> This logo image consists only of simple geometric shapes or text. It does not +> meet the threshold of originality needed for copyright protection, and is +> therefore in the public domain. [...] + +https://en.m.wikipedia.org/wiki/File:TU_Graz.svg diff --git a/1.0.1/src/assets/tuglogo.svg b/1.0.1/src/assets/tuglogo.svg new file mode 100644 index 0000000..e5d11af --- /dev/null +++ b/1.0.1/src/assets/tuglogo.svg @@ -0,0 +1,47 @@ + + + + + + + + + + diff --git a/1.0.1/src/helper.typ b/1.0.1/src/helper.typ new file mode 100644 index 0000000..6dd9606 --- /dev/null +++ b/1.0.1/src/helper.typ @@ -0,0 +1,59 @@ +// -------------------------------------------------------------------------- +// Extra helper functions + +// Fix for typst #311 "Behavior of first line indentation in paragraphs ..." +// https://github.com/typst/typst/issues/311#issuecomment-2023038611 +// https://forum.typst.app/t/how-to-indent-paragraphs-following-a-list-without-affecting-the-paragraph-after-a-heading/4210?u=fungai2000 +#let fix-311 = context { + set par.line(numbering: none) + v(0pt, weak: true) + par(none) +} + +#let content-to-string(content) = { + if content.has("text") { + content.text + }else if content.has("child") { + content-to-string(content.child) + } else if content.has("children") { + content.children.map(content-to-string).join("") + } else if content.has("body") { + content-to-string(content.body) + } else if content == [ ] { + " " + } +} + +#let content-to-string-omit(content) = { + if content.has("text") { + content.text + }else if content.has("child") { + content-to-string-omit(content.child) + } else if content.has("children") { + content.children.map(content-to-string-omit).join("") + } else if content.has("body") { + content-to-string-omit(content.body) + } else if content == [ ] { + " " + } else { + "..." + } +} + +// partitle simulates \paragraph{title} (more or less) +#let partitle(title: [Title], body) = context [ + #block(above: 0.8cm)[ + *#title.* #h(0.3cm) #body + ] + #fix-311 +] + +// Wrapper for the technique shown here: +// https://typst.app/docs/reference/layout/layout/ +#let measure-text-height(body) = { + layout(size => { + let (height,) = measure(width: size.width, body) + return height + }) +} + +//vim:tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab colorcolumn=81 diff --git a/1.0.1/src/lib.typ b/1.0.1/src/lib.typ new file mode 100644 index 0000000..c996a54 --- /dev/null +++ b/1.0.1/src/lib.typ @@ -0,0 +1,714 @@ +#import "@preview/touying:0.6.1": * + +// Project +#import "helper.typ": * +#import "logos.typ": * + +// Core Imports +#import "@preview/codly:1.3.0": * // For bindings +#import "@preview/cetz:0.4.1" // For bindings +#import "@preview/fletcher:0.5.8" as fletcher: edge, node // For bindings +#import "@preview/tiaoma:0.3.0" // For auto QR generation + +// Styling Macro Imports +#import "@preview/showybox:2.0.4": showybox + +// ----------------------------------------------------------------------------- +// General Config +// ----------------------------------------------------------------------------- + +// Touying bindings for cetz +#let cetz-canvas = touying-reducer.with( + reduce: cetz.canvas, + cover: cetz.draw.hide.with(bounds: true), +) + +// Touying bindings for fletcher +#let fletcher-diagram = touying-reducer.with( + reduce: fletcher.diagram, + cover: fletcher.hide, +) + +// ----------------------------------------------------------------------------- +// Slide Types +// ----------------------------------------------------------------------------- + +/// Normal slide for the presentation, with title (header) and footer +/// +/// Example: +/// +/// ```typst +/// #slide(title: [Slide Title])[ +/// #lorem(20) +/// ] +/// ``` +/// +/// - title (content): Title for the slide +/// - alignment (alignment): Alignment of the contents of the slide +/// - outlined (boolean): If the slide shows on the PDF ToC +/// +/// -> content +#let slide( + title: auto, + alignment: none, + outlined: true, + ..args, +) = touying-slide-wrapper(self => { + let info = self.info + args.named() + + // Header: + // --------------------------------------------------------------------------- + // [ ] Slide Title [ ] Logo [ ] + // --------------------------------------------------------------------------- + let header(self) = { + // Slide Title: if the user overrides the title of a certain slide, use it + let hdr = if title != auto { title } else { self.store.header } + + show heading: set text(size: 24pt, weight: "semibold") + + grid( + columns: (self.page.margin.left, 1fr, 1cm, auto, 1.2cm), + block(), + heading(level: 1, outlined: outlined, hdr), + block(), + move(dy: -0.31cm, institute-logo(self)), + block(), + ) + } + + // Footer: + // --------------------------------------------------------------------------- + // Slide Number [ ] First Author + // --------------------------------------------------------------------------- + let footer(self) = context { + set block(height: 100%, width: 100%) + set text(size: 15pt, fill: self.colors.footer) + + grid( + columns: (self.page.margin.bottom - 1.68%, 1.3%, auto, 1cm), + block(fill: self.colors.primary)[ + #set align(center + horizon) + #set text(fill: white, size: 12pt) + #utils.slide-counter.display() + ], + block(), + block[ + #set align(left + horizon) + #set text(size: 13pt) + #info.at("footer", default: "") + ], + block(), + ) + + // Progress bar + if self.store.progress-bar { + place(bottom + left, float: true, + move(dy: 1.05cm, // Bad solution, I know + components.progress-bar( + height: 3pt, + self.colors.primary, + white, + ) + ) + ) + } + } + + let self = utils.merge-dicts(self, config-page( + header: header, + footer: footer, + )) + + set align( + if alignment == none { + self.store.default-alignment + } else { + alignment + } + ) + + touying-slide(self: self, ..args) +}) + +/// Title slide for the presentation +/// +/// Example: +/// +/// ```typst +/// #title-slide() +/// ``` +/// +/// -> content +#let title-slide(..args) = touying-slide-wrapper(self => { + let info = self.info + args.named() + let body = { + let footer-isec = [ + #set text(size: 13.3pt, weight: "medium") + + #let arrow-icon = [ + #move(dy: -0.05cm, dx: -0.05cm, rotate(45deg, square( + fill: none, + size: 0.18cm, + stroke: ( + "top": self.colors.primary + 1.35pt, + "bottom": none, + "right": self.colors.primary + 1.35pt, + "left": none, + ), + ))) + ] + + #v(-0.5cm) + #box(arrow-icon) #h(0.1cm) #self.store.institute + ] + + set page(footer: footer-isec, header: none) + set block(below: 0pt, above: 0pt) + + // Top-right icon + text + place(top + right, dy: -1.9cm, dx: 0.78cm, [ + #self.store.logo + ]) + + v(0.8cm) + + block(width: 83%)[ + #let title = text(size: 40.5pt, weight: "bold")[#info.at( + "title", + default: "", + )] + + #move(dx: 0.04em)[ + #grid( + columns: (0.195cm, auto), + column-gutter: 0.7cm, + context [ + #let s = measure(title) + #move(dy: -0.4cm, rect( + fill: self.colors.primary, + height: s.height + 0.65cm, + )) + ], + title, + ) + ] + ] + + v(0.6cm) + + block(width: 70%)[ + #text( + size: 28.3pt, + fill: self.colors.primary, + weight: "bold", + )[#info.subtitle] + ] + + v(1.48cm) + + block(width: 70%)[ + #set text(size: 19pt) + #if type(info.authors) == array [ + #for author in info.authors [ + #author #h(1.1em) + ] + ] else [ + #info.authors + ] + ] + + v(0.95cm) + + block(width: 70%)[ + #info.extra + ] + + if ( + self.info.at("download-qr", default: none) != none + and self.info.at("download-qr", default: none) != "" + ) { + place(bottom + right)[ + #align(center + horizon)[ + #let s = 4.9cm + #tiaoma.qrcode(self.info.download-qr, width: s, height: s) + ] + ] + } + } + + touying-slide(self: self, body) +}) + +/// Standout slide for the presentation +/// +/// Example: +/// +/// ```typst +/// #standout-slide(title: [Text]) +/// ``` +/// +/// - title (content): Title for the standout slide +/// +/// -> content +#let standout-slide( + title: none, + ..args, +) = touying-slide-wrapper(self => { + let body = { + set align(center + horizon) + set text(size: 28pt) + if title != none { + move(dy: -2.08cm)[ + #text(weight: "semibold")[#title] + ] + } + } + + let self = utils.merge-dicts(self, config-page( + header: none, + footer: none, + )) + + //counter("touying-slide-counter").update(n => if n > 0 { n - 1 } else { 0 }) + + touying-slide(self: self, body, ..args) +}) + +/// Section slide for the presentation +/// +/// Example: +/// +/// ```typst +/// #section-slide(title: [Section A], subtitle: [Subtitle]) +/// ``` +/// +/// - title (content): Title for the section +/// - subtitle (content): Subtitle for the section +/// +/// -> content +#let section-slide( + title: none, + subtitle: none, + ..args, +) = touying-slide-wrapper(self => { + let body = { + align(center + horizon)[ + #move(dy: -0.4cm)[ + #if title != none [ + #text(size: 36pt, weight: "semibold")[#title] + ] + + #if subtitle != none [ + #text(size: 20pt)[#subtitle] + ] + ] + ] + } + + let self = utils.merge-dicts(self, config-page( + header: none, + footer: none, + )) + + touying-slide(self: self, body, ..args) +}) + +/// Blank slide for free content in the presentation +/// +/// Example: +/// +/// ```typst +/// #blank-slide[ +/// #align(center + horizon)[#lorem(5)] +/// ] +/// ``` +/// +/// -> content +#let blank-slide( + ..args, + body, +) = touying-slide-wrapper(self => { + let body = { + align(center + horizon)[ + #body + ] + } + + let self = utils.merge-dicts(self, config-page( + header: none, + footer: none, + margin: 0pt, + )) + + touying-slide(self: self, body, ..args) +}) + +// ----------------------------------------------------------------------------- +// Main Function +// ----------------------------------------------------------------------------- + +/// Theme cofniguration +/// +/// Example: +/// +/// ```typst +/// #show: definitely-not-isec-theme.with( +/// aspect-ratio: "16-9", +/// slide-alignment: top, +/// config-info( +/// title: [Long Paper Title \ with One to Three Lines], +/// subtitle: [An optional short subtitle], +/// authors: ([*First Author*], [Second Author], [Third Author]), +/// extra: [SomeConf 2025], +/// footer: [First Author, Second Author, Third Author], +/// download-qr: "", +/// ), +/// config-common( +/// handout: false, +/// ), +/// config-colors( +/// ), +/// ) +/// ``` +/// +/// - aspect-ratio (str): Aspect ratio for the page. See typst documentatin. +/// - slide-alignemnt (alignment): Default alignment for `#slide()` +/// - config-info (dict): +/// - title (content): Title for the presentation +/// - subtitle (content): Subtitle for the presentation +/// - authors (array): Arrray of authors (content) +/// - extra (content): Extra information for the presentation +/// - footer (content): Footer for each `#slide()` +/// - download-qr (str): URL to show on `#title-slide()` with a QR +/// - config-common (dict): +/// - handout (bool): Boolean for handout mode +/// - config-colors (dict): Colors for the presentation +/// - ... see definition of `#definitely-not-isec-theme` +#let definitely-not-isec-theme( + aspect-ratio: "16-9", + header: utils.display-current-heading(level: 1), + font: "Open Sans", + institute: [isec.tugraz.at], + logo: tugraz-logo, + slide-alignment: top, + progress-bar: true, + ..args, + body, +) = { + // Touying configuration + show: touying-slides.with( + config-page( + paper: "presentation-" + aspect-ratio, + margin: ( + left: 1.49cm, + right: 1.48cm, + top: 2.6cm, + bottom: 1.6cm, + ) + ), + config-store( + header: header, + font: font, + institute: institute, + logo: logo, + default-alignment: slide-alignment, + progress-bar: progress-bar, + ), + config-common( + slide-fn: slide, + new-section-slide-fn: none, + preamble: { + codly( + display-name: false, + display-icon: false, + radius: 0pt, + stroke: 1pt + black, + smart-indent: true, + fill: luma(260), + zebra-fill: luma(250), + number-format: number => [#text(size: 12pt, fill: gray)[#number]], + number-align: right + horizon, + breakable: true, + ) + } + ), + config-colors( // Exported from official template + tug: rgb("e4154b"), + primary: rgb("e4154b"), + footer: rgb("808080"), + isec: rgb("272733"), + foot: rgb("e1e1e1"), + web: rgb("0c5a77"), + csbme: rgb("19b4e3"), + arch: rgb("0a98a2"), + bauw: rgb("d68e23"), + etec: rgb("68242c"), + mach: rgb("3066ba"), + chem: rgb("5e60a8"), + math: rgb("1e6934"), + crypto: rgb("a6c947"), + system: rgb("1171a8"), + formal: rgb("f7931e"), + applied: rgb("7d219e"), + page: rgb("e4154b"), + fore: rgb("0f0f0f"), + back: rgb("ffffff"), + dark: rgb("3b5a70"), + lite: rgb("eeece1"), + head: rgb("245b78"), + body: rgb("e2e9ed"), + urlA: rgb("0066d8"), + urlB: rgb("6c2f91"), + colA: rgb("e4154b"), + colB: rgb("5191c1"), + colC: rgb("a5a5a5"), + colD: rgb("285f82"), + colE: rgb("78b473"), + colF: rgb("e59352"), + tugred: rgb("e4154b"), + tuggreen: rgb("78b473"), + tugblue: rgb("285f82"), + tugyellow: rgb("e59352"), + tugcyan: rgb("19b4e3"), + tugpurple: rgb("7d219e"), + tugviolet: rgb("5e60a8"), + tugmagenta: rgb("7d219e"), + tugturquoise: rgb("0a98a2"), + tugbrown: rgb("68242c"), + tugblack: rgb("0f0f0f"), + tugwhite: rgb("ffffff"), + tuggray: rgb("a5a5a5"), + tuggrey: rgb("a5a5a5"), + tugdark: rgb("3b5a70"), + tugmid: rgb("5191c1"), + tuglite: rgb("eeece1"), + main: rgb("e4154b"), + emph: rgb("285f82"), + standout: rgb("245b78"), + ), + config-methods( + cover: (self: none, body) => hide(body), + init: ( + self: none, + body, + ) => { + // TUGraz uses Source Sans Pro, but its a licensed Adobe font + set text(size: 20pt, lang: "en", region: "US", font: font) + show emph: it => { text(self.colors.primary, it.body) } + show cite: it => { text(self.colors.primary, it) } + show strong: it => { text(weight: "bold", it.body) } + + // Bibliography + set bibliography(title: none, style: "ieee") + set cite(style: "alphanumeric") + show bibliography: set par(spacing: 0.4cm) + show bibliography: set grid(align: top + left) + show bibliography: set text(17pt) + show bibliography: t => { + show grid.cell.where(x: 0): set text(fill: self.colors.primary) + show grid.cell.where(x: 0): set align(top + left) + show link: set text(fill: gray) + t + } + + // Lists & Enums + set list( + marker: ( + (move(dy: 0.11cm, square(width: 0.4em, height: 0.4em, fill: self.colors.primary))), + (move(dy: 0.11cm, square(width: 0.4em, height: 0.4em, fill: black))), + (move(dy: 0.11cm, square(width: 0.4em, height: 0.4em, fill: gray))), + ), + body-indent: 1.2em, + ) + set enum( + numbering: n => { + square(stroke: none, fill: self.colors.primary, size: 0.53cm)[ + #align(center + horizon)[ #text(size: 12pt, fill: white)[#n] ] + ] + }, + body-indent: 0.6cm + ) + + // Code blocks + show: codly-init.with() + show raw.where(block: true): set text(size: 13pt) + + // Hotfixes, the messy part + + // https://github.com/touying-typ/touying/issues/136 + set par(spacing: 0.65em) + + body + }), + ..args, + ) + + body +} + +// ----------------------------------------------------------------------------- +// Macros +// ----------------------------------------------------------------------------- + +/// Macro for a pdfpc note +/// +/// Example: +/// +/// ```typst +/// #note("This will show on pdfpc speaker notes") +/// ``` +/// +/// - text (str): Note for pdfpc +/// +/// -> content +#let note(text) = [ + #pdfpc.speaker-note(text) +] + +/// Quote block for phrases. Has a color.primary rectangle in the left +/// +/// Example: +/// +/// ```typst +/// #quote-block[ +/// #lorem(10) +/// ] +/// ``` +/// +/// - top-pad (length): Extra height of the quote colored block +/// - color (color): Color of the quote block +/// - spacing (length): Spacing after the `#quote-block` +/// +/// -> content +#let quote-block( + top-pad: 0.55cm, + color: none, + spacing: 0.3cm, + body, +) = [ + #touying-fn-wrapper((self: none) => [ + // Grid with the design + #let g(s: 0cm, body) = [ + #grid( + columns: (0.195cm, auto), + column-gutter: 0.7cm, + row-gutter: 0cm, + [ + #rect( + fill: if color == none { self.colors.primary } else { color }, + height: s + top-pad, + ) + ], + align(horizon, body), + ) + ] + + // We compute its "auto" heigth and then print it with the correct height + #layout(size => { + let (height,) = measure(width: size.width, g(body)) + g(s: height, body) + }) + + #v(spacing) + ]) +] + +/// Block with title and content +/// +/// Example: +/// +/// ```typst +/// #color-block(title: [Advantages])[ +/// - A +/// - B +/// - C +/// ] +/// ``` +/// +/// - title (content): Title for the color block +/// - icon (str): Icon to show at the left of the title (Tableau Icons) https://tabler.io/icons +/// - spacing (length): Spacing before and after the color block +/// - color (color): Color for the title block +/// - color-body (color): Color for the background of the body +/// +/// -> content +#let color-block( + title: [], + icon: none, + spacing: 0.78em, + color: none, + color-body: none, + body +) = [ + #import "@preview/tableau-icons:0.331.0": * + #touying-fn-wrapper((self: none) => [ + #show emph: it => { + text(weight: "medium", fill: self.colors.primary, it.body) + } + + #showybox( + title-style: ( + color: white, + sep-thickness: 0pt, + ), + frame: ( + //inset: 0.4em, + radius: 0pt, + thickness: 0pt, + border-color: if color == none { self.colors.primary } else { color }, + title-color: if color == none { self.colors.primary } else { color }, + body-color: if color-body == none { self.colors.lite } else { color-body }, + inset: (x: 0.55em, y: 0.65em), + ), + above: spacing, + below: spacing, + title: if icon == none { + align(horizon)[#strong(title)] + } else { + align(horizon)[ + #draw-icon(icon, height: 1.2em, baseline: 20%, fill: white) #h(0.2cm) #strong[#title] + ] + }, + body, + ) + ]) +] + +/// Showcase the colors of the slide +/// +/// Example: +/// +/// ```typst +/// #showcase-colors +/// ``` +/// +/// -> content +#let showcase-colors = [ + #touying-fn-wrapper((self: none) => [ + #set rect(width: 7.4cm, height: 1.5cm) + #set text(fill: white) + #set align(center) + #grid(columns: 3, rows: 6, column-gutter: 1.8cm, row-gutter: 0.05cm, align: left, + rect(fill: self.colors.isec)[isec], + rect(fill: self.colors.tug)[tug = main], + rect(fill: self.colors.colA)[colA = tugred], + rect(fill: self.colors.csbme)[csbme = tugcyan], + rect(fill: self.colors.fore)[fore], + rect(fill: self.colors.colB)[colB = tugmid], + rect(fill: self.colors.crypto)[crypto], + rect(fill: self.colors.back)[#text(fill: black)[back]], + rect(fill: self.colors.colC)[colC = tuggray], + rect(fill: self.colors.system)[system], + rect(fill: self.colors.foot)[#text(fill: black)[foot]], + rect(fill: self.colors.colD)[colD = tugblue], + rect(fill: self.colors.formal)[formal], + rect(fill: self.colors.emph)[emph], + rect(fill: self.colors.colE)[colE = tuggreen], + rect(fill: self.colors.applied)[applied = tugpurple], + rect(fill: self.colors.lite)[#text(fill: black)[lite]], + rect(fill: self.colors.colF)[colF = tugyellow], + ) + ]) +] + +//vim:tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab colorcolumn=81 diff --git a/1.0.1/src/logos.typ b/1.0.1/src/logos.typ new file mode 100644 index 0000000..308e751 --- /dev/null +++ b/1.0.1/src/logos.typ @@ -0,0 +1,40 @@ +#let institute-logo(self) = [ + #block[ + #text(size: 13.5pt, weight: "medium")[#self.store.institute] + #h(0.1cm) + #box(inset: 0pt, outset: 0pt)[#square( + width: 0.3cm, + height: 0.3cm, + outset: 0pt, + inset: 0pt, + stroke: none, + fill: self.colors.primary, + )] + ] +] + +#let tugraz-logo = [ + #set align(right) + #set text(size: 12pt, tracking: 3.6pt) + + #image("assets/tuglogo.svg", width: 4.1cm) + + #v(0.13cm) + + #move(dx: -0.07cm)[ + SCIENCE + ] + + #v(0.65em) + + #move(dx: -0.03cm)[ + PASSION + ] + + #v(0.65em) + + #move(dx: -0.06cm)[ + TECHNOLOGY + ] +] + diff --git a/1.0.1/template/bibliography.bib b/1.0.1/template/bibliography.bib new file mode 100644 index 0000000..78d22e8 --- /dev/null +++ b/1.0.1/template/bibliography.bib @@ -0,0 +1,13 @@ +// You can use LaTeX's bibliography format per default +// or +// Typst's Hayagriva: +// https://github.com/typst/hayagriva/blob/main/docs/file-format.md + +@software{emg25template, + author = {Ernesto Martínez García}, + year = {2025}, + month = {3}, + title = {{ISEC Slides Typst Template}}, + url = {https://github.com/ecomaikgolf/typst-isec-master-thesis-template}, + urldate = {2025-08-31} +} diff --git a/1.0.1/template/slides.typ b/1.0.1/template/slides.typ new file mode 100644 index 0000000..21f113e --- /dev/null +++ b/1.0.1/template/slides.typ @@ -0,0 +1,62 @@ +#import "@preview/definitely-not-isec-slides:1.0.1": * + +#show: definitely-not-isec-theme.with( + aspect-ratio: "16-9", + slide-alignment: top, + progress-bar: true, + institute: [isec.tugraz.at], + logo: [#tugraz-logo], + config-info( + title: [Long Paper Title \ with One to Three Lines], + subtitle: [An optional short subtitle], + authors: ([*First Author*], [Second Author], [Third Author]), + extra: [SomeConf 2025], + footer: [First Author, Second Author, Third Author], + download-qr: "", + ), + config-common( + handout: false, + ), + config-colors( + primary: rgb("e4154b"), + ), +) + +// -------------------------------[[ CUT HERE ]]-------------------------------- +// +// === Available slides === +// +// #title-slide() +// #standout-slide(title) +// #section-slide(title,subtitle) +// #blank-slide() +// #slide(title) +// +// === Available macros === +// +// #quote-block(body) +// #color-block(title, body) +// #icon-block(title, icon, body) +// +// === Presenting with pdfpc === +// +// Use #note("...") to add pdfpc presenter annotations on a specific slide +// Before presenting, export all notes to a pdfpc file: +// $ typst query slides.typ --field value --one "" > slides.pdfpc +// $ pdfpc slides.pdf +// +// -------------------------------[[ CUT HERE ]]-------------------------------- + +#title-slide() + +#slide(title: [First Slide])[ + #quote-block[ + Good luck with your presentation! @emg25template + ] + + #note("This will show on pdfpc speaker notes ;)") +] + +#slide(title: [Bibliography])[ + #bibliography("bibliography.bib") +] diff --git a/1.0.1/thumbnail.png b/1.0.1/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..24d0b41f7ed944fbcce678dd6cef49ffffc82d7f GIT binary patch literal 65840 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 Rpd*i8K}JP7OX}Q}{{haZ{SW{E literal 0 HcmV?d00001 diff --git a/1.0.1/typst.toml b/1.0.1/typst.toml new file mode 100644 index 0000000..2a3d54f --- /dev/null +++ b/1.0.1/typst.toml @@ -0,0 +1,17 @@ +[package] +name = "definitely-not-isec-slides" +version = "1.0.1" +entrypoint = "src/lib.typ" +authors = ["Ernesto Martínez "] +license = "MIT" +description = "An unofficial ISEC TUGraz slides template" +repository = "https://github.com/ecomaikgolf/typst-isec-slides-template" +categories = ["presentation"] +disciplines = ["computer-science", "engineering"] +keywords = ["ISEC", "Institute of Information Security", "IAIK", "TUGraz", "Graz University of Technology", "thesis", "template", "Master Thesis"] +compiler = "0.13.1" + +[template] +path = "template" +entrypoint = "slides.typ" +thumbnail = "thumbnail.png"