mirror of
https://github.com/JustAnyones/ktu-paper.git
synced 2026-06-20 22:11:56 +00:00
667 lines
14 KiB
Typst
667 lines
14 KiB
Typst
// Laboratorinio darbo ataskaita
|
||
//
|
||
|
||
#let unnumbered-heading(text) = {
|
||
set heading(numbering: none)
|
||
[#text]
|
||
}
|
||
|
||
#let bibliography-list(path) = {
|
||
bibliography(
|
||
path,
|
||
title: "Literatūros sąrašas",
|
||
full: true
|
||
)
|
||
}
|
||
|
||
#let table-list() = {
|
||
outline(title: "Lentelių sąrašas", target: figure.where(kind: table))
|
||
}
|
||
|
||
#let picture-list() = {
|
||
outline(title: "Paveikslų sąrašas", target: figure.where(kind: image))
|
||
}
|
||
|
||
#let setup-page(body) = {
|
||
// Pagal formaliuosius rašto darbų reikalavimus
|
||
|
||
|
||
set page(
|
||
// Puslapio matmenys
|
||
paper: "a4",
|
||
width: 210mm,
|
||
height: 297mm,
|
||
|
||
numbering: none,
|
||
number-align: right,
|
||
|
||
// paraščių dydžiai
|
||
margin: (
|
||
right: 10mm,
|
||
left: 30mm,
|
||
bottom: 20mm,
|
||
top: 20mm
|
||
)
|
||
)
|
||
|
||
// Bendrasis teksto šriftas
|
||
set text(
|
||
font: "Times New Roman",
|
||
size: 12pt,
|
||
lang: "lt"
|
||
//style: "normal",
|
||
//weight: "regular",
|
||
//spacing: 200%
|
||
)
|
||
|
||
// TODO: investigate paragraphs
|
||
|
||
|
||
// Tarp eilučių paragrafe
|
||
set par(
|
||
leading: 1.15em,
|
||
justify: true
|
||
)
|
||
|
||
// Tarp paragrafų
|
||
show par: set block(spacing: 16pt)
|
||
|
||
|
||
|
||
// Nustatom visus paragrafus
|
||
// Įvadinei daliai, išvadoms, literatūros sąrašui ir priedams rašto darbo skyrių numeracija netaikoma.
|
||
show heading: it => [
|
||
|
||
#set align(left)
|
||
#set text(
|
||
font: "Times New Roman",
|
||
size: 12pt
|
||
)
|
||
|
||
// Automatically create a pagebreak before level 1 heading
|
||
#if it.level == 1 {
|
||
pagebreak()
|
||
}
|
||
|
||
// Jei numeracijos nėra, nustatom
|
||
#if it.numbering == none {
|
||
set align(center)
|
||
[#it.body]
|
||
|
||
// Jei numeracija yra, uždedam
|
||
} else {
|
||
set align(left)
|
||
[#counter(heading).display() #it.body]
|
||
}
|
||
|
||
#v(0.35cm)
|
||
]
|
||
|
||
// Nustatom paveikslėlius ir figūras
|
||
set figure.caption(separator: [.])
|
||
show figure.caption: it => [
|
||
#let supplement = it.supplement
|
||
#if it.kind == image {
|
||
supplement = "pav"
|
||
} else if it.kind == table {
|
||
supplement = "lentelė"
|
||
} else {
|
||
supplement = [NESUKONFIGURUOTA!!! -- #it.kind]
|
||
}
|
||
*#it.counter.display(it.numbering) #supplement#it.separator* #it.body
|
||
]
|
||
|
||
/*show table: it => [
|
||
#it.fields()
|
||
//#it
|
||
]*/
|
||
|
||
show table.cell.where(y: 0): it => [
|
||
#set align(left)
|
||
#set text(size: 10pt)
|
||
*#it*
|
||
]
|
||
|
||
show table.cell: it => [
|
||
#set align(left)
|
||
#set text(size: 10pt)
|
||
#it
|
||
]
|
||
|
||
set heading(numbering: "1.")
|
||
|
||
// Set bibliography and citing style
|
||
set bibliography(style: "Assets/iso690-numeric-lt.csl")
|
||
|
||
body
|
||
}
|
||
|
||
#let lab-report(
|
||
title,
|
||
subTitles,
|
||
type: none,
|
||
authors: none,
|
||
recipients: none,
|
||
recipientRole: none,
|
||
authorRole: none,
|
||
body
|
||
) = {
|
||
show: setup-page.with()
|
||
|
||
// Title page
|
||
[
|
||
// Top of the title page
|
||
#v(20pt)
|
||
#align(center)[
|
||
#image("Assets/ktu-logo.png", width: 2.46cm, height: 2.69cm)
|
||
#v(20pt)*Kauno technologijos universitetas*
|
||
#v(0pt)Informatikos fakultetas
|
||
#v(83pt)
|
||
]
|
||
|
||
// The title page information
|
||
#align(center)[
|
||
#text(size: 18pt)[*#title*]
|
||
#for subTitle in subTitles {
|
||
[
|
||
#v(-5pt)
|
||
#text(size: 14pt)[#subTitle]
|
||
]
|
||
}
|
||
#v(100pt)
|
||
]
|
||
|
||
// Written by and intended for
|
||
// TODO: support multiple authors
|
||
#v(15pt)
|
||
#align(left)[
|
||
#for author in authors {
|
||
[
|
||
//#v(-5pt)
|
||
#h(300pt)*#author*
|
||
#parbreak()
|
||
]
|
||
}
|
||
#h(300pt)#authorRole
|
||
#v(12pt)
|
||
#for recipient in recipients {
|
||
[
|
||
//#v(-5pt)
|
||
#h(300pt)*#recipient*
|
||
#parbreak()
|
||
]
|
||
}
|
||
#parbreak()
|
||
#h(300pt)#recipientRole
|
||
]
|
||
|
||
// Footer of place where it was written and year
|
||
#align(center+bottom)[
|
||
*Kaunas, #datetime.today().year()*
|
||
]
|
||
|
||
// Begin numbering from the outline
|
||
#set page(
|
||
numbering: "1"
|
||
)
|
||
|
||
#outline(
|
||
title: "Turinys"
|
||
)
|
||
|
||
#body
|
||
]
|
||
}
|
||
|
||
|
||
|
||
// A template function to create a stylized report
|
||
#let ataskaita(
|
||
title,
|
||
subTitles,
|
||
type: none,
|
||
authors: none,
|
||
recipients: none,
|
||
recipientRole: none,
|
||
authorRole: none,
|
||
body
|
||
) = {
|
||
|
||
// Setup page properties
|
||
set page(
|
||
paper: "a4",
|
||
width: 210mm,
|
||
height: 297mm,
|
||
numbering: none,
|
||
number-align: right,
|
||
margin: (
|
||
right: 10mm,
|
||
left: 30mm,
|
||
bottom: 20mm,
|
||
top: 20mm
|
||
)
|
||
)
|
||
|
||
set par(
|
||
leading: 1.15em
|
||
)
|
||
|
||
set par(
|
||
leading: 6pt
|
||
)
|
||
|
||
show: all => [
|
||
#set text(
|
||
font: "Times New Roman",
|
||
size: 12pt,
|
||
style: "normal",
|
||
weight: "regular",
|
||
spacing: 200%
|
||
)
|
||
#all
|
||
]
|
||
|
||
// Nustatom visus paragrafus
|
||
show heading: it => [
|
||
#set align(left)
|
||
#set text(
|
||
font: "Times New Roman",
|
||
size: 12pt
|
||
)
|
||
#counter(heading).display() #it.body
|
||
#v(0.35cm)
|
||
]
|
||
|
||
show heading.where(numbering: none): it => [
|
||
#set align(center)
|
||
#set text(
|
||
font: "Times New Roman",
|
||
size: 12pt
|
||
)
|
||
#it.body
|
||
];
|
||
|
||
// Setup figures
|
||
set figure.caption(separator: [.])
|
||
show figure.caption: it => [
|
||
#let supplement = it.supplement
|
||
#if it.kind == image {
|
||
supplement = "pav"
|
||
}
|
||
#it.counter.display(it.numbering) #supplement#it.separator #it.body
|
||
]
|
||
|
||
set heading(numbering: "1.")
|
||
|
||
// Set bibliography and citing style
|
||
set bibliography(style: "Assets/iso690-numeric-lt.csl")
|
||
|
||
|
||
|
||
// Title page
|
||
[
|
||
// Top of the title page
|
||
#v(20pt)
|
||
#align(center)[
|
||
#image("Assets/ktu-logo.png", width: 2.46cm, height: 2.69cm)
|
||
#v(20pt)*Kauno technologijos universitetas*
|
||
#v(0pt)Informatikos fakultetas
|
||
#v(83pt)
|
||
]
|
||
|
||
// The title page information
|
||
#align(center)[
|
||
#text(size: 18pt)[*#title*]
|
||
#for subTitle in subTitles {
|
||
[
|
||
#v(-5pt)
|
||
#text(size: 14pt)[#subTitle]
|
||
]
|
||
}
|
||
#v(100pt)
|
||
]
|
||
|
||
// Written by and intended for
|
||
// TODO: support multiple authors
|
||
#v(15pt)
|
||
#align(left)[
|
||
#for author in authors {
|
||
[
|
||
//#v(-5pt)
|
||
#h(300pt)*#author*
|
||
#parbreak()
|
||
]
|
||
}
|
||
#h(300pt)#authorRole
|
||
#v(12pt)
|
||
#for recipient in recipients {
|
||
[
|
||
//#v(-5pt)
|
||
#h(300pt)*#recipient*
|
||
#parbreak()
|
||
]
|
||
}
|
||
#parbreak()
|
||
#h(300pt)#recipientRole
|
||
]
|
||
|
||
// Footer of place where it was written and year
|
||
#align(center+bottom)[
|
||
*Kaunas, #datetime.today().year()*
|
||
]
|
||
|
||
#pagebreak()
|
||
|
||
// Begin numbering from the outline
|
||
#set page(
|
||
numbering: "1"
|
||
)
|
||
|
||
#outline(
|
||
title: "Turinys"
|
||
)
|
||
|
||
#pagebreak()
|
||
|
||
#body
|
||
]
|
||
}
|
||
|
||
// Bibliography shorthand
|
||
#let bibl(path) = {
|
||
[
|
||
#bibliography(
|
||
path,
|
||
title: "Literatūros sąrašas",
|
||
full: true
|
||
)
|
||
]
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
// PRESENTATION
|
||
#import "@preview/polylux:0.3.1": *
|
||
|
||
// The margins are set automatically to 2.5/21 times the smaller dimension of the page. This results in 2.5cm margins for an A4 page.
|
||
#let autoMarginSize = 2.5/21 * 7.50in
|
||
#let margins = (
|
||
top: autoMarginSize,
|
||
right: autoMarginSize,
|
||
left: autoMarginSize,
|
||
bottom: autoMarginSize
|
||
);
|
||
|
||
#let ktu-theme(body) = {
|
||
|
||
set page(
|
||
fill: white,
|
||
numbering: "1",
|
||
number-align: right,
|
||
width: 13.33in,
|
||
height: 7.50in,
|
||
margin: margins,
|
||
footer: {
|
||
locate(loc => {
|
||
let page-counter = counter(page).display("1")
|
||
if loc.page() != 1 {
|
||
place(bottom+right, dx: 18pt, dy: -20pt)[
|
||
#set text(size: 14pt)
|
||
*#page-counter*
|
||
]
|
||
}
|
||
})
|
||
}
|
||
)
|
||
|
||
// Default content size
|
||
set text(size: 22pt, font: "Arial")
|
||
|
||
// First level heading size
|
||
show heading.where(level: 1): it => [
|
||
#set text(size: 50pt)
|
||
#it.body
|
||
];
|
||
|
||
// Second level heading size
|
||
show heading.where(level: 2): it => [
|
||
#set text(size: 30pt)
|
||
#it.body
|
||
];
|
||
|
||
// Embed the body
|
||
body
|
||
}
|
||
|
||
#let ktu-title-slide(body) = {
|
||
polylux-slide[
|
||
// Content
|
||
#set align(bottom)
|
||
#box(width: 80%)[
|
||
#body
|
||
]
|
||
|
||
|
||
// Horizontal line
|
||
#place(
|
||
top,
|
||
dx: 222pt,
|
||
dy: -200pt,
|
||
pad(
|
||
right: -margins.right + 100pt,
|
||
left: -margins.left,
|
||
scale(
|
||
x: 300%,
|
||
rotate(
|
||
-90deg,
|
||
image("Assets/image12.svg")
|
||
)
|
||
)
|
||
)
|
||
)
|
||
|
||
/*
|
||
#place(
|
||
top,
|
||
dx: 190pt,
|
||
//dy: -200pt,
|
||
dy: -88pt,
|
||
pad(
|
||
//right: -margins.right + 100pt,
|
||
//left: -margins.left,
|
||
scale(
|
||
y: 10%,
|
||
x: 10%,
|
||
image("Assets/image4.svg")
|
||
)
|
||
)
|
||
)
|
||
*/
|
||
|
||
// KTU logo
|
||
#place(
|
||
top,
|
||
dx: 792pt,
|
||
dy: -40pt,
|
||
image("Assets/ktu-logo.png", height: 36mm)
|
||
)
|
||
|
||
// Vertical line
|
||
#place(
|
||
top,
|
||
dx: 360pt,
|
||
dy: 385pt,
|
||
pad(
|
||
top: -margins.top,
|
||
bottom: -margins.bottom,
|
||
rotate(
|
||
-90deg,
|
||
scale(
|
||
y: -100%,
|
||
image("Assets/image15.svg")
|
||
)
|
||
)
|
||
)
|
||
)
|
||
|
||
// Text on the vertical line side
|
||
#place(top, dx: 670pt, dy: 250pt)[
|
||
#set text(size: 15pt)
|
||
#rotate(-90deg)[
|
||
*UŽ KIEKVIENOS TECHNOLOGIJOS – ŽMOGUS*
|
||
]
|
||
]
|
||
]
|
||
}
|
||
|
||
#let ktu-outline-slide(body) = {
|
||
polylux-slide[
|
||
// Content
|
||
#box(
|
||
pad(
|
||
left: 90pt,
|
||
body
|
||
)
|
||
)
|
||
|
||
// KTU logo
|
||
#place(
|
||
top,
|
||
//dx: 792pt,
|
||
dx: -50pt,
|
||
dy: -40pt,
|
||
image("Assets/ktu-logo.png", height: 36mm)
|
||
)
|
||
|
||
// Vertical line
|
||
#place(
|
||
top,
|
||
dx: -360pt,
|
||
dy: 385pt,
|
||
pad(
|
||
top: -margins.top,
|
||
bottom: -margins.bottom,
|
||
rotate(
|
||
90deg,
|
||
scale(
|
||
y: -100%,
|
||
x: -100%,
|
||
image("Assets/image15.svg")
|
||
)
|
||
)
|
||
)
|
||
)
|
||
|
||
// Text on the vertical line side
|
||
#place(top, dx: -170pt, dy: 250pt)[
|
||
#set text(size: 15pt)
|
||
#rotate(-90deg)[
|
||
*UŽ KIEKVIENOS TECHNOLOGIJOS – ŽMOGUS*
|
||
]
|
||
]
|
||
]
|
||
}
|
||
|
||
#let ktu-main-slide(body) = {
|
||
let header = body.children.find(it => { return it.func() == heading })
|
||
|
||
polylux-slide[
|
||
// Content
|
||
#block(width: 95%, height: 100%)[
|
||
#header
|
||
#v(36pt)
|
||
#body.children.filter(it => {return it.func() != heading}).join()
|
||
]
|
||
|
||
// DECORATIONS
|
||
// Horizontal line
|
||
#place(
|
||
top,
|
||
dy: 44pt,
|
||
pad(
|
||
right: -margins.right + 94pt,
|
||
left: -margins.left,
|
||
image("Assets/image15.svg")
|
||
)
|
||
)
|
||
|
||
// KTU logo
|
||
#place(
|
||
top,
|
||
dx: 820pt,
|
||
dy: 0pt,
|
||
image("Assets/ktu-text.svg", height: 10mm)
|
||
)
|
||
|
||
// Vertical line
|
||
#place(
|
||
top,
|
||
dx: 800pt,
|
||
pad(
|
||
top: -margins.top,
|
||
bottom: -margins.bottom,
|
||
image("Assets/image12.svg")
|
||
)
|
||
)
|
||
|
||
// Text on the vertical line side
|
||
#place(top, dx: 700pt, dy: 250pt)[
|
||
#set text(size: 13pt)
|
||
#rotate(-90deg)[
|
||
*UŽ KIEKVIENOS TECHNOLOGIJOS – ŽMOGUS*
|
||
]
|
||
]
|
||
]
|
||
}
|
||
|
||
#let ktu-no-vertical-slide(body) = {
|
||
let header = body.children.find(it => { return it.func() == heading })
|
||
|
||
polylux-slide[
|
||
// Content
|
||
#block(width: 100%, height: 100%)[
|
||
#header
|
||
#v(36pt)
|
||
#body.children.filter(it => {return it.func() != heading}).join()
|
||
]
|
||
|
||
// DECORATIONS
|
||
// Horizontal line
|
||
#place(
|
||
top,
|
||
dy: 1.52cm,
|
||
pad(
|
||
right: -margins.right,
|
||
left: -margins.left,
|
||
image("Assets/image15.svg")
|
||
)
|
||
)
|
||
|
||
// KTU logo
|
||
#place(
|
||
top,
|
||
dx: 820pt,
|
||
dy: 0pt,
|
||
image("Assets/ktu-text.svg", height: 10mm)
|
||
)
|
||
]
|
||
}
|