Files
MSE-PI-E2EEDA-Plein-de-eeee…/report/resources/helper.typ

94 lines
2.1 KiB
Typst

#import "@preview/hei-synd-thesis:0.2.3": *
#import "@preview/wrap-it:0.1.1": *
#let iconbox(
width: 100%,
radius: 4pt,
border: 4pt,
inset: 10pt,
outset: -10pt,
linecolor: code-border,
icon: none,
iconheight: 1cm,
body
) = {
if body != none {
align(left,
rect(
stroke: (left:linecolor+border, rest:code-border+0.1pt),
radius: (left:0pt, right:radius),
fill: code-bg,
outset: (left:outset, right:outset),
inset: (left:inset*2, top:inset, right:inset*2, bottom:inset),
width: width)[
#if icon != none {
align(left,
table(
stroke:none,
align:left+horizon,
columns: (auto,auto),
image(icon, height:iconheight), [#body]
)
)
} else {
body
}
]
)
}
}
#let llm-proofread = iconbox(
icon:"/resources/img/logos/chatgpt.svg",
linecolor: hei-blue
)[
#text(size: small)[
Assistance for the reformulation and paraphrasing of this document was provided by Gemini 3.1.
Regardless of this assistance, all original code and text remain the work of the original author.
]]
#let ai-warning(txt) = grid(
columns: 2,
align: horizon,
column-gutter: 1em,
image("/resources/img/logos/chatgpt.svg", width: 2em),
[#txt]
)
#import "@preview/chronos:0.3.0"
#let actor(
name,
disp_name: none,
..args
) = {
let dn = name
if disp_name != none {
dn = align(center+horizon)[#disp_name]
}
let par = chronos._par(name, display-name: dn, ..args.named())
let actor = (
"display": par,
"name" : name
)
return actor
}
#let sync(actor1, actor2, comment, ..args) = {
return chronos._seq(
actor1.name, actor2.name,
comment: comment,
comment-align: "start",
..args.named()
)
}
#let async(actor1, actor2, comment, slant: auto, ..args) = {
return chronos._seq(
actor1.name, actor2.name,
comment: comment,
comment-align: "start",
end-tip: ">>",
slant: slant,
..args.named()
)
}