// Royal Holloway, University of London Report template // Created by Otto Helen-Goldring in 2024 under the MIT License. // Modified from light-report-uia (https://typst.app/universe/package/light-report-uia/) // The main report template function. // It sets up the document's structure, styling, and front matter. #let report( title: none, author: none, group_name: none, course_name: none, unit_type: none, report_type: none, supervisor: none, date: none, location: "Egham", references: "references.yml", // Note: This file needs to exist. body ) = { // === DOCUMENT SETUP === set document(title: [#title], author: author) // set text(font: ("Fira Sans", "Helvetica", "Arial", "Roboto") // Custom font can be set here set par(justify: true) show link: underline // === HEADING STYLES === show heading: set block(above: 30pt, below: 30pt) // Chapter-level headings show heading.where(level: 1): set text(size: 20pt) show heading.where(level: 1): set heading(supplement: [Chapter]) show heading.where(level: 1): it => block({ let prefix = if it.numbering != none { it.supplement + [ ] + counter(heading).display(it.numbering) + [: ] } text(weight: "regular", prefix) + it.body }) // Section-level headings show heading.where(level: 2): set text(size: 16pt) // === PAGE SETUP === // Add a header to all pages except the first one. set page(header: context {if counter(page).get().first() > 1 [#report_type #h(1fr) #author]}) // === FRONT PAGE === set align(center) text(10pt, author + ", " + date) v(5mm) text(22pt, "Final Year Project Report") v(1mm) text(14pt, unit_type + " - " + report_type, weight: "bold") v(3mm) line(length: 30%) text(25pt, weight: "bold", title) v(3mm) text(18pt, group_name) text(18pt, author) v(3mm) line(length: 30%) text(14pt, report_type + " submitted in part fulfilment of the degree of ") v(3mm) text(16pt, weight: "bold")[#course_name] v(3mm) text(18pt, "Supervisor: ", weight: "bold") text(18pt, supervisor) v(1fr) // Pushes the following content to the bottom of the page. block(height: 25%, image("media/rhul.jpg", height: 75%)) text(14pt)[Department of Computer Science#linebreak()Royal Holloway, University of London] v(20mm) text(12pt)[#location, #date] pagebreak() // === TABLE OF CONTENTS === set align(left) set heading(numbering: "1.1") outline(indent: 2em, title: "Contents") pagebreak() // === MAIN BODY === // Reset page numbering for the main content. set page(numbering: "1", number-align: center) counter(page).update(1) // The main content of the document is passed in here. body // === BIBLIOGRAPHY === // The bibliography has been commented out to prevent rendering errors. // To use it, create a "references.yml" file and uncomment the line below. // bibliography(references, title: "Bibliography") } // === DOCUMENT CONFIGURATION === // Apply the 'report' template to the entire document with the specified parameters. #show: report.with( title: "Algorithms for Lightsaber Dueling", author: "Anakin Skywalker", unit_type: "Full Unit", report_type: "Final Report", course_name: "BSc (Hons) in Computer Science", supervisor: "Obi-Wan Kenobi", date: "October 2024", references: "references.yml" // Specify your bibliography file here ) // === MAIN CONTENT STARTS HERE === = Examples #lorem(20) == Citation This is something stated from a source. @martin2009clean == Tables Here's a table: #figure( caption: [Table of numbers], table( columns: (auto, auto), inset: 8pt, align: horizon, table.header( [*Letters*], [*Number*], ), [Five], [5], [Eight], [8], ) ) == Code blocks Here's a code block in Golang: ```go package main import "fmt" func main() { fmt.Println("Hello, world!") } ``` == Math Let $a$, $b$, and $c$ be the side lengths of right-angled triangle. Then, we know that: $ a^2 + b^2 = c^2 $ Prove by induction: $ sum_(k=1)^n k = (n(n+1)) / 2 $ #bibliography("references.bib")