mirror of
https://github.com/kristoferssolo/Mafia-the-Game-Description.git
synced 2025-12-31 05:32:37 +00:00
style: update formatting
This commit is contained in:
parent
c96e67130c
commit
9b73187481
29
.github/workflows/typst.yml
vendored
Normal file
29
.github/workflows/typst.yml
vendored
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
name: Build Typst document
|
||||||
|
on: [push, workflow_dispatch]
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Typst
|
||||||
|
uses: lvignoli/typst-action@main
|
||||||
|
with:
|
||||||
|
source_file: |
|
||||||
|
main.typ
|
||||||
|
- name: Upload PDF file
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: PDF
|
||||||
|
path: "*.pdf"
|
||||||
|
- name: Get current date
|
||||||
|
id: date
|
||||||
|
run: echo "DATE=$(date +%Y-%m-%d-%H:%M)" >> $GITHUB_ENV
|
||||||
|
- name: Release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
if: github.ref_type == 'tag'
|
||||||
|
with:
|
||||||
|
name: "${{ github.ref_name }} — ${{ env.DATE }}"
|
||||||
|
files: main.pdf
|
||||||
79
abstract.typ
79
abstract.typ
@ -4,24 +4,26 @@
|
|||||||
level: 1,
|
level: 1,
|
||||||
outlined: false,
|
outlined: false,
|
||||||
numbering: none,
|
numbering: none,
|
||||||
"Anotācija"
|
"Anotācija",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
#indent-par([
|
#indent-par([
|
||||||
Sociālā lomu spēle "Mafija" ir plaši pazīstama. Tā ir pieejama vairākos
|
Sociālā lomu spēle "Mafija" ir plaši pazīstama. Tā ir pieejama vairākos
|
||||||
paveidos un formātos, kā arī piedāvā neierobežotu konfigurāciju un lomu skaitu.
|
paveidos un formātos, kā arī piedāvā neierobežotu konfigurāciju un lomu skaitu.
|
||||||
Spēlētāju ērtībai tiek nodrošināts tīmekļa vietnes formāts, kas ietver
|
Spēlētāju ērtībai tiek nodrošināts tīmekļa vietnes formāts, kas ietver
|
||||||
norādījumus, informējot lietotāju par pieejamajām iespējām, un skaidrojumus,
|
norādījumus, informējot lietotāju par pieejamajām iespējām, un skaidrojumus,
|
||||||
aprakstot spēles elementus un saskarni, ar mērķi atvieglot tās lietošanu.
|
aprakstot spēles elementus un saskarni, ar mērķi atvieglot tās lietošanu.
|
||||||
Tirgus izpēte apliecina, ka ir pieejami vairāki, nepilnvērtīgi risinājumi.
|
Tirgus izpēte apliecina, ka ir pieejami vairāki, nepilnvērtīgi risinājumi.
|
||||||
Programmatūras prasību specifikācija apraksta sistēmas pamatprasības un
|
Programmatūras prasību specifikācija apraksta sistēmas pamatprasības un
|
||||||
papildus funkcionalitāti, tostarp lomu klāsta papildināšanu, spēles
|
papildus funkcionalitāti, tostarp lomu klāsta papildināšanu, spēles
|
||||||
konfigurāciju izveidi, kā arī priviliģētu lietotāju (maksas lietotāju) izveidošanu,
|
konfigurāciju izveidi, kā arī priviliģētu lietotāju (maksas lietotāju) izveidošanu,
|
||||||
pielietojot abonementa paveida maksājumu sistēmu.
|
pielietojot abonementa paveida maksājumu sistēmu.
|
||||||
])
|
])
|
||||||
|
|
||||||
#par(first-line-indent: 0cm, [*Atslēgvārdi:*])
|
#par(
|
||||||
|
first-line-indent: 0cm,
|
||||||
|
[*Atslēgvārdi:*],
|
||||||
|
)
|
||||||
|
|
||||||
Mafijas spēle, sistēmas prasības, specifikācijas dokuments, programmatūras
|
Mafijas spēle, sistēmas prasības, specifikācijas dokuments, programmatūras
|
||||||
uzlabošana, lomu spēle, vienkāršota spēlēšana, organizatoriski risinājumi,
|
uzlabošana, lomu spēle, vienkāršota spēlēšana, organizatoriski risinājumi,
|
||||||
@ -32,32 +34,33 @@ maksas lietotājs, maksājumu apstrādātāja lietojumprogrammas saskarni (API).
|
|||||||
hyphenate: auto,
|
hyphenate: auto,
|
||||||
lang: "en",
|
lang: "en",
|
||||||
[
|
[
|
||||||
|
#pagebreak()
|
||||||
#pagebreak()
|
#heading(
|
||||||
#heading(
|
|
||||||
level: 1,
|
level: 1,
|
||||||
outlined: false,
|
outlined: false,
|
||||||
numbering: none,
|
numbering: none,
|
||||||
"Abstract"
|
"Abstract",
|
||||||
|
)
|
||||||
|
#indent-par([
|
||||||
|
The social role-playing game "Mafia" is widely known. It is available in
|
||||||
|
various versions and formats, offering an unlimited number of configurations
|
||||||
|
and roles. For the convenience of players, the game is made as a web
|
||||||
|
application that includes instructions, informing the user about available
|
||||||
|
options, and explanations describing the game's elements and interface, to
|
||||||
|
improve user experience.
|
||||||
|
Market research confirms that several mediocre solutions are
|
||||||
|
available. The software requirements specification describes the system's basic
|
||||||
|
requirements with additional functionality, including expanding the range of
|
||||||
|
roles, creating game configurations, and a privileged user (premium user) using
|
||||||
|
a subscription-based payment system.
|
||||||
|
])
|
||||||
|
#par(
|
||||||
|
first-line-indent: 0cm,
|
||||||
|
[*Keywords:*],
|
||||||
|
)
|
||||||
|
Mafia game, system requirements, specification document, software improvement,
|
||||||
|
role-playing, simplified gameplay, organizational solutions, software
|
||||||
|
requirements specification, user-generated content, subscription, premium user,
|
||||||
|
payment processor application program interface (API).
|
||||||
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
#indent-par([
|
|
||||||
The social role-playing game "Mafia" is widely known. It is available in
|
|
||||||
various versions and formats, offering an unlimited number of configurations
|
|
||||||
and roles. For the convenience of players, the game is made as a web
|
|
||||||
application that includes instructions, informing the user about available
|
|
||||||
ptions, and explanations describing the game's elements and interface, to improve user experience. Market research confirms that several mediocre solutions are
|
|
||||||
available. The software requirements specification describes the system's basic
|
|
||||||
requirements with additional functionality, including expanding the range of
|
|
||||||
roles, creating game configurations, and a privileged user (premium user) using
|
|
||||||
a subscription-based payment system.
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
#par(first-line-indent: 0cm, [*Keywords:*])
|
|
||||||
|
|
||||||
Mafia game, system requirements, specification document, software improvement,
|
|
||||||
role-playing, simplified gameplay, organizational solutions, software
|
|
||||||
requirements specification, user-generated content, subscription, premium user,
|
|
||||||
payment processor application program interface (API).
|
|
||||||
])
|
|
||||||
116
layout.typ
116
layout.typ
@ -2,9 +2,10 @@
|
|||||||
#import "@preview/big-todo:0.2.0": *
|
#import "@preview/big-todo:0.2.0": *
|
||||||
#import "@preview/tablex:0.0.6": tablex
|
#import "@preview/tablex:0.0.6": tablex
|
||||||
|
|
||||||
|
|
||||||
#let indent = 1cm
|
#let indent = 1cm
|
||||||
#let indent-par(body) = par(h(indent) + body)
|
#let indent-par(
|
||||||
|
body,
|
||||||
|
) = par(h(indent) + body)
|
||||||
|
|
||||||
#let project(
|
#let project(
|
||||||
university: "",
|
university: "",
|
||||||
@ -13,28 +14,28 @@
|
|||||||
authors: (),
|
authors: (),
|
||||||
advisor: "",
|
advisor: "",
|
||||||
date: "",
|
date: "",
|
||||||
body
|
body,
|
||||||
) = {
|
) = {
|
||||||
set document(author: authors)
|
set document(author: authors)
|
||||||
|
|
||||||
set page(
|
set page(
|
||||||
margin: (left: 30mm, right: 20mm, top: 20mm, bottom: 20mm),
|
margin: (
|
||||||
|
left: 30mm,
|
||||||
|
right: 20mm,
|
||||||
|
top: 20mm,
|
||||||
|
bottom: 20mm,
|
||||||
|
),
|
||||||
number-align: center,
|
number-align: center,
|
||||||
paper: "a4"
|
paper: "a4",
|
||||||
)
|
)
|
||||||
set text(
|
set text(
|
||||||
//font: "New Computer Modern",
|
//font: "New Computer Modern",
|
||||||
font: "CMU",
|
font: "CMU", size: 12pt, hyphenate: auto, lang: "lv", region: "LV",
|
||||||
size: 12pt,
|
|
||||||
hyphenate: auto,
|
|
||||||
lang: "lv",
|
|
||||||
region: "LV"
|
|
||||||
)
|
)
|
||||||
show raw: set text(font: "New Computer Modern Mono")
|
show raw: set text(font: "New Computer Modern Mono")
|
||||||
|
|
||||||
show math.equation: set text(weight: 400)
|
show math.equation: set text(weight: 400)
|
||||||
|
|
||||||
|
|
||||||
// Formatting for regular text
|
// Formatting for regular text
|
||||||
set par(
|
set par(
|
||||||
justify: true,
|
justify: true,
|
||||||
@ -45,19 +46,23 @@
|
|||||||
show heading: set block(spacing: 1.5em)
|
show heading: set block(spacing: 1.5em)
|
||||||
set terms(separator: [ -- ])
|
set terms(separator: [ -- ])
|
||||||
|
|
||||||
|
|
||||||
// Headings
|
// Headings
|
||||||
set heading(numbering: "1.1.")
|
set heading(numbering: "1.1.")
|
||||||
show heading: it => {
|
show heading: it => {
|
||||||
if it.level == 1 {
|
if it.level == 1 {
|
||||||
// pagebreak(weak: true)
|
// pagebreak(weak: true)
|
||||||
text(14pt, align(center, upper(it)))
|
text(
|
||||||
|
14pt,
|
||||||
|
align(
|
||||||
|
center,
|
||||||
|
upper(it),
|
||||||
|
),
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
it
|
it
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Title page config start */
|
/* Title page config start */
|
||||||
align(
|
align(
|
||||||
center,
|
center,
|
||||||
@ -67,48 +72,66 @@
|
|||||||
[
|
[
|
||||||
#university\
|
#university\
|
||||||
#faculty
|
#faculty
|
||||||
]
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
))
|
|
||||||
|
|
||||||
v(1fr)
|
v(1fr)
|
||||||
|
|
||||||
align(
|
align(
|
||||||
center,
|
center,
|
||||||
text(20pt, weight: "bold", title)
|
text(
|
||||||
|
20pt,
|
||||||
|
weight: "bold",
|
||||||
|
title,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
v(1fr)
|
v(1fr)
|
||||||
|
|
||||||
// Author information
|
// Author information
|
||||||
align(right, [
|
align(
|
||||||
|
right,
|
||||||
|
[
|
||||||
#if authors.len() > 1 {
|
#if authors.len() > 1 {
|
||||||
text(weight: "bold", "Darba autori:")
|
text(
|
||||||
|
weight: "bold",
|
||||||
|
"Darba autori:",
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
text(weight: "bold", "Darba autors:")
|
text(
|
||||||
|
weight: "bold",
|
||||||
|
"Darba autors:",
|
||||||
|
)
|
||||||
}\
|
}\
|
||||||
#authors.join("\n")
|
#authors.join("\n")
|
||||||
|
|
||||||
#v(2em)
|
#v(2em)
|
||||||
|
|
||||||
#if advisor != "" {
|
#if advisor != "" {
|
||||||
text(weight: "bold", "Darba vadītājs:\n")
|
text(
|
||||||
|
weight: "bold",
|
||||||
|
"Darba vadītājs:\n",
|
||||||
|
)
|
||||||
advisor
|
advisor
|
||||||
}
|
}
|
||||||
])
|
],
|
||||||
|
)
|
||||||
|
|
||||||
v(0.5fr)
|
v(0.5fr)
|
||||||
|
|
||||||
align(center,
|
align(
|
||||||
upper(text(date))
|
center,
|
||||||
|
upper(
|
||||||
|
text(date),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
/* Title page config end */
|
/* Title page config end */
|
||||||
|
|
||||||
|
|
||||||
// WARNING: removove before sending
|
// WARNING: removove before sending
|
||||||
// todo_outline
|
// todo_outline
|
||||||
|
|
||||||
|
|
||||||
/* --- Figure/Table conf start --- */
|
/* --- Figure/Table conf start --- */
|
||||||
show heading: i-figured.reset-counters
|
show heading: i-figured.reset-counters
|
||||||
show figure: i-figured.show-figure.with(numbering: "1.1.")
|
show figure: i-figured.show-figure.with(numbering: "1.1.")
|
||||||
@ -116,26 +139,41 @@
|
|||||||
show figure.where(kind: "i-figured-table"): set block(breakable: true)
|
show figure.where(kind: "i-figured-table"): set block(breakable: true)
|
||||||
show figure.where(kind: "i-figured-table"): set figure.caption(position: top)
|
show figure.where(kind: "i-figured-table"): set figure.caption(position: top)
|
||||||
|
|
||||||
|
|
||||||
show figure: set par(justify: false) // disable justify for figures (tables)
|
show figure: set par(justify: false) // disable justify for figures (tables)
|
||||||
|
|
||||||
show figure.caption: it => {
|
show figure.caption: it => {
|
||||||
if it.kind == "i-figured-table" {
|
if it.kind == "i-figured-table" {
|
||||||
align(end, emph(it.counter.display(it.numbering) + " tabula ") + text(weight: "bold", it.body))
|
align(
|
||||||
|
end,
|
||||||
|
emph(it.counter.display(it.numbering) + " tabula ") + text(
|
||||||
|
weight: "bold",
|
||||||
|
it.body,
|
||||||
|
),
|
||||||
|
)
|
||||||
} else if it.kind == "i-figured-image" {
|
} else if it.kind == "i-figured-image" {
|
||||||
align(start, emph(it.counter.display(it.numbering) + " att. ") + text(weight: "bold", it.body))
|
align(
|
||||||
|
start,
|
||||||
|
emph(it.counter.display(it.numbering) + " att. ") + text(
|
||||||
|
weight: "bold",
|
||||||
|
it.body,
|
||||||
|
),
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
it
|
it
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set ref(supplement: it => {}) // disable default reference suppliments
|
set ref(supplement: it => { }) // disable default reference suppliments
|
||||||
/* --- Figure/Table conf end --- */
|
/* --- Figure/Table conf end --- */
|
||||||
|
|
||||||
set list(marker: ([•], [--], [\*], [·]))
|
set list(marker: (
|
||||||
|
[•],
|
||||||
|
[--],
|
||||||
|
[\*],
|
||||||
|
[·],
|
||||||
|
))
|
||||||
set enum(numbering: "1aiA)") // TODO: make the same style as LaTeX: 1. | (a) | i. | A.
|
set enum(numbering: "1aiA)") // TODO: make the same style as LaTeX: 1. | (a) | i. | A.
|
||||||
|
|
||||||
|
|
||||||
// Abstract
|
// Abstract
|
||||||
include "abstract.typ"
|
include "abstract.typ"
|
||||||
|
|
||||||
@ -146,11 +184,21 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
pagebreak()
|
pagebreak()
|
||||||
outline(depth: 3, indent: 1cm, title: text(size: 14pt, "SATURS"))
|
outline(
|
||||||
|
depth: 3,
|
||||||
|
indent: 1cm,
|
||||||
|
title: text(
|
||||||
|
size: 14pt,
|
||||||
|
"SATURS",
|
||||||
|
),
|
||||||
|
)
|
||||||
/* ToC config end */
|
/* ToC config end */
|
||||||
|
|
||||||
// Start page numering
|
// Start page numering
|
||||||
set page(numbering: "1", number-align: center)
|
set page(
|
||||||
|
numbering: "1",
|
||||||
|
number-align: center,
|
||||||
|
)
|
||||||
|
|
||||||
// Main bdy.
|
// Main bdy.
|
||||||
body
|
body
|
||||||
|
|||||||
135
utils.typ
135
utils.typ
@ -1,7 +1,9 @@
|
|||||||
#import "@preview/tablex:0.0.6": tablex
|
#import "@preview/tablex:0.0.6": tablex
|
||||||
#import "@preview/big-todo:0.2.0": todo as TODO
|
#import "@preview/big-todo:0.2.0": todo as TODO
|
||||||
|
|
||||||
#let custom-block(item) = {
|
#let custom-block(
|
||||||
|
item,
|
||||||
|
) = {
|
||||||
set align(start)
|
set align(start)
|
||||||
block(
|
block(
|
||||||
inset: 8pt,
|
inset: 8pt,
|
||||||
@ -9,7 +11,7 @@
|
|||||||
width: 100%,
|
width: 100%,
|
||||||
spacing: 0pt,
|
spacing: 0pt,
|
||||||
breakable: true,
|
breakable: true,
|
||||||
item
|
item,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17,13 +19,13 @@
|
|||||||
title: "",
|
title: "",
|
||||||
titles: (),
|
titles: (),
|
||||||
caption: "",
|
caption: "",
|
||||||
..items
|
..items,
|
||||||
) = {
|
) = {
|
||||||
set par(first-line-indent: 0pt)
|
set par(first-line-indent: 0pt)
|
||||||
figure(
|
figure(
|
||||||
gap: 1.5em,
|
gap: 1.5em,
|
||||||
kind: table,
|
kind: table,
|
||||||
caption: if caption != ""{
|
caption: if caption != "" {
|
||||||
caption
|
caption
|
||||||
} else {
|
} else {
|
||||||
if titles.len() == 0 {
|
if titles.len() == 0 {
|
||||||
@ -34,65 +36,130 @@
|
|||||||
},
|
},
|
||||||
[
|
[
|
||||||
#if titles.len() == 0 {
|
#if titles.len() == 0 {
|
||||||
custom-block(text(weight: "bold", title))
|
custom-block(
|
||||||
|
text(
|
||||||
|
weight: "bold",
|
||||||
|
title,
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
#for i in range(items.pos().len()) {
|
#for i in range(
|
||||||
|
items.pos().len(),
|
||||||
|
) {
|
||||||
if titles.len() > 0 {
|
if titles.len() > 0 {
|
||||||
custom-block(text(weight: "bold", titles.at(i)))
|
custom-block(
|
||||||
|
text(
|
||||||
|
weight: "bold",
|
||||||
|
titles.at(i),
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
custom-block(items.pos().at(i))
|
custom-block(
|
||||||
|
items.pos().at(i),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
)
|
)
|
||||||
linebreak()
|
linebreak()
|
||||||
}
|
}
|
||||||
|
|
||||||
#let parameter-table(caption: "", ..items) = {
|
#let parameter-table(
|
||||||
|
caption: "",
|
||||||
|
..items,
|
||||||
|
) = {
|
||||||
if caption == "" {
|
if caption == "" {
|
||||||
caption = items.pos().first()
|
caption = items.pos().first()
|
||||||
}
|
}
|
||||||
longtable(
|
longtable(
|
||||||
titles: ("Parametra nosaukums", "Parametra identifikators", "Parametra apraksts", "Parametra prasības", "Parametra piemērs (/-i)"),
|
titles: (
|
||||||
|
"Parametra nosaukums",
|
||||||
|
"Parametra identifikators",
|
||||||
|
"Parametra apraksts",
|
||||||
|
"Parametra prasības",
|
||||||
|
"Parametra piemērs (/-i)",
|
||||||
|
),
|
||||||
caption: caption,
|
caption: caption,
|
||||||
..items
|
..items,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
#let procedure-table(caption: "", ..items) = {
|
#let procedure-table(
|
||||||
|
caption: "",
|
||||||
|
..items,
|
||||||
|
) = {
|
||||||
if caption == "" {
|
if caption == "" {
|
||||||
caption = items.pos().first()
|
caption = items.pos().first()
|
||||||
}
|
}
|
||||||
longtable(
|
longtable(
|
||||||
titles: ("Procedūras nosaukums", "Procedūras identifikators", "Procedūras apraksts", "Ievade", "Apstrāde", "Izvade"),
|
titles: (
|
||||||
|
"Procedūras nosaukums",
|
||||||
|
"Procedūras identifikators",
|
||||||
|
"Procedūras apraksts",
|
||||||
|
"Ievade",
|
||||||
|
"Apstrāde",
|
||||||
|
"Izvade",
|
||||||
|
),
|
||||||
caption: caption,
|
caption: caption,
|
||||||
..items
|
..items,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
#let function-table(caption: "", ..items) = {
|
#let function-table(
|
||||||
|
caption: "",
|
||||||
|
..items,
|
||||||
|
) = {
|
||||||
if caption == "" {
|
if caption == "" {
|
||||||
caption = items.pos().first()
|
caption = items.pos().first()
|
||||||
}
|
}
|
||||||
longtable(
|
longtable(
|
||||||
titles: ("Funkcijas nosaukums", "Funkcijas identifikators", "Ievads", "Ievade", "Apstrāde", "Izvade", "Paziņojumi",),
|
titles: (
|
||||||
|
"Funkcijas nosaukums",
|
||||||
|
"Funkcijas identifikators",
|
||||||
|
"Ievads",
|
||||||
|
"Ievade",
|
||||||
|
"Apstrāde",
|
||||||
|
"Izvade",
|
||||||
|
"Paziņojumi",
|
||||||
|
),
|
||||||
caption: caption,
|
caption: caption,
|
||||||
..items
|
..items,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#let entity-table-row(..items) = {
|
#let entity-table-row(
|
||||||
|
..items,
|
||||||
|
) = {
|
||||||
(
|
(
|
||||||
items.pos().at(0),
|
items.pos().at(0),
|
||||||
upper(raw(items.pos().at(1), block: false)),
|
upper(
|
||||||
upper(raw(items.pos().at(2), block: false)),
|
raw(
|
||||||
items.pos().at(3)
|
items.pos().at(1),
|
||||||
|
block: false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
upper(
|
||||||
|
raw(
|
||||||
|
items.pos().at(2),
|
||||||
|
block: false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
items.pos().at(3),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
#let entity-table(caption: "", id: (), ..items) = {
|
#let entity-table(
|
||||||
|
caption: "",
|
||||||
|
id: (),
|
||||||
|
..items,
|
||||||
|
) = {
|
||||||
if id == () {
|
if id == () {
|
||||||
id = ("id", "serial8", "primary key, not null", "Unikālais identifikators")
|
id = (
|
||||||
|
"id",
|
||||||
|
"serial8",
|
||||||
|
"primary key, not null",
|
||||||
|
"Unikālais identifikators",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
figure(
|
figure(
|
||||||
@ -109,15 +176,27 @@
|
|||||||
..for i in range(items.pos().len(), step:4){
|
..for i in range(items.pos().len(), step:4){
|
||||||
entity-table-row(..items.pos().slice(i, i+4))
|
entity-table-row(..items.pos().slice(i, i+4))
|
||||||
},
|
},
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
#let todo(..body) = {
|
#let todo(
|
||||||
TODO(..body, inline: true, big_text: 14pt, small_text: 12pt)
|
..body,
|
||||||
|
) = {
|
||||||
|
TODO(
|
||||||
|
..body,
|
||||||
|
inline: true,
|
||||||
|
big_text: 14pt,
|
||||||
|
small_text: 12pt,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
#let hyperlink-source(author, title, link_str, date) = {
|
#let hyperlink-source(
|
||||||
|
author,
|
||||||
|
title,
|
||||||
|
link_str,
|
||||||
|
date,
|
||||||
|
) = {
|
||||||
if link_str == "" {
|
if link_str == "" {
|
||||||
[#author #title Aplūkots #date.display("[day].[month].[year]")]
|
[#author #title Aplūkots #date.display("[day].[month].[year]")]
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user