mirror of
https://github.com/JustAnyones/ktu-paper.git
synced 2026-11-04 00:30:18 +00:00
style: use consistent 2 space indentation
This commit is contained in:
3 files changed
+528
-520
No files matched your search
+2
-2
@@ -13,10 +13,10 @@
|
||||
|
||||
#let __DEBUG_AUTHOR_TABLE = state("$ktu-template-DEBUG_AUTHOR_TABLE", false)
|
||||
#let debug-author-table() = {
|
||||
__DEBUG_AUTHOR_TABLE.update(true)
|
||||
__DEBUG_AUTHOR_TABLE.update(true)
|
||||
}
|
||||
|
||||
#let __HEADING_EXPERIMENT = state("$ktu-template-HEADING_EXPERIMENT", false)
|
||||
#let enable-heading-experiment() = {
|
||||
__HEADING_EXPERIMENT.update(true)
|
||||
__HEADING_EXPERIMENT.update(true)
|
||||
}
|
||||
+209
-203
@@ -3,88 +3,94 @@
|
||||
/// Wrapper around the table function that returns a KTU style conformant table.
|
||||
/// This includes setting text size to 10 pt.
|
||||
#let ktu-table(..args) = {
|
||||
show table: it => {
|
||||
set text(size: 10pt)
|
||||
// TODO: FIXME line spacing is defined differently
|
||||
set par(leading: 1em - 0.75em) // intervalas tarp eilučių -- 1
|
||||
it
|
||||
}
|
||||
table(
|
||||
..args
|
||||
)
|
||||
show table: it => {
|
||||
set text(size: 10pt)
|
||||
// TODO: FIXME line spacing is defined differently
|
||||
set par(leading: 1em - 0.75em) // intervalas tarp eilučių -- 1
|
||||
it
|
||||
}
|
||||
table(
|
||||
..args
|
||||
)
|
||||
}
|
||||
|
||||
#let ktu-author-table(
|
||||
authors: (),
|
||||
alignment: right,
|
||||
namesFirst: true, // if false, roles will be displayed first
|
||||
authors: (),
|
||||
alignment: right,
|
||||
namesFirst: true, // if false, roles will be displayed first
|
||||
) = context {
|
||||
// The layout should be a list of lists whose elements are (name, role) pairs.
|
||||
assert(authors.len() > 0, message: "author table must have at least one author")
|
||||
assert(authors.all(it => it.len() == 2), message: "each author entry must be a pair of name and role")
|
||||
// The layout should be a list of lists whose elements are (name, role) pairs.
|
||||
assert(authors.len() > 0, message: "author table must have at least one author")
|
||||
assert(authors.all(it => it.len() == 2), message: "each author entry must be a pair of name and role")
|
||||
|
||||
let frame(color) = (x, y) => (
|
||||
left: 0pt,
|
||||
right: 0pt,
|
||||
top: if y == 0 { 0.5pt + color } else { 0pt },
|
||||
bottom: 0.5pt + color,
|
||||
)
|
||||
set table(
|
||||
inset: 5.4pt,
|
||||
stroke: if __DEBUG_AUTHOR_TABLE.get() {
|
||||
0.5pt + rgb("D4AF37")
|
||||
} else {
|
||||
frame(rgb("D4AF37"))
|
||||
},
|
||||
)
|
||||
show table.cell: it => context {
|
||||
[#it]
|
||||
if it.body == [] {
|
||||
v(10pt)
|
||||
} else {
|
||||
v(0pt)
|
||||
}
|
||||
}
|
||||
|
||||
if alignment == center {
|
||||
align(center, table(
|
||||
columns: (198.5pt + 56.7pt),
|
||||
table.header([]),
|
||||
..for author in authors {
|
||||
let (name, role) = author
|
||||
name = [*#name*]
|
||||
if not namesFirst {
|
||||
(role, name) = (name, role)
|
||||
}
|
||||
(align(center)[
|
||||
#set block(below: 8pt)
|
||||
#block[#name]
|
||||
#block[#role]
|
||||
|
||||
], [])
|
||||
}
|
||||
))
|
||||
let frame(color) = (x, y) => (
|
||||
left: 0pt,
|
||||
right: 0pt,
|
||||
top: if y == 0 { 0.5pt + color } else { 0pt },
|
||||
bottom: 0.5pt + color,
|
||||
)
|
||||
set table(
|
||||
inset: 5.4pt,
|
||||
stroke: if __DEBUG_AUTHOR_TABLE.get() {
|
||||
0.5pt + rgb("D4AF37")
|
||||
} else {
|
||||
align(alignment, table(
|
||||
columns: (198.5pt, 56.7pt),
|
||||
table.header(
|
||||
[], [],
|
||||
),
|
||||
..for author in authors {
|
||||
let (name, role) = author
|
||||
name = [*#name*]
|
||||
if not namesFirst {
|
||||
(role, name) = (name, role)
|
||||
}
|
||||
(align(left)[
|
||||
#set block(below: 8pt)
|
||||
#block[#name]
|
||||
#block[#role]
|
||||
|
||||
], [], [], [])
|
||||
}
|
||||
))
|
||||
frame(rgb("D4AF37"))
|
||||
},
|
||||
)
|
||||
show table.cell: it => context {
|
||||
[#it]
|
||||
if it.body == [] {
|
||||
v(10pt)
|
||||
} else {
|
||||
v(0pt)
|
||||
}
|
||||
}
|
||||
|
||||
if alignment == center {
|
||||
align(center, table(
|
||||
columns: (198.5pt + 56.7pt),
|
||||
table.header([]),
|
||||
..for author in authors {
|
||||
let (name, role) = author
|
||||
name = [*#name*]
|
||||
if not namesFirst {
|
||||
(role, name) = (name, role)
|
||||
}
|
||||
(
|
||||
align(center)[
|
||||
#set block(below: 8pt)
|
||||
#block[#name]
|
||||
#block[#role]
|
||||
|
||||
],
|
||||
[],
|
||||
)
|
||||
}
|
||||
))
|
||||
} else {
|
||||
align(alignment, table(
|
||||
columns: (198.5pt, 56.7pt),
|
||||
table.header([], []),
|
||||
..for author in authors {
|
||||
let (name, role) = author
|
||||
name = [*#name*]
|
||||
if not namesFirst {
|
||||
(role, name) = (name, role)
|
||||
}
|
||||
(
|
||||
align(left)[
|
||||
#set block(below: 8pt)
|
||||
#block[#name]
|
||||
#block[#role]
|
||||
|
||||
],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
)
|
||||
},
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
/// This function constructs the title page header block for KTU reports. It includes the university logo, name, subheaders, the main and sub titles of the report.
|
||||
@@ -94,134 +100,134 @@
|
||||
/// - subHeaders (): Additional header information to be displayed under the university name, such as the faculty. If not provided, defaults to "Fakulteto pavadinimas".
|
||||
/// ->
|
||||
#let ktu-title-header-block(
|
||||
bigTitle: highlight[Didelis pavadinimas],
|
||||
subTitles: (),
|
||||
subHeaders: (),
|
||||
bigTitle: highlight[Didelis pavadinimas],
|
||||
subTitles: (),
|
||||
subHeaders: (),
|
||||
) = {
|
||||
let parsedSubtext = if subHeaders.len() > 0 {
|
||||
subHeaders
|
||||
} else {
|
||||
(
|
||||
highlight[Fakulteto pavadinimas],
|
||||
)
|
||||
let parsedSubtext = if subHeaders.len() > 0 {
|
||||
subHeaders
|
||||
} else {
|
||||
(
|
||||
highlight[Fakulteto pavadinimas],
|
||||
)
|
||||
}
|
||||
|
||||
let subTitles = if subTitles.len() > 0 {
|
||||
subTitles
|
||||
} else {
|
||||
(
|
||||
highlight[Rašto darbo tipas],
|
||||
)
|
||||
}
|
||||
|
||||
// Top of the title page
|
||||
v(20pt)
|
||||
align(center)[
|
||||
#image("assets/ktu-logo.png", width: 2.46cm, height: 2.69cm)
|
||||
#v(25pt)
|
||||
#block[*Kauno technologijos universitetas*]
|
||||
#for value in parsedSubtext {
|
||||
block[#value]
|
||||
}
|
||||
]
|
||||
|
||||
let subTitles = if subTitles.len() > 0 {
|
||||
subTitles
|
||||
} else {
|
||||
(
|
||||
highlight[Rašto darbo tipas],
|
||||
)
|
||||
// The title page information
|
||||
v(91pt)
|
||||
align(center)[
|
||||
#set par(justify: false)
|
||||
#set linebreak(justify: false)
|
||||
#block(text(size: 18pt, hyphenate: false)[*#bigTitle*])
|
||||
#for value in subTitles {
|
||||
block(text(size: 14pt)[#value])
|
||||
}
|
||||
|
||||
// Top of the title page
|
||||
v(20pt)
|
||||
align(center)[
|
||||
#image("assets/ktu-logo.png", width: 2.46cm, height: 2.69cm)
|
||||
#v(25pt)
|
||||
#block[*Kauno technologijos universitetas*]
|
||||
#for value in parsedSubtext {
|
||||
block[#value]
|
||||
}
|
||||
]
|
||||
|
||||
// The title page information
|
||||
v(91pt)
|
||||
align(center)[
|
||||
#set par(justify: false)
|
||||
#set linebreak(justify: false)
|
||||
#block(text(size: 18pt, hyphenate: false)[*#bigTitle*])
|
||||
#for value in subTitles {
|
||||
block(text(size: 14pt)[#value])
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
|
||||
#let ktu-heading-page(
|
||||
faculty: highlight[Fakulteto pavadinimas],
|
||||
department: none, // optional
|
||||
title: highlight[Rašto darbo pavadinimas],
|
||||
subtitles: highlight[Praktikos ataskaita / referatas ir pan. (įrašyti rašto darbo tipą)],
|
||||
authors: (
|
||||
(highlight[Vardenis Pavardenis], highlight[Projekto autorius]),
|
||||
(highlight[Vardenis Pavardenis], highlight[Vadovas]),
|
||||
),
|
||||
place: highlight[Kaunas],
|
||||
year: highlight[#datetime.today().year()],
|
||||
centerAuthors: false,
|
||||
authorNamesFirst: true, // if false, roles will be displayed first
|
||||
faculty: highlight[Fakulteto pavadinimas],
|
||||
department: none, // optional
|
||||
title: highlight[Rašto darbo pavadinimas],
|
||||
subtitles: highlight[Praktikos ataskaita / referatas ir pan. (įrašyti rašto darbo tipą)],
|
||||
authors: (
|
||||
(highlight[Vardenis Pavardenis], highlight[Projekto autorius]),
|
||||
(highlight[Vardenis Pavardenis], highlight[Vadovas]),
|
||||
),
|
||||
place: highlight[Kaunas],
|
||||
year: highlight[#datetime.today().year()],
|
||||
centerAuthors: false,
|
||||
authorNamesFirst: true, // if false, roles will be displayed first
|
||||
) = {
|
||||
let subHeaders = (faculty,)
|
||||
if department != none {
|
||||
subHeaders = (faculty, department)
|
||||
}
|
||||
if type(subtitles) != array {
|
||||
subtitles = (subtitles,)
|
||||
}
|
||||
ktu-title-header-block(
|
||||
subHeaders: subHeaders,
|
||||
bigTitle: title,
|
||||
subTitles: subtitles,
|
||||
)
|
||||
v(94pt)
|
||||
if centerAuthors {
|
||||
ktu-author-table(authors: authors, namesFirst: authorNamesFirst, alignment: center)
|
||||
} else {
|
||||
ktu-author-table(authors: authors, namesFirst: authorNamesFirst)
|
||||
}
|
||||
align(center+bottom, block([*#place, #year*]))
|
||||
let subHeaders = (faculty,)
|
||||
if department != none {
|
||||
subHeaders = (faculty, department)
|
||||
}
|
||||
if type(subtitles) != array {
|
||||
subtitles = (subtitles,)
|
||||
}
|
||||
ktu-title-header-block(
|
||||
subHeaders: subHeaders,
|
||||
bigTitle: title,
|
||||
subTitles: subtitles,
|
||||
)
|
||||
v(94pt)
|
||||
if centerAuthors {
|
||||
ktu-author-table(authors: authors, namesFirst: authorNamesFirst, alignment: center)
|
||||
} else {
|
||||
ktu-author-table(authors: authors, namesFirst: authorNamesFirst)
|
||||
}
|
||||
align(center + bottom, block([*#place, #year*]))
|
||||
}
|
||||
|
||||
#let ktu-heading-page-centered(
|
||||
faculty: highlight[Fakulteto pavadinimas],
|
||||
department: none, // optional
|
||||
title: highlight[Rašto darbo pavadinimas],
|
||||
subtitles: highlight[Praktikos ataskaita / referatas ir pan. (įrašyti rašto darbo tipą)],
|
||||
authors: (
|
||||
(highlight[Vardenis Pavardenis], highlight[Projekto autorius]),
|
||||
(highlight[Vardenis Pavardenis], highlight[Vadovas]),
|
||||
),
|
||||
authorNamesFirst: true, // if false, roles will be displayed first
|
||||
place: highlight[Kaunas],
|
||||
year: highlight[#datetime.today().year()],
|
||||
faculty: highlight[Fakulteto pavadinimas],
|
||||
department: none, // optional
|
||||
title: highlight[Rašto darbo pavadinimas],
|
||||
subtitles: highlight[Praktikos ataskaita / referatas ir pan. (įrašyti rašto darbo tipą)],
|
||||
authors: (
|
||||
(highlight[Vardenis Pavardenis], highlight[Projekto autorius]),
|
||||
(highlight[Vardenis Pavardenis], highlight[Vadovas]),
|
||||
),
|
||||
authorNamesFirst: true, // if false, roles will be displayed first
|
||||
place: highlight[Kaunas],
|
||||
year: highlight[#datetime.today().year()],
|
||||
) = {
|
||||
ktu-heading-page(
|
||||
faculty: faculty,
|
||||
department: department,
|
||||
title: title,
|
||||
subtitles: subtitles,
|
||||
authors: authors,
|
||||
place: place,
|
||||
year: year,
|
||||
centerAuthors: true,
|
||||
authorNamesFirst: authorNamesFirst,
|
||||
)
|
||||
ktu-heading-page(
|
||||
faculty: faculty,
|
||||
department: department,
|
||||
title: title,
|
||||
subtitles: subtitles,
|
||||
authors: authors,
|
||||
place: place,
|
||||
year: year,
|
||||
centerAuthors: true,
|
||||
authorNamesFirst: authorNamesFirst,
|
||||
)
|
||||
}
|
||||
|
||||
#let ktu-heading-page-normal(
|
||||
faculty: highlight[Fakulteto pavadinimas],
|
||||
department: none, // optional
|
||||
title: highlight[Rašto darbo pavadinimas],
|
||||
subtitles: highlight[Praktikos ataskaita / referatas ir pan. (įrašyti rašto darbo tipą)],
|
||||
authors: (
|
||||
(highlight[Vardenis Pavardenis], highlight[Projekto autorius]),
|
||||
(highlight[Vardenis Pavardenis], highlight[Vadovas]),
|
||||
),
|
||||
authorNamesFirst: true, // if false, roles will be displayed first
|
||||
place: highlight[Kaunas],
|
||||
year: highlight[#datetime.today().year()],
|
||||
faculty: highlight[Fakulteto pavadinimas],
|
||||
department: none, // optional
|
||||
title: highlight[Rašto darbo pavadinimas],
|
||||
subtitles: highlight[Praktikos ataskaita / referatas ir pan. (įrašyti rašto darbo tipą)],
|
||||
authors: (
|
||||
(highlight[Vardenis Pavardenis], highlight[Projekto autorius]),
|
||||
(highlight[Vardenis Pavardenis], highlight[Vadovas]),
|
||||
),
|
||||
authorNamesFirst: true, // if false, roles will be displayed first
|
||||
place: highlight[Kaunas],
|
||||
year: highlight[#datetime.today().year()],
|
||||
) = {
|
||||
ktu-heading-page(
|
||||
faculty: faculty,
|
||||
department: department,
|
||||
title: title,
|
||||
subtitles: subtitles,
|
||||
authors: authors,
|
||||
place: place,
|
||||
year: year,
|
||||
centerAuthors: false,
|
||||
authorNamesFirst: authorNamesFirst,
|
||||
)
|
||||
ktu-heading-page(
|
||||
faculty: faculty,
|
||||
department: department,
|
||||
title: title,
|
||||
subtitles: subtitles,
|
||||
authors: authors,
|
||||
place: place,
|
||||
year: year,
|
||||
centerAuthors: false,
|
||||
authorNamesFirst: authorNamesFirst,
|
||||
)
|
||||
}
|
||||
|
||||
#let ktu-academic-honestly-declaration-page(
|
||||
@@ -229,22 +235,22 @@
|
||||
author: highlight[Vardenis Pavardenis],
|
||||
projectTitle: highlight[Projekto pavadinimas],
|
||||
) = {
|
||||
ktu-title-header-block(
|
||||
subHeaders: (faculty, author),
|
||||
bigTitle: projectTitle,
|
||||
subTitles: ("Akademinio sąžiningumo deklaracija",)
|
||||
)
|
||||
v(20pt)
|
||||
[
|
||||
Patvirtinu, kad:
|
||||
+ baigiamąjį projektą parengiau savarankiškai ir sąžiningai, nepažeisdama(s) kitų asmenų autoriaus ar kitų teisių, laikydamasi(s) Lietuvos Respublikos autorių teisių ir gretutinių teisių įstatymo nuostatų, Kauno technologijos universiteto (toliau -- Universitetas) intelektinės nuosavybės valdymo ir perdavimo nuostatų bei Universiteto akademinės etikos kodekse nustatytų etikos reikalavimų;
|
||||
+ baigiamajame projekte visi pateikti duomenys ir tyrimų rezultatai yra teisingi ir gauti teisėtai, nei viena šio projekto dalis nėra plagijuota nuo jokių spausdintinių ar elektroninių šaltinių, visos baigiamojo projekto tekste pateiktos citatos ir nuorodos yra nurodytos literatūros sąraše;
|
||||
+ įstatymų nenumatytų piniginių sumų už baigiamąjį projektą ar jo dalis niekam nesu mokėjęs (-usi);
|
||||
+ suprantu, kad išaiškėjus nesąžiningumo ar kitų asmenų teisių pažeidimo faktui, man bus taikomos akademinės nuobaudos pagal Universitete galiojančią tvarką ir būsiu pašalinta(s) iš Universiteto, o baigiamasis projektas gali būti pateiktas Akademinės etikos ir procedūrų kontrolieriaus tarnybai nagrinėjant galimą akademinės etikos pažeidimą.
|
||||
ktu-title-header-block(
|
||||
subHeaders: (faculty, author),
|
||||
bigTitle: projectTitle,
|
||||
subTitles: ("Akademinio sąžiningumo deklaracija",),
|
||||
)
|
||||
v(20pt)
|
||||
[
|
||||
Patvirtinu, kad:
|
||||
+ baigiamąjį projektą parengiau savarankiškai ir sąžiningai, nepažeisdama(s) kitų asmenų autoriaus ar kitų teisių, laikydamasi(s) Lietuvos Respublikos autorių teisių ir gretutinių teisių įstatymo nuostatų, Kauno technologijos universiteto (toliau -- Universitetas) intelektinės nuosavybės valdymo ir perdavimo nuostatų bei Universiteto akademinės etikos kodekse nustatytų etikos reikalavimų;
|
||||
+ baigiamajame projekte visi pateikti duomenys ir tyrimų rezultatai yra teisingi ir gauti teisėtai, nei viena šio projekto dalis nėra plagijuota nuo jokių spausdintinių ar elektroninių šaltinių, visos baigiamojo projekto tekste pateiktos citatos ir nuorodos yra nurodytos literatūros sąraše;
|
||||
+ įstatymų nenumatytų piniginių sumų už baigiamąjį projektą ar jo dalis niekam nesu mokėjęs (-usi);
|
||||
+ suprantu, kad išaiškėjus nesąžiningumo ar kitų asmenų teisių pažeidimo faktui, man bus taikomos akademinės nuobaudos pagal Universitete galiojančią tvarką ir būsiu pašalinta(s) iš Universiteto, o baigiamasis projektas gali būti pateiktas Akademinės etikos ir procedūrų kontrolieriaus tarnybai nagrinėjant galimą akademinės etikos pažeidimą.
|
||||
|
||||
#v(10pt)
|
||||
#h(58%) #author
|
||||
#v(10pt)
|
||||
#h(58%) #author
|
||||
|
||||
#h(58%) _Patvirtinta elektroniniu būdu_
|
||||
]
|
||||
#h(58%) _Patvirtinta elektroniniu būdu_
|
||||
]
|
||||
}
|
||||
+317
-315
@@ -1,38 +1,38 @@
|
||||
#import "@preview/codly:1.3.0": codly, codly-init
|
||||
#import "config.typ": debug-author-table, enable-heading-experiment, __HEADING_EXPERIMENT, __FIG_PER_SECTION, __UPPERCASE_SECTION_TITLES
|
||||
#import "fragments.typ": (
|
||||
ktu-table,
|
||||
ktu-table,
|
||||
|
||||
// building blocks
|
||||
ktu-author-table, ktu-title-header-block,
|
||||
// building blocks
|
||||
ktu-author-table, ktu-title-header-block,
|
||||
|
||||
ktu-heading-page, ktu-heading-page-centered, ktu-heading-page-normal,
|
||||
ktu-academic-honestly-declaration-page
|
||||
ktu-heading-page, ktu-heading-page-centered, ktu-heading-page-normal,
|
||||
ktu-academic-honestly-declaration-page
|
||||
)
|
||||
#import "figures.typ": (
|
||||
ref-no, custom-ref,
|
||||
ref-no, custom-ref,
|
||||
|
||||
__fig-supplement,
|
||||
__figure-supplement-of,
|
||||
__get-locatable-element-number,
|
||||
__reset-figure-counters,
|
||||
__equation-numbering,
|
||||
__normalize-figure-kinds,
|
||||
__USER_FIGURE_KINDS,
|
||||
__fig-supplement,
|
||||
__figure-supplement-of,
|
||||
__get-locatable-element-number,
|
||||
__reset-figure-counters,
|
||||
__equation-numbering,
|
||||
__normalize-figure-kinds,
|
||||
__USER_FIGURE_KINDS,
|
||||
|
||||
__format-ref,
|
||||
__format-figure,
|
||||
__format-ref,
|
||||
__format-figure,
|
||||
)
|
||||
|
||||
/**
|
||||
* Paruošta pagal "Rašto ..."
|
||||
*/
|
||||
*/
|
||||
|
||||
/*
|
||||
* Further reading required:
|
||||
* - Double line spacing | https://github.com/typst/typst/issues/106
|
||||
* - Proposal: change `leading` option to `line-height` | https://github.com/typst/typst/issues/4224
|
||||
*/
|
||||
*/
|
||||
|
||||
#let __METADATA_HEADING_ALIGN_LEFT = metadata("heading-align-left");
|
||||
|
||||
@@ -44,23 +44,23 @@
|
||||
/// - alignLeft (bool): Whether the heading should be left-aligned or centered.
|
||||
/// ->
|
||||
#let unnumbered-heading(headingElement, alignLeft: false) = {
|
||||
let fields = headingElement.fields()
|
||||
let body = fields.body
|
||||
let level = fields.at("level", default: 1)
|
||||
let fields = headingElement.fields()
|
||||
let body = fields.body
|
||||
let level = fields.at("level", default: 1)
|
||||
|
||||
if alignLeft {
|
||||
body = body + __METADATA_HEADING_ALIGN_LEFT
|
||||
}
|
||||
if alignLeft {
|
||||
body = body + __METADATA_HEADING_ALIGN_LEFT
|
||||
}
|
||||
|
||||
heading(level: level, numbering: none, body)
|
||||
heading(level: level, numbering: none, body)
|
||||
}
|
||||
|
||||
#let appendix-item(body) = {
|
||||
heading(
|
||||
metadata("appendix-heading") + "priedas. " + body,
|
||||
level: 2,
|
||||
numbering: (..any) => {str(any.at(1))}
|
||||
)
|
||||
heading(
|
||||
metadata("appendix-heading") + "priedas. " + body,
|
||||
level: 2,
|
||||
numbering: (..any) => {str(any.at(1))}
|
||||
)
|
||||
}
|
||||
|
||||
// Utility function to round numbers with padded zeros
|
||||
@@ -69,8 +69,7 @@
|
||||
let s = str(rounded)
|
||||
let parts = s.split(".")
|
||||
let integer-part = parts.at(0)
|
||||
let decimal-part = if parts.len() == 2 { parts.at(1) } else { ""}
|
||||
|
||||
let decimal-part = if parts.len() == 2 { parts.at(1) } else { "" }
|
||||
|
||||
let padded-decimal = if decimals > 0 {
|
||||
let current-decimal-length = decimal-part.len()
|
||||
@@ -98,124 +97,124 @@
|
||||
/// - title (auto | content | none): Same as outline title.
|
||||
/// -> outline
|
||||
#let __ktu_outline(
|
||||
depth: none,
|
||||
indent: 0em, // Disable the default outline indenting
|
||||
target: heading,
|
||||
title: auto
|
||||
depth: none,
|
||||
indent: 0em, // Disable the default outline indenting
|
||||
target: heading,
|
||||
title: auto,
|
||||
) = {
|
||||
// TODO: įtrauka
|
||||
set block(spacing: 0em)
|
||||
// genius solution by @two_horus on Discord (364397430059302912)
|
||||
show outline: o => context {
|
||||
// If it's a heading, show the default outline with bold text
|
||||
if (o.target == selector(heading)) {
|
||||
// Determine whether to uppercase section titles based on the global setting
|
||||
let isUpper = __UPPERCASE_SECTION_TITLES.get()
|
||||
// TODO: įtrauka
|
||||
set block(spacing: 0em)
|
||||
// genius solution by @two_horus on Discord (364397430059302912)
|
||||
show outline: o => context {
|
||||
// If it's a heading, show the default outline with bold text
|
||||
if (o.target == selector(heading)) {
|
||||
// Determine whether to uppercase section titles based on the global setting
|
||||
let isUpper = __UPPERCASE_SECTION_TITLES.get()
|
||||
|
||||
// Define known target widths based on KTU template
|
||||
let targets = (0.64cm, 0.96cm, 1.28cm, 1.6cm, 1.92cm)
|
||||
// Define known target widths based on KTU template
|
||||
let targets = (0.64cm, 0.96cm, 1.28cm, 1.6cm, 1.92cm)
|
||||
|
||||
// Apply custom outline entry formatting
|
||||
show outline.entry: it => {
|
||||
// Recompute the gap based on the prefix content, so that the outline entry is indented
|
||||
// from the left regardless of the length of the prefix (based on the requirement)
|
||||
let prefixContent = it.prefix()
|
||||
let measurement = measure(prefixContent)
|
||||
let target = targets.at(it.level - 1, default: 0.64cm)
|
||||
let newGap = target - measurement.width
|
||||
if it.element.body.has("children") and it.element.body.children.at(0) == metadata("appendix-heading") {
|
||||
target = 0.64cm
|
||||
}
|
||||
let newGap = target - measurement.width
|
||||
|
||||
// Uppercase body if need be
|
||||
let bodyContent = it.element.body
|
||||
if isUpper and (it.level == 1 or it.element.numbering == none) {
|
||||
bodyContent = upper(bodyContent)
|
||||
}
|
||||
|
||||
// Reconstruct the it.inner content with the new body
|
||||
let formattedInner = {
|
||||
bodyContent
|
||||
[ ] // whitespace is required for backwards compat
|
||||
box(width: 1fr, it.fill)
|
||||
[ ] // whitespace is required for backwards compat
|
||||
it.page()
|
||||
}
|
||||
|
||||
link(
|
||||
it.element.location(),
|
||||
it.indented(prefixContent, formattedInner, gap: newGap),
|
||||
)
|
||||
}
|
||||
|
||||
show outline.entry.where(level: 1): e => {
|
||||
strong(e)
|
||||
}
|
||||
o
|
||||
|
||||
// If it's an image
|
||||
} else if (o.target == figure.where(kind: image)) {
|
||||
show outline.entry: it => link(
|
||||
it.element.location(),
|
||||
it.indented(
|
||||
[*#__get-locatable-element-number(it.element) #__fig-supplement(image).*],
|
||||
[ #it.inner()], gap: 0pt
|
||||
),
|
||||
)
|
||||
o
|
||||
|
||||
// If it is a table, show table formatting
|
||||
} else if (o.target == figure.where(kind: table)) {
|
||||
show outline.entry: it => link(
|
||||
it.element.location(),
|
||||
it.indented(
|
||||
[*#__get-locatable-element-number(it.element) #__fig-supplement(table).*],
|
||||
[ #it.inner()], gap: 0pt
|
||||
),
|
||||
)
|
||||
o
|
||||
|
||||
// If it is a table, show table formatting
|
||||
} else if (o.target == figure.where(kind: raw)) {
|
||||
show outline.entry: it => link(
|
||||
it.element.location(),
|
||||
it.indented(
|
||||
[*#__get-locatable-element-number(it.element) #__fig-supplement(raw).*],
|
||||
[ #it.inner()], gap: 0pt
|
||||
),
|
||||
)
|
||||
o
|
||||
|
||||
// Otherwise, try to determine what kind of outline it is
|
||||
} else {
|
||||
|
||||
/*[
|
||||
#o.target #type(o.target),
|
||||
#(o.target == "heading")
|
||||
#(o.target == heading)
|
||||
#(o.target == figure.where(kind: heading))
|
||||
#(o.target == heading.where())
|
||||
#(o.target == selector(heading))
|
||||
]*/
|
||||
|
||||
// Any other figure kind (generally, user defined kinds)
|
||||
show outline.entry: it => link(
|
||||
it.element.location(),
|
||||
it.indented(
|
||||
[*#__get-locatable-element-number(it.element) #__figure-supplement-of(it.element).*],
|
||||
[ #it.inner()], gap: 0pt
|
||||
),
|
||||
)
|
||||
o
|
||||
// Apply custom outline entry formatting
|
||||
show outline.entry: it => {
|
||||
// Recompute the gap based on the prefix content, so that the outline entry is indented
|
||||
// from the left regardless of the length of the prefix (based on the requirement)
|
||||
let prefixContent = it.prefix()
|
||||
let measurement = measure(prefixContent)
|
||||
let target = targets.at(it.level - 1, default: 0.64cm)
|
||||
let newGap = target - measurement.width
|
||||
if it.element.body.has("children") and it.element.body.children.at(0) == metadata("appendix-heading") {
|
||||
target = 0.64cm
|
||||
}
|
||||
let newGap = target - measurement.width
|
||||
|
||||
// Uppercase body if need be
|
||||
let bodyContent = it.element.body
|
||||
if isUpper and (it.level == 1 or it.element.numbering == none) {
|
||||
bodyContent = upper(bodyContent)
|
||||
}
|
||||
|
||||
// Reconstruct the it.inner content with the new body
|
||||
let formattedInner = {
|
||||
bodyContent
|
||||
[ ] // whitespace is required for backwards compat
|
||||
box(width: 1fr, it.fill)
|
||||
[ ] // whitespace is required for backwards compat
|
||||
it.page()
|
||||
}
|
||||
|
||||
link(
|
||||
it.element.location(),
|
||||
it.indented(prefixContent, formattedInner, gap: newGap),
|
||||
)
|
||||
}
|
||||
|
||||
show outline.entry.where(level: 1): e => {
|
||||
strong(e)
|
||||
}
|
||||
o
|
||||
|
||||
// If it's an image
|
||||
} else if (o.target == figure.where(kind: image)) {
|
||||
show outline.entry: it => link(
|
||||
it.element.location(),
|
||||
it.indented(
|
||||
[*#__get-locatable-element-number(it.element) #__fig-supplement(image).*],
|
||||
[ #it.inner()], gap: 0pt
|
||||
),
|
||||
)
|
||||
o
|
||||
|
||||
// If it is a table, show table formatting
|
||||
} else if (o.target == figure.where(kind: table)) {
|
||||
show outline.entry: it => link(
|
||||
it.element.location(),
|
||||
it.indented(
|
||||
[*#__get-locatable-element-number(it.element) #__fig-supplement(table).*],
|
||||
[ #it.inner()], gap: 0pt
|
||||
),
|
||||
)
|
||||
o
|
||||
|
||||
// If it is a table, show table formatting
|
||||
} else if (o.target == figure.where(kind: raw)) {
|
||||
show outline.entry: it => link(
|
||||
it.element.location(),
|
||||
it.indented(
|
||||
[*#__get-locatable-element-number(it.element) #__fig-supplement(raw).*],
|
||||
[ #it.inner()], gap: 0pt
|
||||
),
|
||||
)
|
||||
o
|
||||
|
||||
// Otherwise, try to determine what kind of outline it is
|
||||
} else {
|
||||
|
||||
/*[
|
||||
#o.target #type(o.target),
|
||||
#(o.target == "heading")
|
||||
#(o.target == heading)
|
||||
#(o.target == figure.where(kind: heading))
|
||||
#(o.target == heading.where())
|
||||
#(o.target == selector(heading))
|
||||
]*/
|
||||
|
||||
// Any other figure kind (generally, user defined kinds)
|
||||
show outline.entry: it => link(
|
||||
it.element.location(),
|
||||
it.indented(
|
||||
[*#__get-locatable-element-number(it.element) #__figure-supplement-of(it.element).*],
|
||||
[ #it.inner()], gap: 0pt
|
||||
),
|
||||
)
|
||||
o
|
||||
}
|
||||
outline(depth: depth, indent: indent, target: target, title: title)
|
||||
}
|
||||
outline(depth: depth, indent: indent, target: target, title: title)
|
||||
}
|
||||
|
||||
// Doesn't work in Typst 0.12.0 due to relative paths
|
||||
#let bibliography-list(path) = {
|
||||
bibliography(path, title: "Literatūros sąrašas", full: true)
|
||||
bibliography(path, title: "Literatūros sąrašas", full: true)
|
||||
}
|
||||
|
||||
/// Returns a KTU style conformant outline.
|
||||
@@ -225,24 +224,24 @@
|
||||
/// - title (auto | content | none): Same as outline title.
|
||||
/// -> outline
|
||||
#let ktu-outline(
|
||||
depth: none,
|
||||
indent: 0em, // Disable the default outline indenting
|
||||
target: heading,
|
||||
title: auto
|
||||
depth: none,
|
||||
indent: 0em, // Disable the default outline indenting
|
||||
target: heading,
|
||||
title: auto,
|
||||
) = {
|
||||
__ktu_outline(depth: depth, indent: indent, target: target, title: title)
|
||||
__ktu_outline(depth: depth, indent: indent, target: target, title: title)
|
||||
}
|
||||
|
||||
#let ktu-table-of-contents(depth: 3) = {
|
||||
ktu-outline(target: heading, title: "Turinys", depth: depth)
|
||||
ktu-outline(target: heading, title: "Turinys", depth: depth)
|
||||
}
|
||||
|
||||
#let ktu-table-list() = {
|
||||
ktu-outline(title: heading("Lentelių sąrašas", outlined: true), target: figure.where(kind: table))
|
||||
ktu-outline(title: heading("Lentelių sąrašas", outlined: true), target: figure.where(kind: table))
|
||||
}
|
||||
|
||||
#let ktu-picture-list() = {
|
||||
ktu-outline(title: heading("Paveikslų sąrašas", outlined: true), target: figure.where(kind: image))
|
||||
ktu-outline(title: heading("Paveikslų sąrašas", outlined: true), target: figure.where(kind: image))
|
||||
}
|
||||
|
||||
#let ktu-code-list() = {
|
||||
@@ -255,185 +254,188 @@
|
||||
/// - title (str): Title of the outline
|
||||
/// - kind (str): Type of the figure
|
||||
#let custom-list(title, kind) = {
|
||||
__ktu_outline(title: heading(title, outlined: true), target: figure.where(kind: kind))
|
||||
__ktu_outline(title: heading(title, outlined: true), target: figure.where(kind: kind))
|
||||
}
|
||||
|
||||
#let setup-code(body) = {
|
||||
show: codly-init.with()
|
||||
codly(
|
||||
fill: white,
|
||||
zebra-fill: none,
|
||||
stroke: none,
|
||||
display-name: false,
|
||||
display-icon: false,
|
||||
)
|
||||
show raw: set text(font: "Hack", spacing: 80%)
|
||||
body
|
||||
show: codly-init.with()
|
||||
codly(
|
||||
fill: white,
|
||||
zebra-fill: none,
|
||||
stroke: none,
|
||||
display-name: false,
|
||||
display-icon: false,
|
||||
)
|
||||
show raw: set text(font: "Hack", spacing: 80%)
|
||||
body
|
||||
}
|
||||
|
||||
#let __page_rules(font: "Times New Roman", body) = {
|
||||
// Page size and margins
|
||||
set page(
|
||||
paper: "a4",
|
||||
width: 210mm,
|
||||
height: 297mm,
|
||||
margin: (
|
||||
left: 30mm,
|
||||
right: 10mm,
|
||||
bottom: 20mm,
|
||||
top: 20mm
|
||||
)
|
||||
)
|
||||
set page(width: 595pt, height: 842pt)
|
||||
// Page size and margins
|
||||
set page(
|
||||
paper: "a4",
|
||||
width: 210mm,
|
||||
height: 297mm,
|
||||
margin: (
|
||||
left: 30mm,
|
||||
right: 10mm,
|
||||
bottom: 20mm,
|
||||
top: 20mm,
|
||||
),
|
||||
)
|
||||
set page(width: 595pt, height: 842pt)
|
||||
|
||||
// Numbering rules
|
||||
set page(numbering: none, number-align: right)
|
||||
// Numbering rules
|
||||
set page(numbering: none, number-align: right)
|
||||
|
||||
// Use Lithuanian quotes
|
||||
set smartquote(quotes: "„“")
|
||||
// Use Lithuanian quotes
|
||||
set smartquote(quotes: "„“")
|
||||
|
||||
// Heading numbering
|
||||
set heading(numbering: "1.")
|
||||
// Heading numbering
|
||||
set heading(numbering: "1.")
|
||||
|
||||
// Number equations
|
||||
set math.equation(numbering: __equation-numbering)
|
||||
// Number equations
|
||||
set math.equation(numbering: __equation-numbering)
|
||||
|
||||
// Set text font
|
||||
set text(
|
||||
font: font,
|
||||
size: 12pt,
|
||||
lang: "lt",
|
||||
// Change where the bounding box is drawn for the text
|
||||
top-edge: "ascender",
|
||||
bottom-edge: "descender",
|
||||
kerning: false, // Disable kerning
|
||||
)
|
||||
// Set text font
|
||||
set text(
|
||||
font: font,
|
||||
size: 12pt,
|
||||
lang: "lt",
|
||||
// Change where the bounding box is drawn for the text
|
||||
top-edge: "ascender",
|
||||
bottom-edge: "descender",
|
||||
kerning: false, // Disable kerning
|
||||
)
|
||||
|
||||
// Text line interval, defined differently in Typst
|
||||
let leading = 1.15em // Your line spacing (1, 1.5, 2, etc.)
|
||||
let leading = leading - 0.75em // "Normalization"
|
||||
set par(leading: leading)
|
||||
// Text line interval, defined differently in Typst
|
||||
let leading = 1.15em // Your line spacing (1, 1.5, 2, etc.)
|
||||
let leading = leading - 0.75em // "Normalization"
|
||||
set par(leading: leading)
|
||||
|
||||
// Indentation for lists and enumerations
|
||||
set enum(indent: 12pt)
|
||||
set list(indent: 12pt)
|
||||
// Indentation for lists and enumerations
|
||||
set enum(indent: 12pt)
|
||||
set list(indent: 12pt)
|
||||
|
||||
body
|
||||
body
|
||||
}
|
||||
|
||||
#let setup-page(
|
||||
font: "Times New Roman",
|
||||
uppercaseSectionTitles: false,
|
||||
unnumberedHeadingAlignment: center,
|
||||
body
|
||||
font: "Times New Roman",
|
||||
uppercaseSectionTitles: false,
|
||||
unnumberedHeadingAlignment: center,
|
||||
body,
|
||||
) = {
|
||||
show: __page_rules.with(font: font)
|
||||
show: __page_rules.with(font: font)
|
||||
|
||||
// Pagal formaliuosius rašto darbų reikalavimus
|
||||
// Pagal formaliuosius rašto darbų reikalavimus
|
||||
|
||||
// Tarpas tarp teksto pastraipų
|
||||
set par(spacing: 10pt)
|
||||
// Tarpas tarp teksto pastraipų
|
||||
set par(spacing: 10pt)
|
||||
set block(below: 10pt)
|
||||
|
||||
// Teksto lygiuotė, abipusė
|
||||
set par(justify: true)
|
||||
set linebreak(justify: true)
|
||||
|
||||
let maybe-uppercase(body) = {
|
||||
if uppercaseSectionTitles {
|
||||
upper(body)
|
||||
} else {
|
||||
body
|
||||
}
|
||||
}
|
||||
|
||||
// Antraštės
|
||||
// Force them into blocks so they don't count as paragraphs
|
||||
show heading: it => {
|
||||
// Align everything left
|
||||
set align(left)
|
||||
|
||||
// Visų antraščių teksto dydis vienodas
|
||||
// Visų antraščių teksto šifras paryškintas
|
||||
set text(size: 12pt)
|
||||
set block(below: 10pt)
|
||||
|
||||
// Teksto lygiuotė, abipusė
|
||||
set par(justify: true)
|
||||
set linebreak(justify: true)
|
||||
let useExperiment = __HEADING_EXPERIMENT.get()
|
||||
|
||||
let maybe-uppercase(body) = {
|
||||
if uppercaseSectionTitles {
|
||||
upper(body)
|
||||
} else {
|
||||
body
|
||||
}
|
||||
// TODO: intervalas tarp eilučių – 1,15 kiekvienai antraštei
|
||||
|
||||
// Antraštė be nr.
|
||||
if it.numbering == none {
|
||||
// Centruota lygiuotė by default, but can be overridden by the user
|
||||
let explicitlyAlignLeft = (
|
||||
it.body.has("children")
|
||||
and it.body.children.len() > 1
|
||||
and it.body.children.at(1) == __METADATA_HEADING_ALIGN_LEFT
|
||||
)
|
||||
|
||||
// If the user explicitly set alignLeft to true, we should align left regardless of the global setting
|
||||
let targetAlign = if explicitlyAlignLeft { left } else { unnumberedHeadingAlignment }
|
||||
|
||||
set align(targetAlign)
|
||||
|
||||
// atstumas prieš ir po antraštės - 10 pt
|
||||
block[#maybe-uppercase(it.body)]
|
||||
if useExperiment {
|
||||
v(10pt)
|
||||
}
|
||||
}
|
||||
|
||||
// Antraštės
|
||||
// Force them into blocks so they don't count as paragraphs
|
||||
show heading: it => {
|
||||
// Align everything left
|
||||
set align(left)
|
||||
// Skyrius
|
||||
if it.numbering != none and it.level == 1 {
|
||||
// abipusė lygiuotė
|
||||
set par(justify: true)
|
||||
|
||||
// Visų antraščių teksto dydis vienodas
|
||||
// Visų antraščių teksto šifras paryškintas
|
||||
set text(size: 12pt)
|
||||
set block(below: 10pt)
|
||||
// Reset figure counters if numbering per section is enabled
|
||||
if __FIG_PER_SECTION.get() {
|
||||
__reset-figure-counters()
|
||||
}
|
||||
|
||||
let useExperiment = __HEADING_EXPERIMENT.get()
|
||||
|
||||
// TODO: intervalas tarp eilučių – 1,15 kiekvienai antraštei
|
||||
|
||||
// Antraštė be nr.
|
||||
if it.numbering == none {
|
||||
// Centruota lygiuotė by default, but can be overridden by the user
|
||||
let explicitlyAlignLeft = it.body.has("children") and it.body.children.len() > 1 and it.body.children.at(1) == __METADATA_HEADING_ALIGN_LEFT
|
||||
|
||||
// If the user explicitly set alignLeft to true, we should align left regardless of the global setting
|
||||
let targetAlign = if explicitlyAlignLeft { left } else { unnumberedHeadingAlignment }
|
||||
|
||||
set align(targetAlign)
|
||||
|
||||
// atstumas prieš ir po antraštės - 10 pt
|
||||
block[#maybe-uppercase(it.body)]
|
||||
if useExperiment {
|
||||
v(10pt)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Skyrius
|
||||
if it.numbering != none and it.level == 1 {
|
||||
// abipusė lygiuotė
|
||||
set par(justify: true)
|
||||
|
||||
// Reset figure counters if numbering per section is enabled
|
||||
if __FIG_PER_SECTION.get() {
|
||||
__reset-figure-counters()
|
||||
}
|
||||
|
||||
// po antraštės - 10 pt
|
||||
block[#counter(heading).display() #maybe-uppercase(it.body)]
|
||||
if useExperiment {
|
||||
v(10pt)
|
||||
}
|
||||
}
|
||||
|
||||
// Determine whether the heading has appending metadata attached and adjust its display accordingly
|
||||
let isAppendixHeading = it.body.has("children") and it.body.children.at(0) == metadata("appendix-heading")
|
||||
if isAppendixHeading {
|
||||
block[#counter(heading).display(it.numbering) #it.body]
|
||||
}
|
||||
|
||||
// Poskyris ir skyrelis
|
||||
if not isAppendixHeading and it.numbering != none and it.level != 1 {
|
||||
// abipusė lygiuotė
|
||||
set par(justify: true)
|
||||
|
||||
// prieš ir po antraštės - 10 pt
|
||||
if useExperiment {
|
||||
v(10pt)
|
||||
}
|
||||
block[#counter(heading).display() #it.body]
|
||||
if useExperiment {
|
||||
v(10pt)
|
||||
}
|
||||
}
|
||||
// po antraštės - 10 pt
|
||||
block[#counter(heading).display() #maybe-uppercase(it.body)]
|
||||
if useExperiment {
|
||||
v(10pt)
|
||||
}
|
||||
}
|
||||
|
||||
// Reference style and numbering
|
||||
show ref: it => __format-ref(it)
|
||||
|
||||
// Figure captions and numbering
|
||||
show figure: it => __format-figure(it)
|
||||
|
||||
// Bibliography citing style
|
||||
set bibliography(style: "assets/iso690-numeric-lt.csl")
|
||||
|
||||
// Block equations are left-aligned
|
||||
show math.equation.where(block: true): it => {
|
||||
align(left, it)
|
||||
// Determine whether the heading has appending metadata attached and adjust its display accordingly
|
||||
let isAppendixHeading = it.body.has("children") and it.body.children.at(0) == metadata("appendix-heading")
|
||||
if isAppendixHeading {
|
||||
block[#counter(heading).display(it.numbering) #it.body]
|
||||
}
|
||||
|
||||
body
|
||||
// Poskyris ir skyrelis
|
||||
if not isAppendixHeading and it.numbering != none and it.level != 1 {
|
||||
// abipusė lygiuotė
|
||||
set par(justify: true)
|
||||
|
||||
// prieš ir po antraštės - 10 pt
|
||||
if useExperiment {
|
||||
v(10pt)
|
||||
}
|
||||
block[#counter(heading).display() #it.body]
|
||||
if useExperiment {
|
||||
v(10pt)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Reference style and numbering
|
||||
show ref: it => __format-ref(it)
|
||||
|
||||
// Figure captions and numbering
|
||||
show figure: it => __format-figure(it)
|
||||
|
||||
// Bibliography citing style
|
||||
set bibliography(style: "assets/iso690-numeric-lt.csl")
|
||||
|
||||
// Block equations are left-aligned
|
||||
show math.equation.where(block: true): it => {
|
||||
align(left, it)
|
||||
}
|
||||
|
||||
body
|
||||
}
|
||||
|
||||
/// Configure the template for a KTU paper.
|
||||
@@ -445,23 +447,23 @@
|
||||
/// `(command: (supplement: "komanda", ref-name: "komanda"))`. `ref-name`
|
||||
/// defaults to `supplement`. Use them with `figure(kind: "command", ...)`.
|
||||
#let ktu-paper(
|
||||
font: "Times New Roman",
|
||||
figureNumberingPerSection: false,
|
||||
figureKinds: (:),
|
||||
// Not sure about formal conformity of deviating
|
||||
// from the defaults of the next options,
|
||||
// but some modules may require them
|
||||
uppercaseSectionTitles: false,
|
||||
unnumberedHeadingAlignment: center,
|
||||
body
|
||||
) = context {
|
||||
show: setup-page.with(
|
||||
font: font,
|
||||
uppercaseSectionTitles: uppercaseSectionTitles,
|
||||
unnumberedHeadingAlignment: unnumberedHeadingAlignment,
|
||||
)
|
||||
__FIG_PER_SECTION.update(figureNumberingPerSection)
|
||||
__USER_FIGURE_KINDS.update(__normalize-figure-kinds(figureKinds))
|
||||
__UPPERCASE_SECTION_TITLES.update(uppercaseSectionTitles)
|
||||
body
|
||||
font: "Times New Roman",
|
||||
figureNumberingPerSection: false,
|
||||
figureKinds: (:),
|
||||
// Not sure about formal conformity of deviating
|
||||
// from the defaults of the next options,
|
||||
// but some modules may require them
|
||||
uppercaseSectionTitles: false,
|
||||
unnumberedHeadingAlignment: center,
|
||||
body,
|
||||
) = context {
|
||||
show: setup-page.with(
|
||||
font: font,
|
||||
uppercaseSectionTitles: uppercaseSectionTitles,
|
||||
unnumberedHeadingAlignment: unnumberedHeadingAlignment,
|
||||
)
|
||||
__FIG_PER_SECTION.update(figureNumberingPerSection)
|
||||
__USER_FIGURE_KINDS.update(__normalize-figure-kinds(figureKinds))
|
||||
__UPPERCASE_SECTION_TITLES.update(uppercaseSectionTitles)
|
||||
body
|
||||
}
|
||||
Reference in new issue
Block a user