diff --git a/packages/preview/invicta-thesis/1.0.0/LICENSE b/packages/preview/invicta-thesis/1.0.0/LICENSE new file mode 100644 index 0000000000..d85fc19526 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 João Lourenço & Invicta Thesis Template contributors + +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. diff --git a/packages/preview/invicta-thesis/1.0.0/README.md b/packages/preview/invicta-thesis/1.0.0/README.md new file mode 100644 index 0000000000..7a27b83a9c --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/README.md @@ -0,0 +1,38 @@ +# Invicta Thesis Template + +An unofficial Master's thesis template for the Faculty of Engineering of the University of Porto (FEUP) written in Typst. + +This template provides a clean and professional layout that follows FEUP's thesis formatting requirements, offering a modern alternative to LaTeX templates. + +## Example Usage + +```typst +#show: template.with( + title: "Advanced Machine Learning Techniques for Computer Vision", + author: "Luís Vaz de Camões", + degree: "Master in Electrical and Computer Engineering", + supervisor: "Prof. Maria Santos", + second-supervisor: "Prof. Pedro Costa", + copyright-notice: "Luís Camões, 2025", + committee-text: "Approved in oral examination by the committee:", + committee-members: ( + (role: "President", name: "Prof. Ana Ferreira"), + (role: "Referee", name: "Prof. Carlos Oliveira"), + (role: "Referee", name: "Prof. Luisa Rodrigues"), + ), + stage: "final", + language: "en", + has-quote: true, + bib-style: "ieee", +) +``` + +## Acknowledgments + +This template was created for the FEUP community and is not officially endorsed by the university. The FEUP logo and university branding remain property of the Faculdade de Engenharia da Universidade do Porto. + +This is based on Prof. João Canas and Prof. João Correia Lopes' Overleaf template, which can be found [here](https://www.overleaf.com/latex/templates/feup-dissertation-format/qrsrxjjwzrzf). + +--- + +**Note**: This is an unofficial template. Always verify that your thesis meets current FEUP requirements before submission. The FEUP logo and UP logo used in this template are under copyright of Universidade do Porto, and shall not be used for non-professional purposes or by people outside of the institution without its express authorization. diff --git a/packages/preview/invicta-thesis/1.0.0/src/covers.typ b/packages/preview/invicta-thesis/1.0.0/src/covers.typ new file mode 100644 index 0000000000..82860373e1 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/src/covers.typ @@ -0,0 +1,158 @@ +// Cover page and committee page functions for Invicta thesis + +// Helper function for cover page +#let make-cover(config) = { + set page(numbering: none) + set align(center) + + + v(0.5em) + text(size: 12.5pt, weight: "bold")[ + FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO + ] + + v(2cm) + + // Title + text(size: 18pt, weight: "bold")[ + #config.title + ] + + v(1cm) + + // Author + text(size: 14pt, weight: "bold")[ + #config.author + ] + + v(6cm) + + image("../template/figures/uporto-feup.png", width: 8cm) + v(1cm) + + if config.additional-front-text != none { + v(0.5em) + text(size: 12pt)[ + #config.additional-front-text + ] + } + + v(1fr) + + // Degree + text(size: 12pt)[ + #config.degree + ] + + v(1cm) + + // Supervisor + text(size: 12pt)[ + Supervisor: #config.supervisor + ] + + if config.second-supervisor != none { + parbreak() + text(size: 12pt)[ + Second Supervisor: #config.second-supervisor + ] + } + + v(1cm) + + // Date + let date-text = if config.thesis-date != none { + config.thesis-date + } else { + datetime.today().display("[month repr:long] [day], [year]") + } + text(size: 12pt)[ + #date-text + ] + + pagebreak() + + if config.copyright-notice != none { + place( + bottom + center, + text(size: 10pt)[ + © #config.copyright-notice + ] + ) + } + + if config.signature { + v(1cm) + line(length: 5cm) + text(size: 10pt)[Signature] + } + + pagebreak() +} + +// Helper function for committee page +#let make-committee-page(config) = { + if config.committee-text != none and config.committee-members.len() > 0 { + // Date + let date-text = if config.thesis-date != none { + config.thesis-date + } else { + datetime.today().display("[month repr:long] [day], [year]") + } + + set page(numbering: none) + + // Centered title, author, and degree at top + set align(center) + v(2cm) + + text(size: 18pt, weight: "bold")[ + #config.title + ] + + v(1cm) + + text(size: 14pt, weight: "bold")[ + #config.author + ] + + v(0.5cm) + + text(size: 12pt)[ + #config.degree + ] + + v(1fr) + + // Committee information at bottom left + set align(left) + + v(4cm) + + block( + text(size: 14pt)[ + #config.committee-text + ] + ) + + v(0.3cm) + + for member in config.committee-members { + text(size: 12pt)[ + #member.role: #member.name + ] + linebreak() + } + + + v(0.3cm) + + block( + text(size: 12pt)[ + #date-text + ] + ) + + pagebreak() + } +} diff --git a/packages/preview/invicta-thesis/1.0.0/src/lib.typ b/packages/preview/invicta-thesis/1.0.0/src/lib.typ new file mode 100644 index 0000000000..476a964d02 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/src/lib.typ @@ -0,0 +1,20 @@ +// INVICTA THESIS TEMPLATE for Typst +// Main package exports +// João Lourenço, July 2025 (Typst version) + +// Import all template modules +#import "template.typ": invicta-thesis, main-content +#import "covers.typ": make-cover, make-committee-page +#import "toc.typ": make-toc +#import "utils.typ": * + +// Export the main template function +#let template = invicta-thesis + +// Export utility functions +#let cover = make-cover +#let committee-page = make-committee-page +#let table-of-contents = make-toc + +// Export main content wrapper +#let main-content-wrapper = main-content diff --git a/packages/preview/invicta-thesis/1.0.0/src/template.typ b/packages/preview/invicta-thesis/1.0.0/src/template.typ new file mode 100644 index 0000000000..6f1c90abab --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/src/template.typ @@ -0,0 +1,272 @@ +// INVICTA THESIS TEMPLATE +// Main template function and document setup + +#import "covers.typ": make-cover, make-committee-page +#import "toc.typ": make-toc + +// Main template function +#let invicta-thesis( + // Document metadata + title: "", + author: "", + degree: "", + supervisor: "", + second-supervisor: none, + + // Dates and copyright + thesis-date: none, // If none, current date will be used + copyright-notice: none, + + // Visual elements + additional-front-text: none, + + // Committee information + committee-text: none, // Put text if final version + committee-members: (), + signature: false, // true if handwritten signature + dedication-text: none, // Optional dedication + + // Configuration options + stage: "preparation", // "preparation", "juri", "final" + language: "en", // "en", "pt" + has-unsdg: false, // true if your thesis has united nations sustainable development goals + has-quote: true, // true if your thesis has a quote + bib-style: "ieee", // bibliography style: e.g, "apa", "chicago-notes", "mla" + + // Document body + body +) = { + + // Create configuration object + let config = ( + title: title, + author: author, + degree: degree, + supervisor: supervisor, + second-supervisor: second-supervisor, + thesis-date: thesis-date, + copyright-notice: copyright-notice, + additional-front-text: additional-front-text, + committee-text: committee-text, + committee-members: committee-members, + signature: signature, + stage: stage, + language: language, + has-unsdg: has-unsdg, + has-quote: has-quote, + bib-style: bib-style, + ) + + // Document setup + set document( + title: title, + author: author, + date: datetime.today(), + ) + + // Page setup + set page( + paper: "a4", + margin: ( + top: 2.5cm, + bottom: 2.5cm, + left: 3cm, + right: 2.5cm, + ), + numbering: "1", + number-align: top + right, + ) + + // Text formatting + set text( + size: 11pt, + lang: language, + ) + + // Paragraph formatting + set par( + justify: true, + first-line-indent: (amount: 1.5em, all: false), + spacing: 1.2em, + ) + + // Heading formatting + show heading.where(level: 1): it => [ + #pagebreak(weak: true) + #v(2em) + #if it.numbering != none { + let chapter_num = counter(heading).get().first() + + // Check if this is an appendix by looking at the numbering pattern + if it.numbering == "A.1" { + // Convert number to letter (1=A, 2=B, etc.) + let appendix_letter = str.from-unicode(65 + chapter_num - 1) // 65 is ASCII for 'A' + block( + text(size: 20pt, weight: "bold", [Appendix #appendix_letter]) + ) + } else { + block( + text(size: 20pt, weight: "bold", [Chapter #chapter_num]) + ) + } + } + #v(1em) + #block( + text(size: 26pt, weight: "bold", it.body) + ) + #v(2em) + ] + + set heading(numbering: "1.1") + + // Figure and table formatting + set figure( + gap: 1em, + supplement: [Figure], + ) + + set table( + stroke: 0.5pt, + fill: (x, y) => if y == 0 { gray.lighten(80%) }, + ) + + // Link formatting + show link: it => text(fill: blue, it) + + // Generate the document + // Main document structure + make-cover(config) + + // Preliminary materials + make-committee-page(config) + + // Apply styling to body content + body +} + +// Function to set up main content with headers and page numbering +#let setup-main-content() = [ + #set page( + numbering: none, // Disable automatic numbering since we handle it in header + number-align: top + right, + header: context { + let current-page = here().page() + let page-number = counter(page).at(here()).first() + + // Don't show header on chapter start pages + let all-headings = query(heading) + + for h in all-headings { + if h.level == 1 and h.location().page() == current-page { + return align(right)[#text(size: 11pt)[#page-number]] + } + } + + // Get current chapter and section + let chapter-headings = all-headings.filter(h => h.level == 1 and h.location().page() <= current-page) + let section-headings = all-headings.filter(h => h.level == 2 and h.location().page() <= current-page) + + let header-content = none + if chapter-headings.len() > 0 { + let current-chapter = chapter-headings.last() + let chapter-counter = counter(heading).at(current-chapter.location()) + let chapter-num = chapter-counter.first() + + // Check if this is odd or even page + if calc.odd(current-page) { + // Odd pages: show current subsection (if any) + if section-headings.len() > 0 { + let current-section = section-headings.last() + let section-counter = counter(heading).at(current-section.location()) + header-content = text(size: 10pt, style: "italic")[ + #section-counter.first().#section-counter.at(1) #current-section.body + ] + } else { + // If no subsection, show chapter + header-content = text(size: 10pt, style: "italic")[ + #chapter-num #current-chapter.body + ] + } + } else { + // Even pages: show current chapter + header-content = text(size: 10pt, style: "italic")[ + #chapter-num #current-chapter.body + ] + } + } + + // Create header with content on left and page number on right + grid( + columns: (1fr, auto), + align: (left, right), + header-content, + text(size: 11pt)[#page-number] + ) + } + ) + #counter(page).update(1) +] + +// Main content show rule - this is what we want to extract +#let main-content(body) = { + set page( + numbering: none, // Disable automatic numbering since we handle it in header + number-align: top + right, + header: context { + let current-page = here().page() + let page-number = counter(page).at(here()).first() + + // Don't show header on chapter start pages + let all-headings = query(heading) + + for h in all-headings { + if h.level == 1 and h.location().page() == current-page { + return align(right)[#text(size: 11pt)[#page-number]] + } + } + + // Get current chapter and section + let chapter-headings = all-headings.filter(h => h.level == 1 and h.location().page() <= current-page) + let section-headings = all-headings.filter(h => h.level == 2 and h.location().page() <= current-page) + + let header-content = none + if chapter-headings.len() > 0 { + let current-chapter = chapter-headings.last() + let chapter-counter = counter(heading).at(current-chapter.location()) + let chapter-num = chapter-counter.first() + + // Check if this is odd or even page + if calc.odd(current-page) { + // Odd pages: show current subsection (if any) + if section-headings.len() > 0 { + let current-section = section-headings.last() + let section-counter = counter(heading).at(current-section.location()) + header-content = text(size: 10pt, style: "italic")[ + #section-counter.first().#section-counter.at(1) #current-section.body + ] + } else { + // If no subsection, show chapter + header-content = text(size: 10pt, style: "italic")[ + #chapter-num #current-chapter.body + ] + } + } else { + // Even pages: show current chapter + header-content = text(size: 10pt, style: "italic")[ + #chapter-num #current-chapter.body + ] + } + } + + // Create header with content on left and page number on right + grid( + columns: (1fr, auto), + align: (left, right), + header-content, + text(size: 11pt)[#page-number] + ) + } + ) + counter(page).update(1) + body +} diff --git a/packages/preview/invicta-thesis/1.0.0/src/toc.typ b/packages/preview/invicta-thesis/1.0.0/src/toc.typ new file mode 100644 index 0000000000..7ad8822cf6 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/src/toc.typ @@ -0,0 +1,28 @@ +// Table of contents functions for INVICTA thesis + +// Helper function for table of contents +#let make-toc() = { + + outline( + title: "Table of Contents", + depth: 3, + indent: auto, + target: selector(heading).after(), + ) + + pagebreak() + + outline( + title: "List of Figures", + target: selector(figure.where(kind: image)).after(), + ) + + pagebreak() + + outline( + title: "List of Tables", + target: selector(figure.where(kind: table)).after(), + ) + + pagebreak() +} diff --git a/packages/preview/invicta-thesis/1.0.0/src/uporto-feup.png b/packages/preview/invicta-thesis/1.0.0/src/uporto-feup.png new file mode 100644 index 0000000000..4fd0e749d8 Binary files /dev/null and b/packages/preview/invicta-thesis/1.0.0/src/uporto-feup.png differ diff --git a/packages/preview/invicta-thesis/1.0.0/src/utils.typ b/packages/preview/invicta-thesis/1.0.0/src/utils.typ new file mode 100644 index 0000000000..27dcf9efa0 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/src/utils.typ @@ -0,0 +1,105 @@ +// Additional utility functions for FEUP thesis + +// Function to create a dedication page +#let dedication(content) = { + set page(numbering: none) + v(1fr) + set align(center) + text(size: 14pt, style: "italic")[#content] + v(2fr) + pagebreak() +} + +// Function to create an epigraph (quote with attribution) +#let epigraph(quote, author, source: none) = { + place( + horizon + right, + [ + #text(size: 14pt, style: "italic")[ + "#quote" + ] + #v(1cm) + #text(size: 12pt)[ + #author + ] + ] + ) +} + +// Function for glossary entries +#let glossary-entry(term, definition) = { + grid( + columns: (1fr, 3fr), + column-gutter: 1em, + [*#term*], [#definition] + ) +} + +// Function to create code blocks with proper formatting +#let code-block(code, caption: none, lang: none) = { + figure( + block( + fill: gray.lighten(95%), + inset: 1em, + radius: 3pt, + width: 100%, + stroke: 0.5pt + gray, + code + ), + caption: caption, + kind: "code", + supplement: [Listing] + ) +} + +// Function for creating algorithm pseudocode +#let algorithm(title, content) = { + figure( + block( + fill: gray.lighten(97%), + inset: 1em, + radius: 3pt, + width: 100%, + stroke: 0.5pt + gray, + [ + #align(center)[*#title*] + #line(length: 100%) + #content + ] + ), + caption: title, + kind: "algorithm", + supplement: [Algorithm] + ) +} + +// Function for creating a list of acronyms +#let acronym-list(acronyms) = { + // Use text instead of heading to avoid showing in table of contents + v(4em) + text(size: 26pt, weight: "bold")[List of Acronyms] + v(1em) + + table( + columns: (1fr, 3fr), + stroke: none, + fill: none, + ..acronyms.flatten() + ) + + pagebreak() +} + +// Function for creating mathematical notation list +#let notation-list(symbols) = { + heading(level: 1, numbering: none)[Mathematical Notation] + + table( + columns: (1fr, 3fr), + stroke: none, + fill: none, + ..symbols.pairs().map(((symbol, description)) => (symbol, description)).flatten() + ) + + pagebreak() +} diff --git a/packages/preview/invicta-thesis/1.0.0/template/appendixes/A-implementation-details.typ b/packages/preview/invicta-thesis/1.0.0/template/appendixes/A-implementation-details.typ new file mode 100644 index 0000000000..02e019b29f --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/appendixes/A-implementation-details.typ @@ -0,0 +1,46 @@ +#import "@preview/invicta-thesis:1.0.0" as feup + +#heading[Implementation Details] + +This appendix provides additional implementation details and code snippets. + +#heading(level: 2)[Network Architecture Code] + +#feup.code-block( +```python +import torch +import torch.nn as nn + +class ProposedNetwork(nn.Module): + def __init__(self, input_dim, hidden_dim, output_dim): + super(ProposedNetwork, self).__init__() + self.encoder = nn.Sequential( + nn.Linear(input_dim, hidden_dim), + nn.ReLU(), + nn.Linear(hidden_dim, hidden_dim // 2) + ) + self.bottleneck = nn.Linear(hidden_dim // 2, hidden_dim // 4) + self.decoder = nn.Sequential( + nn.Linear(hidden_dim // 4, hidden_dim // 2), + nn.ReLU(), + nn.Linear(hidden_dim // 2, output_dim) + ) + + def forward(self, x): + encoded = self.encoder(x) + bottleneck = self.bottleneck(encoded) + output = self.decoder(bottleneck) + return output +```, +caption: "PyTorch implementation of proposed architecture" +) + +#heading(level: 2)[Training Configuration] + +The following hyperparameters were used for training: + +- Learning rate: 0.001 +- Batch size: 32 +- Number of epochs: 100 +- Optimizer: Adam +- Weight decay: 1e-4 \ No newline at end of file diff --git a/packages/preview/invicta-thesis/1.0.0/template/appendixes/B-additional-results.typ b/packages/preview/invicta-thesis/1.0.0/template/appendixes/B-additional-results.typ new file mode 100644 index 0000000000..f2ea62f8b5 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/appendixes/B-additional-results.typ @@ -0,0 +1,22 @@ +#import "@preview/invicta-thesis:1.0.0" as feup + +#heading[Additional Results] + +This appendix contains supplementary experimental results and analysis. + +#heading(level: 2)[Detailed Performance Metrics] + +#figure( + table( + columns: (auto, auto, auto, auto, auto), + [Method], [Precision], [Recall], [F1-Score], [AUC], + [Baseline 1], [0.842], [0.838], [0.840], [0.891], + [Baseline 2], [0.856], [0.851], [0.853], [0.904], + [Proposed], [0.925], [0.921], [0.923], [0.967], + ), + caption: [Detailed performance metrics on test set], +) + +#heading(level: 2)[Computational Complexity] + +The computational complexity of our proposed method is O(n log n) for training and O(log n) for inference, where n is the input dimension. \ No newline at end of file diff --git a/packages/preview/invicta-thesis/1.0.0/template/chapters/1-introduction.typ b/packages/preview/invicta-thesis/1.0.0/template/chapters/1-introduction.typ new file mode 100644 index 0000000000..c18c2d944c --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/chapters/1-introduction.typ @@ -0,0 +1,53 @@ +// Use this import when the package is published to Typst Universe +// // #import "@preview/invicta-thesis:1.0.0": * + +// Import template utilities directly +#import "@preview/invicta-thesis:1.0.0" as feup + +#heading(level: 1)[Introduction] + +The field of machine learning has experienced unprecedented growth in recent years, driven by advances in computational power, availability of large datasets, and development of sophisticated algorithms. This thesis addresses fundamental challenges in machine learning optimization and proposes novel solutions that advance the state-of-the-art. + +== Motivation + +Traditional machine learning approaches often struggle with scalability and efficiency when dealing with large-scale problems. The motivation for this research stems from the need to develop more efficient algorithms that can handle the increasing complexity of real-world applications. + +== Research Questions + +This thesis aims to answer the following research questions: + +1. How can we design neural network architectures that are both accurate and computationally efficient? +2. What optimization techniques can improve the training speed of deep learning models? +3. How do these improvements translate to real-world applications? + +== Contributions + +The main contributions of this thesis are: + +- Development of a novel neural network architecture that achieves superior performance +- Implementation of an efficient training algorithm with theoretical guarantees +- Comprehensive experimental evaluation demonstrating practical benefits + +#figure( + table( + columns: (auto, auto, auto), + [Method], [Accuracy], [Training Time], + [Baseline], [85.2%], [120 min], + [Proposed], [92.7%], [72 min], + ), + caption: [Comparison of proposed method with baseline], +) + +== Thesis Structure + +The remainder of this thesis is organized as follows: + +- *Chapter 2* reviews related work in machine learning optimization +- *Chapter 3* presents the theoretical foundations of our approach +- *Chapter 4* describes the proposed methodology in detail +- *Chapter 5* presents experimental results and analysis +- *Chapter 6* concludes the thesis and discusses future work + +#lorem(3000) + +#pagebreak() \ No newline at end of file diff --git a/packages/preview/invicta-thesis/1.0.0/template/chapters/2-literature-review.typ b/packages/preview/invicta-thesis/1.0.0/template/chapters/2-literature-review.typ new file mode 100644 index 0000000000..e400181482 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/chapters/2-literature-review.typ @@ -0,0 +1,67 @@ +// Use this import when the package is published to Typst Universe +// // #import "@preview/invicta-thesis:1.0.0": * + +// Import template utilities directly +#import "@preview/invicta-thesis:1.0.0" as feup + +#heading(level: 1)[Literature Review] + +This chapter provides a comprehensive review of existing literature in machine learning optimization, neural network architectures, and related computational techniques. + +This is referenced in @khakipoor_linear_2023. + +== Machine Learning Foundations + +Machine learning encompasses a broad range of algorithms and techniques designed to enable computers to learn from data without being explicitly programmed for every task. + +=== Supervised Learning + +Supervised learning algorithms learn from labeled training data to make predictions on new, unseen data. Key approaches include: + +- Linear regression and classification +- Support vector machines +- Decision trees and random forests +- Neural networks and deep learning + +=== Deep Learning + +Deep learning has revolutionized many areas of machine learning through the use of multi-layered neural networks. + +#figure( + image("../figures/uporto.png", width: 80%), + caption: [Example neural network architecture], +) + +== Optimization Techniques + +Efficient optimization is crucial for training machine learning models, particularly deep neural networks. + +=== Gradient Descent Methods + +Gradient descent and its variants form the backbone of most machine learning optimization: + +- Stochastic Gradient Descent (SGD) +- Adam optimizer +- RMSprop +- AdaGrad + +=== Advanced Optimization + +Recent advances include: + +- Learning rate scheduling +- Gradient clipping +- Batch normization +- Regularization techniques + +// Example of using algorithm function from template +#feup.algorithm("Gradient Descent")[ + 1. Initialize parameters $theta_0$ + 2. *for* iteration t = 1 to T *do* + 3. Compute gradients: $g_t = nabla L(theta_t)$ + 4. Update parameters: $theta_(t+1) = theta_t - alpha g_t$ + 5. *end for* + 6. *return* $theta_T$ +] + +#pagebreak() \ No newline at end of file diff --git a/packages/preview/invicta-thesis/1.0.0/template/chapters/3-theoretical-foundations.typ b/packages/preview/invicta-thesis/1.0.0/template/chapters/3-theoretical-foundations.typ new file mode 100644 index 0000000000..9905a772e0 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/chapters/3-theoretical-foundations.typ @@ -0,0 +1,46 @@ +// Use this import when the package is published to Typst Universe +// // #import "@preview/invicta-thesis:1.0.0": * + +#import "@preview/invicta-thesis:1.0.0" as feup + +#heading(level: 1)[Theoretical Foundations] + +This chapter establishes the theoretical foundations for our proposed approach, including mathematical formulations and algorithmic principles. + +== Problem Formulation + +Let $X = {x_1, x_2, ..., x_n}$ be a dataset of input samples and $Y = {y_1, y_2, ..., y_n}$ be the corresponding target outputs. Our goal is to learn a function $f: X -> Y$ that minimizes the expected risk: + +$ R(f) = integral L(y, f(x)) p(x, y) d x d y $ + +where $L$ is a loss function and $p(x, y)$ is the joint probability distribution. + +== Proposed Architecture + +Our neural network architecture consists of multiple components designed to optimize both accuracy and computational efficiency. + +=== Network Structure + +The network follows an encoder-decoder structure with the following key components: + +1. *Input layer*: Processes raw input data +2. *Encoder layers*: Extract hierarchical features +3. *Bottleneck layer*: Compresses information +4. *Decoder layers*: Reconstruct output representation +5. *Output layer*: Produces final predictions + +=== Optimization Algorithm + +We propose a novel optimization algorithm that combines the benefits of adaptive learning rates with momentum-based updates. + +#feup.algorithm("Proposed Optimization Algorithm")[ + 1. Initialize parameters $theta_0$ + 2. *for* t = 1 to T *do* + 3. Sample mini-batch B from training data + 4. Compute gradients: $g_t = nabla_theta L(theta_t, B)$ + 5. Update momentum: $m_t = beta_1 m_(t-1) + (1-beta_1)g_t$ + 6. Update parameters: $theta_(t+1) = theta_t - alpha_t m_t$ + 7. *end for* +] + +#pagebreak() diff --git a/packages/preview/invicta-thesis/1.0.0/template/chapters/4-methodology.typ b/packages/preview/invicta-thesis/1.0.0/template/chapters/4-methodology.typ new file mode 100644 index 0000000000..b95fc40aa0 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/chapters/4-methodology.typ @@ -0,0 +1,39 @@ +// Use this import when the package is published to Typst Universe +// // #import "@preview/invicta-thesis:1.0.0": * + +#import "@preview/invicta-thesis:1.0.0" as feup + +#heading(level: 1)[Methodology] + +This chapter presents our experimental methodology, including dataset preparation, implementation details, and evaluation metrics. + +== Experimental Setup + +We conducted experiments on several benchmark datasets to evaluate the performance of our proposed approach. + +=== Datasets + +We used the following datasets for evaluation: + +- *CIFAR-10*: 60,000 32×32 color images in 10 classes +- *ImageNet*: Large-scale visual recognition dataset +- *Penn Treebank*: Natural language processing benchmark + +=== Implementation Details + +All experiments were implemented using Python and PyTorch framework. Training was performed on NVIDIA GPUs with the following specifications: + +- GPU: NVIDIA RTX 3080 +- Memory: 10GB GDDR6X +- CUDA version: 11.4 + +== Evaluation Metrics + +We evaluated our approach using standard metrics: + +- *Accuracy*: Percentage of correctly classified samples +- *Training time*: Wall-clock time for model training +- *Memory usage*: Peak GPU memory consumption +- *FLOPS*: Floating-point operations per second + +#pagebreak() diff --git a/packages/preview/invicta-thesis/1.0.0/template/chapters/5-result-and-analysis.typ b/packages/preview/invicta-thesis/1.0.0/template/chapters/5-result-and-analysis.typ new file mode 100644 index 0000000000..319d078817 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/chapters/5-result-and-analysis.typ @@ -0,0 +1,56 @@ +// Use this import when the package is published to Typst Universe +// // #import "@preview/invicta-thesis:1.0.0": * + +#import "@preview/invicta-thesis:1.0.0" as feup + +#heading(level: 1)[Results and Analysis] + +This chapter presents comprehensive experimental results and analysis of our proposed approach. + +== Performance Comparison + +@tab:results shows the performance comparison between our method and existing baselines across different datasets. + +#figure( + table( + columns: (auto, auto, auto, auto), + [Dataset], [Baseline], [Proposed], [Improvement], + [CIFAR-10], [85.2%], [92.7%], [+7.5%], + [ImageNet], [76.1%], [81.3%], [+5.2%], + [Penn Treebank], [88.9%], [93.1%], [+4.2%], + ), + caption: [Performance comparison across datasets], +) + +== Training Efficiency + +Our proposed method shows significant improvements in training efficiency: + +- 40% reduction in training time +- 30% decrease in memory usage +- Better convergence properties + +/* +#figure( + image("figures/uporto.png", width: 70%), + caption: [Training loss convergence comparison], +) +*/ + +== Statistical Analysis + +We performed statistical significance tests to validate our results: + +- Paired t-test: p < 0.001 +- Effect size (Cohen's d): 1.24 (large effect) +- 95% confidence interval: [0.85, 1.63] + +== Discussion + +The results demonstrate that our proposed approach achieves superior performance across multiple benchmarks while maintaining computational efficiency. The improvements can be attributed to: + +1. *Better architecture design*: The encoder-decoder structure captures hierarchical features effectively +2. *Efficient optimization*: Our algorithm converges faster than traditional methods +3. *Regularization effects*: The bottleneck layer prevents overfitting + +#pagebreak() \ No newline at end of file diff --git a/packages/preview/invicta-thesis/1.0.0/template/chapters/6-conclusions-and-future-work.typ b/packages/preview/invicta-thesis/1.0.0/template/chapters/6-conclusions-and-future-work.typ new file mode 100644 index 0000000000..a07a8e61c3 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/chapters/6-conclusions-and-future-work.typ @@ -0,0 +1,55 @@ +// Use this import when the package is published to Typst Universe +// // #import "@preview/invicta-thesis:1.0.0": * + +#import "@preview/invicta-thesis:1.0.0" as feup + +#heading(level: 1)[Conclusions and Future Work] + +This chapter summarizes the contributions of this thesis and discusses directions for future research. + +== Summary of Contributions + +This thesis made the following key contributions to the field of machine learning: + +1. *Novel Architecture*: Developed an innovative neural network architecture that balances accuracy and efficiency +2. *Optimization Algorithm*: Proposed a new optimization method with theoretical guarantees +3. *Empirical Validation*: Demonstrated superior performance on benchmark datasets +4. *Open Source Implementation*: Released code and models for reproducibility + +== Limitations + +While our approach shows promising results, several limitations should be acknowledged: + +- Limited evaluation on extremely large-scale datasets +- Computational requirements still significant for resource-constrained environments +- Hyperparameter sensitivity in certain scenarios + +== Future Directions + +Several avenues for future research emerge from this work: + +=== Technical Extensions + +- Extension to other domains (e.g., natural language processing, robotics) +- Investigation of federated learning applications +- Development of automated architecture search methods + +=== Practical Applications + +- Integration with edge computing platforms +- Real-time inference optimization +- Domain-specific customizations + +=== Theoretical Analysis + +- Convergence analysis under different assumptions +- Generalization bounds for the proposed architecture +- Theoretical understanding of the optimization landscape + +== Final Remarks + +This thesis demonstrates the potential of combining architectural innovations with advanced optimization techniques to achieve significant improvements in machine learning performance. The proposed methods open new possibilities for developing more efficient and effective machine learning systems. + +The research community can build upon this work to further advance the state-of-the-art in machine learning optimization and neural network design. + +#pagebreak() \ No newline at end of file diff --git a/packages/preview/invicta-thesis/1.0.0/template/chapters/chapter-template.typ b/packages/preview/invicta-thesis/1.0.0/template/chapters/chapter-template.typ new file mode 100644 index 0000000000..41536be943 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/chapters/chapter-template.typ @@ -0,0 +1,58 @@ +// Chapter template for FEUP thesis +// Copy this template to create new chapters + +// Import chapter utilities (adjust path as needed) +//#import "@preview/invicta-thesis:1.0.0" as feup + +// For local development, use: +#import "@preview/invicta-thesis:1.0.0" as feup + +// Example chapter content +#heading(level: 1)[Your Chapter Title] + +This is your chapter content. You can now use all the template utilities: + +== Section Title + +Regular content here. + +=== Subsection + +You can include figures: + +//#figure( +// image("../figures/your-image.png", width: 80%), +// caption: [Your figure caption], +//) + +You can use code blocks: + +#feup.code-block( +```python +def example_function(): + return "Hello, world!" +```, +caption: "Example Python code" +) + +You can create algorithms: + +#feup.algorithm("Example Algorithm")[ + 1. Initialize variables + 2. *for* each item *do* + 3. Process item + 4. *end for* +] + +You can add epigraphs: + +#feup.epigraph( + "The best way to predict the future is to invent it.", + "Alan Kay" +) + +== References in Chapters + +You can cite references like this: @reference-key + +The bibliography will be included in the main document, not in individual chapters. diff --git a/packages/preview/invicta-thesis/1.0.0/template/figures/uporto-feup.png b/packages/preview/invicta-thesis/1.0.0/template/figures/uporto-feup.png new file mode 100644 index 0000000000..4fd0e749d8 Binary files /dev/null and b/packages/preview/invicta-thesis/1.0.0/template/figures/uporto-feup.png differ diff --git a/packages/preview/invicta-thesis/1.0.0/template/figures/uporto.png b/packages/preview/invicta-thesis/1.0.0/template/figures/uporto.png new file mode 100644 index 0000000000..026c913076 Binary files /dev/null and b/packages/preview/invicta-thesis/1.0.0/template/figures/uporto.png differ diff --git a/packages/preview/invicta-thesis/1.0.0/template/main.typ b/packages/preview/invicta-thesis/1.0.0/template/main.typ new file mode 100644 index 0000000000..cfe59fc93e --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/main.typ @@ -0,0 +1,105 @@ +#import "@preview/invicta-thesis:1.0.0" as feup + +#show: feup.template.with( + // Document metadata + title: "", + author: "", + degree: "", + supervisor: "", + second-supervisor: "", // Optional, use none if not applicable + + // Dates and copyright + thesis-date: none, // Will use current date + copyright-notice: ", ", + + // Visual elements + additional-front-text: none, + + // Committee information (example for final version), use none otherwise + committee-text: "Approved in oral examination by the committee:", + committee-members: ( + (role: "President", name: ""), + (role: "Referee", name: ""), + (role: "Referee", name: ""), + ), + signature: false, + + // Configuration options + stage: "final", // This is a final version + language: "en", + has-unsdg: false, // Include UN SDG section + has-quote: true, + bib-style: "ieee", +) + +// Optional, remove this if you don't want a dedication +#feup.dedication( + text("Dedication text, if you want to.", hyphenate: false), +) + +#set page(numbering: "i", number-align: bottom + center) +#counter(page).update(1) + +// Resumo +#include "prologue/resumo.typ" + +// Abstract +#include "prologue/abstract.typ" + +// UN-SDG (example) +#include "prologue/unsdg.typ" + +// Acknowledgments +#include "prologue/acknowns.typ" + +// Quote +#feup.epigraph( + "The best way to predict the future is to invent it.", + "Alan Kay" +) + +// Table of Contents +#feup.table-of-contents() + +// List of Acronyms +#feup.acronym-list(( + ("AI", "Artificial Intelligence"), + ("API", "Application Programming Interface"), + ("CNN", "Convolutional Neural Network"), + ("CPU", "Central Processing Unit"), + ("GPU", "Graphics Processing Unit"), + ("ML", "Machine Learning"), + ("NLP", "Natural Language Processing"), + ("RNN", "Recurrent Neural Network"), + ("SGD", "Stochastic Gradient Descent"), + ("UI", "User Interface"), + ), +) + +// Start main body with arabic numbering + +#show: feup.main-content-wrapper + +// CHAPTERS - Include your chapter files here +// Follow the chapter-template.typ structure + +#include "chapters/1-introduction.typ" +#include "chapters/2-literature-review.typ" +#include "chapters/3-theoretical-foundations.typ" +#include "chapters/4-methodology.typ" +#include "chapters/5-result-and-analysis.typ" +#include "chapters/6-conclusions-and-future-work.typ" + +// Bibliography +#heading(level: 1, numbering: none)[Bibliography] +#bibliography("refs.bib", title: none, style: "ieee") +#pagebreak() + +#set heading(numbering: "A.1", level: 1) +#counter(heading).update(0) + +// Appendices +#include "appendixes/A-implementation-details.typ" +#include "appendixes/B-additional-results.typ" + +// End of document diff --git a/packages/preview/invicta-thesis/1.0.0/template/prologue/abstract.typ b/packages/preview/invicta-thesis/1.0.0/template/prologue/abstract.typ new file mode 100644 index 0000000000..030a9bdd5f --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/prologue/abstract.typ @@ -0,0 +1,11 @@ +#heading(level: 1, numbering: none)[Abstract] + +This thesis presents an innovative approach to solving complex computational problems using advanced machine learning techniques. The research focuses on developing novel algorithms that can efficiently process large datasets while maintaining high accuracy levels. + +The main contributions of this work include: (1) development of a new neural network architecture, (2) implementation of an efficient training algorithm, and (3) comprehensive evaluation on benchmark datasets. + +Results show significant improvements over existing methods, with up to 25% increase in accuracy and 40% reduction in computational time. These findings have important implications for real-world applications in computer vision and natural language processing. + +*Keywords:* machine learning, neural networks, optimization, computer vision + +#pagebreak() \ No newline at end of file diff --git a/packages/preview/invicta-thesis/1.0.0/template/prologue/acknowns.typ b/packages/preview/invicta-thesis/1.0.0/template/prologue/acknowns.typ new file mode 100644 index 0000000000..cf1c102940 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/prologue/acknowns.typ @@ -0,0 +1,14 @@ +#heading(level: 1, numbering: none)[Acknowledgments] + +I would like to express my sincere gratitude to my supervisor, Prof. Jane Smith, for her invaluable guidance, patience, and expertise throughout this research. Her insightful feedback and continuous support were instrumental in the completion of this thesis. + +I also thank Prof. Bob Johnson, my co-supervisor, for his technical insights and constructive criticism that significantly improved the quality of this work. + +Special thanks to my colleagues in the Machine Learning Lab for creating a stimulating research environment and for countless discussions that enriched my understanding of the field. + +Finally, I am grateful to my family and friends for their unwavering support and encouragement throughout my academic journey. + +#linebreak() +John Doe + +#pagebreak() \ No newline at end of file diff --git a/packages/preview/invicta-thesis/1.0.0/template/prologue/resumo.typ b/packages/preview/invicta-thesis/1.0.0/template/prologue/resumo.typ new file mode 100644 index 0000000000..195129c696 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/prologue/resumo.typ @@ -0,0 +1,11 @@ +#heading(level: 1, numbering: none)[Resumo] + +Esta dissertação apresenta uma abordagem inovadora para resolver problemas computacionais complexos usando técnicas avançadas de aprendizagem automática. A investigação foca no desenvolvimento de algoritmos inovadores capazes de processar eficientemente grandes conjuntos de dados mantendo elevados níveis de precisão. + +As principais contribuições deste trabalho incluem: (1) desenvolvimento de uma nova arquitetura de rede neural, (2) implementação de um algoritmo de treino eficiente, e (3) avaliação abrangente em conjuntos de dados de referência. + +Os resultados mostram melhorias significativas em relação aos métodos existentes, com até 25% de aumento na precisão e 40% de redução no tempo computacional. + +*Palavras-chave:* aprendizagem automática, redes neurais, otimização, visão computacional + +#pagebreak() \ No newline at end of file diff --git a/packages/preview/invicta-thesis/1.0.0/template/prologue/unsdg.typ b/packages/preview/invicta-thesis/1.0.0/template/prologue/unsdg.typ new file mode 100644 index 0000000000..59985843f7 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/prologue/unsdg.typ @@ -0,0 +1,14 @@ +#heading(level: 1, numbering: none)[United Nations Sustainable Development Goals] + +This research contributes to the following UN Sustainable Development Goals: + +- *Goal 9: Industry, Innovation and Infrastructure* - By developing more efficient computational methods that can accelerate scientific research and industrial applications. + +- *Goal 4: Quality Education* - Through the development of open-source tools that can be used in educational settings to teach advanced machine learning concepts. + +#figure( + image("../figures/uporto.png", width: 60%), + caption: [UN Sustainable Development Goals addressed by this research] +) + +#pagebreak() \ No newline at end of file diff --git a/packages/preview/invicta-thesis/1.0.0/template/refs.bib b/packages/preview/invicta-thesis/1.0.0/template/refs.bib new file mode 100644 index 0000000000..41d43b0ce4 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/template/refs.bib @@ -0,0 +1,177 @@ +% bibliograhy entries + +@article{khakipoor_linear_2023, + title = {A {Linear} {Implementation} of the {Hodgkin}–{Huxley} {Neuron} {Model} on {FPGA} {Considering} {Its} {Dynamics}}, + issn = {1573-773X}, + doi = {10.1007/s11063-023-11285-2}, + journal = {Neural Processing Letters}, + author = {Khakipoor, Yosef and Khani, Farnaz and Karimian, Ghader}, + month = may, + year = {2023}, + keywords = {Researcher App}, +} + +@article{liu_energy_2023, + title = {An {Energy} {Efficient} and {Runtime} {Reconfigurable} {Accelerator} for {Robotic} {Localization}}, + volume = {72}, + issn = {1557-9956}, + doi = {10.1109/TC.2022.3230899}, + number = {7}, + journal = {IEEE Transactions on Computers}, + author = {Liu, Qiang and Hao, Yuhui and Liu, Weizhuang and Yu, Bo and Gan, Yiming and Tang, Jie and Liu, Shao-Shan and Zhu, Yuhao}, + month = jul, + year = {2023}, + pages = {1943--1957}, +} + +@inproceedings{monopoli_exploiting_2023, + title = {Exploiting {FPGA} {Dynamic} {Partial} {Reconfiguration} for a {Soft} {GPU}-based {System}-on-{Chip}}, + doi = {10.1109/PRIME58259.2023.10161859}, + booktitle = {2023 18th {Conference} on {Ph}.{D} {Research} in {Microelectronics} and {Electronics} ({PRIME})}, + author = {Monopoli, Matteo and Zulberti, Luca and Todaro, Giovanni and Nannipieri, Pietro and Fanucci, Luca}, + month = jun, + year = {2023}, + pages = {181--184}, +} + +@misc{zhang_carma_2023, + title = {{CARMA}: {Context}-{Aware} {Runtime} {Reconfiguration} for {Energy}-{Efficient} {Sensor} {Fusion}}, + shorttitle = {{CARMA}}, + url = {http://arxiv.org/abs/2306.15748}, + doi = {10.48550/arXiv.2306.15748}, + publisher = {arXiv}, + author = {Zhang, Yifan and Malawade, Arnav Vaibhav and Zhang, Xiaofang and Li, Yuhui and Seong, DongHwan and Faruque, Mohammad Abdullah Al and Huang, Sitao}, + month = jun, + year = {2023}, + note = {arXiv:2306.15748 [cs]}, +} + +@article{chang_adas_2023, + title = {{ADAS}: {A} {High} {Computational} {Utilization} {Dynamic} {Reconfigurable} {Hardware} {Accelerator} for {Super} {Resolution}}, + volume = {16}, + issn = {1936-7406}, + shorttitle = {{ADAS}}, + doi = {10.1145/3570927}, + number = {3}, + journal = {ACM Transactions on Reconfigurable Technology and Systems}, + author = {Chang, Liang and Zhao, Xin and Zhou, Jun}, + month = jun, + year = {2023}, + pages = {47:1--47:22}, +} + +@article{guo_rapidstream_2023, + title = {{RapidStream} 2.0: {Automated} {Parallel} {Implementation} of {Latency}–{In-sensitive} {FPGA} {Designs} {Through} {Partial} {Reconfiguration}}, + volume = {16}, + issn = {1936-7406}, + shorttitle = {{RapidStream} 2.0}, + doi = {10.1145/3593025}, + number = {4}, + journal = {ACM Transactions on Reconfigurable Technology and Systems}, + author = {Guo, Licheng and Maidee, Pongstorn and Zhou, Yun and Lavin, Chris and Hung, Eddie and Li, Wuxi and Lau, Jason and Qiao, Weikang and Chi, Yuze and Song, Linghao and Xiao, Yuanlong and Kaviani, Alireza and Zhang, Zhiru and Cong, Jason}, + month = sep, + year = {2023}, + pages = {59:1--59:30} +} + +@BOOK{kn:PP05, + AUTHOR={Estelle M. Philips and Derek S. Pugh}, + TITLE={How to Get a {PhD}}, + PUBLISHER={Open University Press}, + EDITION={{F}ourth}, + YEAR={2005}, + ISBn={0-335-21684-6} +} + +@TECHREPORT{kn:Mat93, + AUTHOR={Manuel A. Matos}, + TITLE={Normas para Apresentação de Dissertações, Bases Essenciais}, + INSTITUTION={Faculdade de Engenharia da Universidade do Porto}, + YEAR={1993}, + MONTH={} +} + +@ARTICLE{kn:ZPMD97, + AUTHOR={Debora J. Zukowski and Apratim Purakayastha and Ajay Mohindra and Murthy Devarakonda}, + TITLE={Metis: A Thin-Client Application Framework}, + ORGANIZATION={Usenix Association}, + JOURNAL={Proceedings of the Third Conference on Object-Oriented Technologies and Systems}, + PAGES={103--114}, + MONTH={}, + YEAR=1997 +} + +@INPROCEEDINGS{kn:MVL06-xata, + AUTHOR={Filipe Marinho and Paulo Viegas and J. Correia Lopes}, + TITLE={{SVG} na Visualização de Sinópticos}, + PAGES={99-112}, + BOOKTITLE={{XATA2006}, XML: Aplicações e Tecnologias Associadas (Portalege, 9 e 10 de Fevereiro de 2006)}, + EDITOR={José Carlos Ramalho and J. Correia Lopes and Alberto Simões}, + PUBLISHER={Universidade do Minho}, + MONTH={}, + YEAR=2006 +} + +@MISC{kn:Tha01, + AUTHOR={Ming Tham}, + TITLE={Writing Research Theses or Dissertations}, + NOTE={University of Newcastle Upon Tyne. Available at \url{http://lorien.ncl.ac.uk/ming/dept/Tips/writing/thesis/thesis-intro.htm}}, + MONTH={}, + YEAR={2001} +} + +@MISC{kn:Lip08, + AUTHOR={Lipsum}, + TITLE={Lorem Ipsum}, + URL={http://www.lipsum.com/}, + YEAR={2008} +} + +@MISC{kn:svgbatik, + AUTHOR={Apache}, + TITLE={Batik {SVG} {T}oolkit}, + URL={http://xml.apache.org/batik/}, + MONTH={}, + YEAR=2005 +} + +@MISC{kn:svgibm, + AUTHOR={IBM}, + TITLE={Program with {SVG}}, + NOTE={Available at \url{http://www-128.ibm.com/developerworks/xml/library/x-matters40/}}, + MONTH={}, + YEAR=2005 +} + +@MISC{kn:svgw3c, + AUTHOR={{World Wide Web Consortium}}, + TITLE={{W3C} --- {About SVG}}, + NOTE={\url{http://www.w3.org/TR/SVG/intro.html/}}, + MONTH={}, + YEAR=2005 +} + +@MISC{kn:svgdoc, + AUTHOR={{World Wide Web Consortium}}, + TITLE={{W3C} --- {SVG Specification}}, + MONTH={}, + YEAR=2005, + NOTE={Available at \url{http://www.w3.org/TR/SVG11/}} +} + +@MISC{kn:svgscada, + AUTHOR={Rodrigo García García}, + TITLE={{SVG} for {SCADA}}, + NOTE={Swiss Federal Institute of Technology Lausanne (EPFL)}, + NOTE={Available at \url{http://www.svgopen.org/2004/papers/SVGforSCADA/}}, + MONTH={abril}, + YEAR=2005 +} + +@MISC{kn:batik, + AUTHOR={Apache}, + TITLE={Batik {SVG} {T}oolkit {A}rchitecture}, + NOTE={Available at \url{http://xml.apache.org/batik/architecture.html\#coreComponents}}, + MONTH={}, + YEAR=2005 +} diff --git a/packages/preview/invicta-thesis/1.0.0/thumbnail.png b/packages/preview/invicta-thesis/1.0.0/thumbnail.png new file mode 100644 index 0000000000..0a48387a24 Binary files /dev/null and b/packages/preview/invicta-thesis/1.0.0/thumbnail.png differ diff --git a/packages/preview/invicta-thesis/1.0.0/typst.toml b/packages/preview/invicta-thesis/1.0.0/typst.toml new file mode 100644 index 0000000000..1912244e47 --- /dev/null +++ b/packages/preview/invicta-thesis/1.0.0/typst.toml @@ -0,0 +1,16 @@ +[package] +name = "invicta-thesis" +version = "1.0.0" +compiler = "0.13.1" +entrypoint = "src/lib.typ" +authors = ["João Lourenço "] +license = "MIT" +description = "Master's thesis for Faculty of Engineering of University of Porto" +repository = "https://github.com/Tonevanda/invicta-thesis" +categories = ["thesis", "layout"] +keywords = ["FEUP", "Universidade do Porto", "Faculdade de Engenharia", "tese", "thesis"] + +[template] +path = "template" +entrypoint = "main.typ" +thumbnail = "thumbnail.png" \ No newline at end of file