create letter template
This commit is contained in:
parent
8f2dbed60c
commit
01d7fc4cb7
16 changed files with 354 additions and 343 deletions
|
@ -1,6 +1,6 @@
|
||||||
#import "templates/doc.typ": tmpl
|
#import "templates/tmpl_doc.typ": tmpl_doc
|
||||||
|
|
||||||
#show: doc => tmpl(
|
#show: doc => tmpl_doc(
|
||||||
title: "3D Druck Service - AGB",
|
title: "3D Druck Service - AGB",
|
||||||
changes: (
|
changes: (
|
||||||
[v1.0], [29.07.2021], [erste Fassung],
|
[v1.0], [29.07.2021], [erste Fassung],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#import "templates/doc.typ": tmpl
|
#import "templates/tmpl_doc.typ": tmpl_doc
|
||||||
|
|
||||||
#show: doc => tmpl(
|
#show: doc => tmpl_doc(
|
||||||
title: "Beitragsordnung",
|
title: "Beitragsordnung",
|
||||||
changes: (
|
changes: (
|
||||||
[v1.0], [19.10.2020], [erste Fassung],
|
[v1.0], [19.10.2020], [erste Fassung],
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#import "templates/form.typ": tmpl, form, form_field, form_inline
|
#import "templates/tmpl_page.typ": tmpl_page
|
||||||
|
#import "templates/form.typ": form, form_field, form_inline
|
||||||
|
|
||||||
#show: doc => tmpl(
|
#show: doc => tmpl_page(
|
||||||
title: "Beitrittserklärung",
|
title: "Beitrittserklärung",
|
||||||
version: "v1.6",
|
version: "v1.6",
|
||||||
change_date: "09.09.2023",
|
change_date: "09.09.2023",
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#import "templates/form.typ": tmpl, form, form_field
|
#import "templates/tmpl_page.typ": tmpl_page
|
||||||
|
#import "templates/form.typ": form, form_field
|
||||||
|
|
||||||
#show: doc => tmpl(
|
#show: doc => tmpl_page(
|
||||||
title: "Datenschutzrechtliche Hinweise",
|
title: "Datenschutzrechtliche Hinweise",
|
||||||
version: "v1.2",
|
version: "v1.2",
|
||||||
change_date: "24.06.2023",
|
change_date: "24.06.2023",
|
||||||
text_size: 11.25pt,
|
|
||||||
doc,
|
doc,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#import "templates/form.typ": tmpl, form, form_field, form_inline
|
#import "templates/tmpl_page.typ": tmpl_page
|
||||||
|
#import "templates/form.typ": form, form_field, form_inline
|
||||||
|
|
||||||
#show: doc => tmpl(
|
#show: doc => tmpl_page(
|
||||||
title: "Haftungsausschluss",
|
title: "Haftungsausschluss",
|
||||||
version: "v1.0",
|
version: "v1.0",
|
||||||
change_date: "23.06.2023",
|
change_date: "23.06.2023",
|
||||||
|
|
200
rechnung.typ
200
rechnung.typ
|
@ -1,158 +1,76 @@
|
||||||
#import "templates/form.typ": tmpl, colors
|
#import "templates/tmpl_letter.typ": tmpl_letter
|
||||||
|
#import "templates/common.typ": colors, money
|
||||||
#let config = yaml("rechnung.yml")
|
#let config = yaml("rechnung.yml")
|
||||||
|
|
||||||
#show: doc => tmpl(
|
#show: doc => tmpl_letter(
|
||||||
title: (
|
title: (
|
||||||
invoice: "Rechnung",
|
invoice: "Rechnung",
|
||||||
offer: "Angebot",
|
offer: "Angebot",
|
||||||
estimate: "Kostenvoranschlag",
|
estimate: "Kostenvoranschlag",
|
||||||
internal: "Eigenbeleg"
|
internal: "Eigenbeleg"
|
||||||
).at(config.type),
|
).at(config.type),
|
||||||
version: "",
|
address: config.address,
|
||||||
change_date: config.date,
|
info: [
|
||||||
text_size: 11.25pt,
|
Datum: #config.date \
|
||||||
|
#if config.type != "internal" [
|
||||||
|
Kunden-Nr.: #config.customer_no \
|
||||||
|
]
|
||||||
|
#if config.type == "invoice" [
|
||||||
|
Rechnungs-Nr.: #config.invoice_no \
|
||||||
|
] else if config.type == "offer" [
|
||||||
|
Angebots-Nr.: #config.invoice_no \
|
||||||
|
]
|
||||||
|
],
|
||||||
|
footer: [
|
||||||
|
#if config.type == "invoice" [
|
||||||
|
Vielen Dank für deine Bestellung! \
|
||||||
|
] else if config.type == "estimate" or config.type == "offer" [
|
||||||
|
Wir freuen uns auf deine Bestellung! \
|
||||||
|
] else if config.type == "internal" [
|
||||||
|
*Grund für Eigenbeleg:* \
|
||||||
|
#config.internal_reason
|
||||||
|
]
|
||||||
|
|
||||||
|
#text(size: 0.7em, fill: colors.subtext)[
|
||||||
|
#if config.type == "invoice" [
|
||||||
|
Gesamtbetrag fällig in 10 Tagen ab Rechnungserhalt. \
|
||||||
|
Für überfällige Zahlungen wird eine Bearbeitungsgebühr von min. 5 % pro Monat berechnet.
|
||||||
|
] else if config.type == "offer" [
|
||||||
|
Dieses Angebot ist für einen Monat gültig.
|
||||||
|
] else if config.type == "estimate" [
|
||||||
|
Dieser Kostenvoranschlag ist unverbindlich.
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
doc,
|
doc,
|
||||||
)
|
)
|
||||||
|
|
||||||
// DIN 5008 Sichtfenster: 45mm
|
|
||||||
#place(
|
|
||||||
top+left,
|
|
||||||
dy: 25mm,
|
|
||||||
)[
|
|
||||||
#text(size: 0.75em)[#underline[swablab e.V. - Katharinenstr. 1 - 72250 Freudenstadt]] \
|
|
||||||
#v(0.5em)
|
|
||||||
#config.address
|
|
||||||
]
|
|
||||||
|
|
||||||
// DIN 5008 Informationsblock: 50mm
|
#if config.type == "invoice" [
|
||||||
#place(
|
Bitte nutze deine Rechnungs-Nr. als Verwendungszweck für die Überweisung!
|
||||||
top+right,
|
|
||||||
dy: 30mm,
|
|
||||||
)[
|
|
||||||
#v(1em)
|
|
||||||
Datum: #config.date \
|
|
||||||
#if config.type != "internal" [
|
|
||||||
Kunden-Nr.: #config.customer_no \
|
|
||||||
]
|
|
||||||
#if config.type == "invoice" [
|
|
||||||
Rechnungs-Nr.: #config.invoice_no \
|
|
||||||
] else if config.type == "offer" [
|
|
||||||
Angebots-Nr.: #config.invoice_no \
|
|
||||||
]
|
|
||||||
]
|
]
|
||||||
|
#table(
|
||||||
// DIN 5008 Faltmarke 1: 105mm
|
columns: (auto, 1fr, auto, auto, auto ,auto),
|
||||||
#place(
|
fill: (_, row) => if row == 0 { colors.highlight } else { white },
|
||||||
top+left,
|
stroke: 0.1pt + colors.subtext,
|
||||||
dy: 85mm,
|
[*Pos.*],
|
||||||
dx: -1cm,
|
[*Beschreibung*],
|
||||||
line(
|
[*Stück*],
|
||||||
length: -1em,
|
[*Einzelpreis*],
|
||||||
stroke: 0.5pt + colors.subtext
|
[*Rabatt*],
|
||||||
)
|
[*Betrag*],
|
||||||
)
|
..config.entries.enumerate().map(e => (
|
||||||
// DIN 5008 Faltmarke 2: 210mm
|
e.at(0)+1,
|
||||||
#place(
|
e.at(1).description,
|
||||||
top+left,
|
e.at(1).pieces,
|
||||||
dy: 190mm,
|
money(e.at(1).price),
|
||||||
dx: -1cm,
|
money(e.at(1).sale),
|
||||||
line(
|
money(e.at(1).pieces * e.at(1).price - e.at(1).sale),
|
||||||
length: -1em,
|
)).flatten().map(e => [#e]),
|
||||||
stroke: 0.5pt + colors.subtext
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
#let money(i) = {
|
#align(right)[
|
||||||
if i == 0 {
|
#pad(x:1em)[
|
||||||
return "0.00€"
|
*Gesamtbetrag: #money(config.entries.map(e => e.pieces * e.price - e.sale).sum())*
|
||||||
}
|
|
||||||
|
|
||||||
let j = str(calc.round(i * 100))
|
|
||||||
|
|
||||||
if i < 1 {
|
|
||||||
"0." + j.slice(-2) + "€"
|
|
||||||
} else {
|
|
||||||
j.slice(0,-2)+ "." + j.slice(-2) + "€"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// DIN 5008 nach Faltmarke 1
|
|
||||||
#place(
|
|
||||||
top+left,
|
|
||||||
dy: 85mm,
|
|
||||||
)[
|
|
||||||
#table(
|
|
||||||
columns: (auto, 1fr, auto, auto, auto ,auto),
|
|
||||||
fill: (_, row) => if row == 0 { colors.highlight } else { white },
|
|
||||||
stroke: 0.1pt + colors.subtext,
|
|
||||||
[*Pos.*],
|
|
||||||
[*Beschreibung*],
|
|
||||||
[*Stück*],
|
|
||||||
[*Einzelpreis*],
|
|
||||||
[*Rabatt*],
|
|
||||||
[*Betrag*],
|
|
||||||
..config.entries.enumerate().map(e => (
|
|
||||||
e.at(0)+1,
|
|
||||||
e.at(1).description,
|
|
||||||
e.at(1).pieces,
|
|
||||||
money(e.at(1).price),
|
|
||||||
money(e.at(1).sale),
|
|
||||||
money(e.at(1).pieces * e.at(1).price - e.at(1).sale),
|
|
||||||
)).flatten().map(e => [#e]),
|
|
||||||
)
|
|
||||||
|
|
||||||
#align(right)[
|
|
||||||
#pad(x:1em)[
|
|
||||||
*Gesamtbetrag: #money(config.entries.map(e => e.pieces * e.price - e.sale).sum())*
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
|
|
||||||
// Footer
|
|
||||||
#place(bottom+left)[
|
|
||||||
#if config.type == "invoice" [
|
|
||||||
Vielen Dank für deine Bestellung! \
|
|
||||||
] else if config.type == "estimate" or config.type == "offer" [
|
|
||||||
Wir freuen uns auf deine Bestellung! \
|
|
||||||
] else if config.type == "internal" [
|
|
||||||
*Grund für Eigenbeleg:* \
|
|
||||||
#config.internal_reason
|
|
||||||
]
|
|
||||||
|
|
||||||
#text(size: 0.7em, fill: colors.subtext)[
|
|
||||||
#if config.type == "invoice" [
|
|
||||||
Gesamtbetrag fällig in 10 Tagen ab Rechnungserhalt. \
|
|
||||||
Für überfällige Zahlungen wird eine Bearbeitungsgebühr von min. 5 % pro Monat berechnet.
|
|
||||||
] else if config.type == "offer" [
|
|
||||||
Dieses Angebot ist für einen Monat gültig.
|
|
||||||
]else if config.type == "estimate" [
|
|
||||||
Dieser Kostenvoranschlag ist unverbindlich.
|
|
||||||
]
|
|
||||||
|
|
||||||
#table(
|
|
||||||
stroke: none,
|
|
||||||
align: top+left,
|
|
||||||
columns: (1fr,1fr,auto,1fr,1fr),
|
|
||||||
[*Telefon*],[*E-Mail / Web*],[*Bankverbindung*],[*Vereinsregister*],[*Vorstand*],
|
|
||||||
[
|
|
||||||
+49 15679232971
|
|
||||||
],
|
|
||||||
[
|
|
||||||
info\@swablab.de \
|
|
||||||
https://swablab.de
|
|
||||||
],
|
|
||||||
[
|
|
||||||
VR-Bank Dornstetten-Horb \
|
|
||||||
DE12 6426 2408 0125 6340 05
|
|
||||||
],
|
|
||||||
[
|
|
||||||
VR 724909 \
|
|
||||||
Amtsgericht Stuttgart
|
|
||||||
],
|
|
||||||
[
|
|
||||||
Fabian Haas \
|
|
||||||
Manuel Knodel
|
|
||||||
],
|
|
||||||
)
|
|
||||||
]
|
]
|
||||||
]
|
]
|
|
@ -1,6 +1,6 @@
|
||||||
#import "templates/doc.typ": tmpl
|
#import "templates/tmpl_doc.typ": tmpl_doc
|
||||||
|
|
||||||
#show: doc => tmpl(
|
#show: doc => tmpl_doc(
|
||||||
title: "Satzung",
|
title: "Satzung",
|
||||||
changes: (
|
changes: (
|
||||||
[v1.0], [19.10.2020], [erste Fassung],
|
[v1.0], [19.10.2020], [erste Fassung],
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
#import "templates/form.typ": tmpl, colors, form_field
|
#import "templates/tmpl_page.typ": tmpl_page
|
||||||
|
#import "templates/common.typ": colors
|
||||||
|
#import "templates/form.typ": form_field
|
||||||
#let config = yaml("spendenbescheinigung.yml")
|
#let config = yaml("spendenbescheinigung.yml")
|
||||||
|
|
||||||
#show: doc => tmpl(
|
#show: doc => tmpl_page(
|
||||||
title: "Spendenbescheinigung",
|
title: "Spendenbescheinigung",
|
||||||
version: "",
|
|
||||||
change_date: config.date,
|
|
||||||
text_size: 11.25pt,
|
|
||||||
doc,
|
doc,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
43
templates/common.typ
Normal file
43
templates/common.typ
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#let colors = (
|
||||||
|
primary: oklch(93.84%, 0.09, 183.69deg),
|
||||||
|
secondary: oklch(73.51%, 0.168, 40.25deg),
|
||||||
|
subtext: oklch(60%, 0, 0deg),
|
||||||
|
highlight: oklch(90%, 0, 0deg),
|
||||||
|
)
|
||||||
|
|
||||||
|
#let money(i) = {
|
||||||
|
if i == 0 {
|
||||||
|
return "0.00€"
|
||||||
|
}
|
||||||
|
|
||||||
|
let j = str(calc.round(i * 100))
|
||||||
|
|
||||||
|
if i < 1 {
|
||||||
|
"0." + j.slice(-2) + "€"
|
||||||
|
} else {
|
||||||
|
j.slice(0,-2)+ "." + j.slice(-2) + "€"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#let common(title: none, doc) = {
|
||||||
|
set document(
|
||||||
|
title: title,
|
||||||
|
author: "swablab e.V."
|
||||||
|
)
|
||||||
|
|
||||||
|
set text(
|
||||||
|
font: "Noto Sans",
|
||||||
|
size: 11pt,
|
||||||
|
lang: "de"
|
||||||
|
)
|
||||||
|
|
||||||
|
set par(
|
||||||
|
justify: true
|
||||||
|
)
|
||||||
|
|
||||||
|
set page(
|
||||||
|
paper: "a4",
|
||||||
|
margin: (x: 2cm, y: 2cm),
|
||||||
|
)
|
||||||
|
doc
|
||||||
|
}
|
|
@ -1,108 +0,0 @@
|
||||||
#let tmpl(
|
|
||||||
title: none,
|
|
||||||
changes: (),
|
|
||||||
heading_size: 18pt,
|
|
||||||
heading_font: "Ubuntu",
|
|
||||||
text_size: 12pt,
|
|
||||||
text_font: "Noto Sans",
|
|
||||||
doc,
|
|
||||||
) = {
|
|
||||||
set document(
|
|
||||||
title: title,
|
|
||||||
author: "swablab e.V."
|
|
||||||
)
|
|
||||||
|
|
||||||
set text(
|
|
||||||
font: text_font,
|
|
||||||
size: text_size,
|
|
||||||
lang: "de"
|
|
||||||
)
|
|
||||||
|
|
||||||
set par(
|
|
||||||
justify: true
|
|
||||||
)
|
|
||||||
|
|
||||||
set page(
|
|
||||||
paper: "a4"
|
|
||||||
)
|
|
||||||
|
|
||||||
set enum(
|
|
||||||
numbering: "(1)"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Titelblatt
|
|
||||||
align(center)[
|
|
||||||
#image("lightmode-swablab.png", width: 70%)
|
|
||||||
|
|
||||||
#pad(top: 2em, bottom: 2em)[
|
|
||||||
#text(1.75em, font: heading_font, hyphenate: false)[
|
|
||||||
#heading(outlined: false)[*#title*]
|
|
||||||
]]
|
|
||||||
|
|
||||||
|
|
||||||
#changes.at(-3) - #changes.at(-2) \
|
|
||||||
swablab e.V. \
|
|
||||||
Katharinenstr. 1 \
|
|
||||||
72250 Freudenstadt
|
|
||||||
]
|
|
||||||
|
|
||||||
set page(
|
|
||||||
footer: [
|
|
||||||
#emph[#changes.at(-3)]
|
|
||||||
#h(2fr)
|
|
||||||
#counter(page).display()
|
|
||||||
],
|
|
||||||
margin: (bottom: 2.5cm)
|
|
||||||
)
|
|
||||||
|
|
||||||
// Inhaltsverzeichnis
|
|
||||||
show heading: it => [
|
|
||||||
#v(2.25em, weak: true)
|
|
||||||
#set text(font: heading_font, heading_size)
|
|
||||||
#strong[#it.body]
|
|
||||||
#v(1.25em, weak: true)
|
|
||||||
]
|
|
||||||
|
|
||||||
outline(title: [*Inhaltsverzeichnis*])
|
|
||||||
|
|
||||||
set par(
|
|
||||||
leading: 1em,
|
|
||||||
)
|
|
||||||
|
|
||||||
pagebreak()
|
|
||||||
|
|
||||||
// Formatierung Inhalt
|
|
||||||
set heading(numbering: "§1")
|
|
||||||
show heading: it => [
|
|
||||||
#v(2.25em, weak: true)
|
|
||||||
#set text(font: heading_font, heading_size)
|
|
||||||
#strong[
|
|
||||||
#counter(heading).display()
|
|
||||||
#it.body
|
|
||||||
]
|
|
||||||
#v(1.25em, weak: true)
|
|
||||||
]
|
|
||||||
|
|
||||||
// Inhalt
|
|
||||||
doc
|
|
||||||
|
|
||||||
pagebreak()
|
|
||||||
// Änderungen
|
|
||||||
set heading(numbering: none)
|
|
||||||
show heading: it => [
|
|
||||||
#set text(font: heading_font, heading_size)
|
|
||||||
#strong[#it.body]
|
|
||||||
#v(1.25em, weak: true)
|
|
||||||
]
|
|
||||||
block(breakable: false)[
|
|
||||||
#heading([Änderungen])
|
|
||||||
#table(
|
|
||||||
columns: (auto, auto, 1fr),
|
|
||||||
inset: 8pt,
|
|
||||||
align: auto,
|
|
||||||
stroke: 0.5pt,
|
|
||||||
[*Version*], [*Änderungsdatum*], [*Änderungen*],
|
|
||||||
..changes
|
|
||||||
)]
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,75 +1,4 @@
|
||||||
#let colors = (
|
#import "common.typ": colors
|
||||||
primary: oklch(93.84%, 0.09, 183.69deg),
|
|
||||||
secondary: oklch(73.51%, 0.168, 40.25deg),
|
|
||||||
subtext: oklch(60%, 0, 0deg),
|
|
||||||
highlight: oklch(90%, 0, 0deg),
|
|
||||||
)
|
|
||||||
|
|
||||||
#let tmpl(
|
|
||||||
title: none,
|
|
||||||
version: none,
|
|
||||||
change_date: none,
|
|
||||||
heading_size: 18pt,
|
|
||||||
heading_font: "Ubuntu",
|
|
||||||
text_size: 12pt,
|
|
||||||
text_font: "Noto Sans",
|
|
||||||
doc,
|
|
||||||
) = {
|
|
||||||
set document(
|
|
||||||
title: title,
|
|
||||||
author: "swablab e.V."
|
|
||||||
)
|
|
||||||
|
|
||||||
set text(
|
|
||||||
font: text_font,
|
|
||||||
size: text_size,
|
|
||||||
lang: "de"
|
|
||||||
)
|
|
||||||
|
|
||||||
set par(
|
|
||||||
justify: true
|
|
||||||
)
|
|
||||||
|
|
||||||
set page(
|
|
||||||
paper: "a4",
|
|
||||||
margin: (x: 2cm, y: 2cm),
|
|
||||||
)
|
|
||||||
|
|
||||||
// Version
|
|
||||||
place(
|
|
||||||
top + left,
|
|
||||||
dx: -2em,
|
|
||||||
dy: -0.5em,
|
|
||||||
|
|
||||||
rotate(
|
|
||||||
90deg,
|
|
||||||
origin: bottom + left,
|
|
||||||
text(
|
|
||||||
size: 10pt,
|
|
||||||
fill: colors.subtext,
|
|
||||||
[swablab e.V. / #title #version / #change_date]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
// Logo
|
|
||||||
place(
|
|
||||||
top + right,
|
|
||||||
dx: 2.5em,
|
|
||||||
dy: -2.5em,
|
|
||||||
image("lightmode-swablab.png", width: 25%)
|
|
||||||
)
|
|
||||||
|
|
||||||
block(width: 100%-70pt, height: 70pt)[
|
|
||||||
#par(justify: false)[
|
|
||||||
#text(font: heading_font, heading_size)[
|
|
||||||
#heading(outlined: false)[*#title*]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
|
|
||||||
doc
|
|
||||||
}
|
|
||||||
|
|
||||||
#let form(title, ..fields) = {
|
#let form(title, ..fields) = {
|
||||||
grid(
|
grid(
|
||||||
|
|
92
templates/tmpl_doc.typ
Normal file
92
templates/tmpl_doc.typ
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
#import "common.typ": common, colors
|
||||||
|
|
||||||
|
#let tmpl_doc(
|
||||||
|
title: none,
|
||||||
|
changes: (),
|
||||||
|
doc,
|
||||||
|
) = {
|
||||||
|
show: doc => common(title: title, doc)
|
||||||
|
|
||||||
|
set enum(
|
||||||
|
numbering: "(1)"
|
||||||
|
)
|
||||||
|
set text(
|
||||||
|
size: 12pt,
|
||||||
|
)
|
||||||
|
|
||||||
|
// Titelblatt
|
||||||
|
align(center)[
|
||||||
|
#image("lightmode-swablab.png", width: 70%)
|
||||||
|
|
||||||
|
#pad(top: 2em, bottom: 2em)[
|
||||||
|
#text(1.75em, font: "Ubuntu", hyphenate: false)[
|
||||||
|
#heading(outlined: false)[*#title*]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
#changes.at(-3) - #changes.at(-2) \
|
||||||
|
swablab e.V. \
|
||||||
|
Katharinenstr. 1 \
|
||||||
|
72250 Freudenstadt
|
||||||
|
]
|
||||||
|
|
||||||
|
set page(
|
||||||
|
footer: [
|
||||||
|
#text(size: 10pt, fill: colors.subtext)[#changes.at(-3)]
|
||||||
|
#h(2fr)
|
||||||
|
#text(size: 10pt, fill: colors.subtext)[#counter(page).display()]
|
||||||
|
],
|
||||||
|
margin: (bottom: 2.5cm)
|
||||||
|
)
|
||||||
|
|
||||||
|
// Inhaltsverzeichnis
|
||||||
|
show heading: it => [
|
||||||
|
#v(2.25em, weak: true)
|
||||||
|
#set text(font: "Ubuntu", 18pt)
|
||||||
|
#strong[#it.body]
|
||||||
|
#v(1.25em, weak: true)
|
||||||
|
]
|
||||||
|
|
||||||
|
outline(title: [*Inhaltsverzeichnis*])
|
||||||
|
|
||||||
|
set par(
|
||||||
|
leading: 1em,
|
||||||
|
)
|
||||||
|
|
||||||
|
pagebreak()
|
||||||
|
|
||||||
|
// Formatierung Inhalt
|
||||||
|
set heading(numbering: "§1")
|
||||||
|
show heading: it => [
|
||||||
|
#v(2.25em, weak: true)
|
||||||
|
#set text(font: "Ubuntu", 18pt)
|
||||||
|
#strong[
|
||||||
|
#counter(heading).display()
|
||||||
|
#it.body
|
||||||
|
]
|
||||||
|
#v(1.25em, weak: true)
|
||||||
|
]
|
||||||
|
|
||||||
|
// Inhalt
|
||||||
|
doc
|
||||||
|
|
||||||
|
pagebreak()
|
||||||
|
|
||||||
|
// Änderungen
|
||||||
|
set heading(numbering: none)
|
||||||
|
show heading: it => [
|
||||||
|
#set text(font: "Ubuntu", 18pt)
|
||||||
|
#strong[#it.body]
|
||||||
|
#v(1.25em, weak: true)
|
||||||
|
]
|
||||||
|
block(breakable: false)[
|
||||||
|
#heading([Änderungen])
|
||||||
|
#table(
|
||||||
|
columns: (auto, auto, 1fr),
|
||||||
|
inset: 8pt,
|
||||||
|
align: auto,
|
||||||
|
stroke: 0.5pt,
|
||||||
|
[*Version*], [*Änderungsdatum*], [*Änderungen*],
|
||||||
|
..changes
|
||||||
|
)]
|
||||||
|
}
|
100
templates/tmpl_letter.typ
Normal file
100
templates/tmpl_letter.typ
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
#import "tmpl_page.typ": tmpl_page
|
||||||
|
#import "common.typ": colors
|
||||||
|
|
||||||
|
#let tmpl_letter(
|
||||||
|
title: none,
|
||||||
|
address: none,
|
||||||
|
info: none,
|
||||||
|
footer: none,
|
||||||
|
doc,
|
||||||
|
) = {
|
||||||
|
show: doc => tmpl_page(
|
||||||
|
title: title,
|
||||||
|
version: "",
|
||||||
|
change_date: "",
|
||||||
|
doc,
|
||||||
|
)
|
||||||
|
|
||||||
|
// DIN 5008 Sichtfenster: 45mm
|
||||||
|
place(
|
||||||
|
top+left,
|
||||||
|
dx: 7mm,
|
||||||
|
dy: 25mm,
|
||||||
|
)[
|
||||||
|
#text(size: 0.75em)[
|
||||||
|
#underline[swablab e.V. - Katharinenstr. 1 - 72250 Freudenstadt]
|
||||||
|
]
|
||||||
|
|
||||||
|
#address
|
||||||
|
]
|
||||||
|
|
||||||
|
// DIN 5008 Faltmarke 1: 87mm
|
||||||
|
place(
|
||||||
|
top+left,
|
||||||
|
dy: 67mm,
|
||||||
|
dx: -1cm,
|
||||||
|
line(
|
||||||
|
length: -1em,
|
||||||
|
stroke: 0.5pt + colors.subtext
|
||||||
|
)
|
||||||
|
)
|
||||||
|
// DIN 5008 Faltmarke 2: 192mm
|
||||||
|
place(
|
||||||
|
top+left,
|
||||||
|
dy: 172mm,
|
||||||
|
dx: -1cm,
|
||||||
|
line(
|
||||||
|
length: -1em,
|
||||||
|
stroke: 0.5pt + colors.subtext
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
// DIN 5008 Informationsblock: 50mm
|
||||||
|
place(
|
||||||
|
top+right,
|
||||||
|
dy: 30mm,
|
||||||
|
)[
|
||||||
|
#v(1em)
|
||||||
|
#info
|
||||||
|
]
|
||||||
|
|
||||||
|
// DIN 5008 nach Faltmarke 1
|
||||||
|
place(
|
||||||
|
top+left,
|
||||||
|
dy: 67mm,
|
||||||
|
doc
|
||||||
|
)
|
||||||
|
|
||||||
|
// Footer
|
||||||
|
place(bottom+left)[
|
||||||
|
#footer
|
||||||
|
|
||||||
|
#text(size: 0.7em, fill: colors.subtext)[
|
||||||
|
#table(
|
||||||
|
stroke: none,
|
||||||
|
align: top+left,
|
||||||
|
columns: (1fr,1fr,auto,1fr,1fr),
|
||||||
|
[*Telefon*],[*E-Mail / Web*],[*Bankverbindung*],[*Vereinsregister*],[*Vorstand*],
|
||||||
|
[
|
||||||
|
+49 15679232971
|
||||||
|
],
|
||||||
|
[
|
||||||
|
info\@swablab.de \
|
||||||
|
https://swablab.de
|
||||||
|
],
|
||||||
|
[
|
||||||
|
VR-Bank Dornstetten-Horb \
|
||||||
|
DE12 6426 2408 0125 6340 05
|
||||||
|
],
|
||||||
|
[
|
||||||
|
VR 724909 \
|
||||||
|
Amtsgericht Stuttgart
|
||||||
|
],
|
||||||
|
[
|
||||||
|
Fabian Haas \
|
||||||
|
Manuel Knodel
|
||||||
|
],
|
||||||
|
)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
36
templates/tmpl_page.typ
Normal file
36
templates/tmpl_page.typ
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
#import "common.typ": common, colors
|
||||||
|
|
||||||
|
#let tmpl_page(
|
||||||
|
title: none,
|
||||||
|
version: none,
|
||||||
|
change_date: none,
|
||||||
|
doc,
|
||||||
|
) = {
|
||||||
|
show: doc => common(title: title, doc)
|
||||||
|
|
||||||
|
set page(
|
||||||
|
footer: [
|
||||||
|
#text(size: 10pt, fill: colors.subtext)[#version]
|
||||||
|
#h(2fr)
|
||||||
|
#text(size: 10pt, fill: colors.subtext)[#change_date]
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
// Logo
|
||||||
|
place(
|
||||||
|
top + right,
|
||||||
|
dx: 2.5em,
|
||||||
|
dy: -2.5em,
|
||||||
|
image("lightmode-swablab.png", width: 25%)
|
||||||
|
)
|
||||||
|
|
||||||
|
block(width: 100%-70pt, height: 70pt)[
|
||||||
|
#par(justify: false)[
|
||||||
|
#text(font: "Ubuntu", 18pt)[
|
||||||
|
#heading(outlined: false)[*#title*]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
doc
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
#import "templates/doc.typ": tmpl
|
#import "templates/tmpl_doc.typ": tmpl_doc
|
||||||
|
|
||||||
#show: doc => tmpl(
|
#show: doc => tmpl_doc(
|
||||||
title: "Allgemeine Geschäftsbedingungen (AGB)",
|
title: "Allgemeine Geschäftsbedingungen (AGB)",
|
||||||
changes: (
|
changes: (
|
||||||
[v1.0], [23.06.2023], [erste Fassung],
|
[v1.0], [23.06.2023], [erste Fassung],
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#import "templates/form.typ": tmpl
|
#import "templates/tmpl_page.typ": tmpl_page
|
||||||
|
|
||||||
#show: doc => tmpl(
|
#show: doc => tmpl_page(
|
||||||
title: "Verhaltensregeln Werkstatt",
|
title: "Verhaltensregeln Werkstatt",
|
||||||
version: "v1.0",
|
version: "v1.0",
|
||||||
change_date: "09.09.2023",
|
change_date: "09.09.2023",
|
||||||
|
|
Loading…
Add table
Reference in a new issue