init Vorlage
This commit is contained in:
43
acro.typ
Normal file
43
acro.typ
Normal file
@@ -0,0 +1,43 @@
|
||||
#let acronyms = (
|
||||
XML: "Extensible Markup Language",
|
||||
)
|
||||
|
||||
#let acro(name) = context {
|
||||
// Prüfen, ob das Akronym vorher schon verwendet wurde
|
||||
let previous = query(selector(<acro>).before(here()))
|
||||
.filter(it => it.value == name)
|
||||
|
||||
// Marker setzen für diese Verwendung
|
||||
[#metadata(name)<acro>]
|
||||
|
||||
// Beim ersten Mal: volle Form mit Abkürzung, danach: nur Kurzform
|
||||
if previous.len() == 0 {
|
||||
link(label("acro-" + name))[
|
||||
#acronyms.at(name) (#name)
|
||||
]
|
||||
} else {
|
||||
link(label("acro-" + name))[#name]
|
||||
}
|
||||
}
|
||||
|
||||
#let acro-list() = context {
|
||||
// Alle verwendeten Akronyme sammeln
|
||||
let used = query(selector(<acro>))
|
||||
.map(it => it.value)
|
||||
.dedup()
|
||||
|
||||
// Nur verwendete Akronyme filtern und sortieren
|
||||
let entries = acronyms.pairs()
|
||||
.filter(pair => used.contains(pair.at(0)))
|
||||
.sorted(key: pair => pair.at(0))
|
||||
|
||||
table(
|
||||
columns: (auto, 1fr),
|
||||
stroke: none,
|
||||
column-gutter: 1em,
|
||||
..entries.map(pair => (
|
||||
[#strong(pair.at(0)) #label("acro-" + pair.at(0))],
|
||||
[#pair.at(1)]
|
||||
)).flatten()
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user