Compare commits
10
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5fb9835f4 | ||
|
|
edbabac625 | ||
|
|
a38c3754aa | ||
|
|
60567ce745 | ||
|
|
0a13243240 | ||
|
|
26fc1f769e | ||
|
|
65c2506188 | ||
|
|
52087756d9 | ||
|
|
d855a22c7b | ||
|
|
b9434226bb |
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 198 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 399 KiB |
+909
-343
File diff suppressed because it is too large
Load Diff
+50
-63
@@ -27,37 +27,28 @@
|
||||
|
||||
#let definition(body, name: none) = {
|
||||
// show figure: statement-style(name, numbered: false)
|
||||
figure(
|
||||
body,
|
||||
kind: "definition",
|
||||
supplement: {
|
||||
[Definizione]
|
||||
if name != none {
|
||||
[ -- ]
|
||||
name
|
||||
}
|
||||
},
|
||||
)
|
||||
figure(body, kind: "definition", supplement: {
|
||||
[Definizione]
|
||||
if name != none {
|
||||
[ -- ]
|
||||
name
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
#let fact(body, name: none) = {
|
||||
// show figure: statement-style(name, numbered: false)
|
||||
figure(
|
||||
body,
|
||||
kind: "fact",
|
||||
supplement: {
|
||||
[Fatto]
|
||||
if name != none {
|
||||
[ -- ]
|
||||
name
|
||||
}
|
||||
},
|
||||
)
|
||||
figure(body, kind: "fact", supplement: {
|
||||
[Fatto]
|
||||
if name != none {
|
||||
[ -- ]
|
||||
name
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
#let proposition(body, numbered: true) = {
|
||||
// show figure: statement-style(name, numbered: numbered)
|
||||
|
||||
return figure(
|
||||
body,
|
||||
// kind: "proposition",
|
||||
@@ -80,17 +71,12 @@
|
||||
|
||||
#let theorem(body, name: none, numbered: true) = {
|
||||
// show figure: statement-style(name, numbered: numbered)
|
||||
figure(
|
||||
body,
|
||||
kind: "theorem",
|
||||
supplement: {
|
||||
[Teorema]
|
||||
if name != none {
|
||||
[ (#name)]
|
||||
}
|
||||
},
|
||||
numbering: if numbered { "1" },
|
||||
)
|
||||
figure(body, kind: "theorem", supplement: {
|
||||
[Teorema]
|
||||
if name != none {
|
||||
[ (#name) ]
|
||||
}
|
||||
}, numbering: if numbered { "1" })
|
||||
}
|
||||
|
||||
#let proof(body) = block({
|
||||
@@ -125,34 +111,35 @@
|
||||
}
|
||||
|
||||
#let todo-color = color.mix((red, 10%), (yellow, 90%))
|
||||
#let todo(content) = block(
|
||||
breakable: false,
|
||||
grid(
|
||||
rows: 2,
|
||||
align: left,
|
||||
block(
|
||||
fill: todo-color.desaturate(60%),
|
||||
inset: (x: 0.5em, y: 0.35em),
|
||||
radius: (top: 0.25em),
|
||||
{
|
||||
set text(fill: black.transparentize(15%), size: 8pt, font: "Open Sans")
|
||||
[*TODO*]
|
||||
},
|
||||
),
|
||||
block(
|
||||
width: 100%,
|
||||
fill: todo-color.desaturate(75%),
|
||||
inset: (x: 0.5em, y: 0.5em),
|
||||
radius: (bottom: 0.25em, top-right: 0.25em),
|
||||
{
|
||||
set text(fill: black.transparentize(15%), size: 9pt, font: "Open Sans")
|
||||
content
|
||||
},
|
||||
),
|
||||
#let todo(content) = block(breakable: false, grid(
|
||||
rows: 2,
|
||||
align: left,
|
||||
block(fill: todo-color.desaturate(60%), inset: (x: 0.5em, y: 0.35em), radius: (top: 0.25em), {
|
||||
set text(fill: black.transparentize(15%), size: 8pt, font: "Open Sans")
|
||||
[*TODO*]
|
||||
}),
|
||||
block(
|
||||
width: 100%,
|
||||
fill: todo-color.desaturate(75%),
|
||||
inset: (x: 0.5em, y: 0.5em),
|
||||
radius: (bottom: 0.25em, top-right: 0.25em),
|
||||
{
|
||||
set text(fill: black.transparentize(15%), size: 9pt, font: "Open Sans")
|
||||
content
|
||||
},
|
||||
),
|
||||
)
|
||||
))
|
||||
|
||||
#let scr(it) = text(
|
||||
features: ("ss01",),
|
||||
box($cal(it)$),
|
||||
)
|
||||
#let scr(it) = text(features: ("ss01",), box($cal(it)$))
|
||||
|
||||
#let blank = {
|
||||
$#h(0.125em) #{
|
||||
rect(width: 0.8em * 1.41, height: 0.8em, stroke: 0.5pt, place(dx: -0.2em, dy: -0.55em, {
|
||||
set text(size: 10pt)
|
||||
|
||||
$dots$
|
||||
}))
|
||||
} #h(0.125em)$
|
||||
}
|
||||
|
||||
#let marker(content) = metadata(("marker", content))
|
||||
+18
-12
@@ -4,16 +4,12 @@
|
||||
import cetz.draw: *
|
||||
|
||||
// draw the white outline
|
||||
set-style(..cetz.styles.resolve(
|
||||
(stroke: (paint: white, thickness: size-factor * 0.75pt * 8, cap: "butt")),
|
||||
base: style,
|
||||
))
|
||||
set-style(..cetz.styles.resolve((stroke: (paint: white, thickness: size-factor * 0.75pt * 8, cap: "butt")), base: style))
|
||||
polyline
|
||||
|
||||
// draw the black line
|
||||
set-style(..cetz.styles.resolve(style, base: (stroke: (paint: black, thickness: size-factor * 0.75pt, cap: "round"))))
|
||||
polyline
|
||||
|
||||
// set-style(stroke: (paint: black, thickness: thickness, cap: "round"))
|
||||
}
|
||||
|
||||
@@ -84,6 +80,14 @@
|
||||
draw-strand({ hobby((-1.5, +1), (-1, +1), (0.5, 0), (0.1, -1), (0, -1)) })
|
||||
draw-strand({ hobby((1.5, +1), (1, +1), (-0.5, 0), (-0.1, -1), (0, -1)) })
|
||||
}),
|
||||
//
|
||||
// Medium
|
||||
//
|
||||
unit-medium: skein-canvas(size-factor: medium-scale-factor, {
|
||||
import cetz.draw: *
|
||||
|
||||
circle((0, 0), radius: 1, stroke: (paint: black, thickness: 0.75pt))
|
||||
}),
|
||||
strand-medium: skein-canvas(size-factor: medium-scale-factor, {
|
||||
import cetz.draw: *
|
||||
rect((-1, -1), (1, 1), fill: white, stroke: none)
|
||||
@@ -94,6 +98,14 @@
|
||||
draw-strand(size-factor: medium-scale-factor, { hobby((1.5, +1), (1, +1), (-0.5, 0), (-0.1, -1), (0, -1)) })
|
||||
draw-strand(size-factor: medium-scale-factor, { hobby((-1.5, +1), (-1, +1), (0.5, 0), (0.1, -1), (0, -1)) })
|
||||
}),
|
||||
under-twist-medium: skein-canvas(size-factor: medium-scale-factor, {
|
||||
import cetz.draw: *
|
||||
draw-strand(size-factor: small-scale-factor, { hobby((-1.5, +1), (-1, +1), (0.5, 0), (0.1, -1), (0, -1)) })
|
||||
draw-strand(size-factor: small-scale-factor, { hobby((1.5, +1), (1, +1), (-0.5, 0), (-0.1, -1), (0, -1)) })
|
||||
}),
|
||||
//
|
||||
// Small
|
||||
//
|
||||
strand-small: skein-canvas(size-factor: small-scale-factor, {
|
||||
import cetz.draw: *
|
||||
rect((-1, -1), (1, 1), fill: white, stroke: none)
|
||||
@@ -111,13 +123,7 @@
|
||||
}),
|
||||
)
|
||||
|
||||
|
||||
#let skein-generic(
|
||||
kind: "over",
|
||||
direction: (+1, +1),
|
||||
arrows: (true, true),
|
||||
styles: ((:), (:)),
|
||||
) = {
|
||||
#let skein-generic(kind: "over", direction: (+1, +1), arrows: (true, true), styles: ((:), (:))) = {
|
||||
skein-canvas({
|
||||
import cetz.draw: *
|
||||
if kind == "over" {
|
||||
|
||||
+78
-169
@@ -60,7 +60,6 @@
|
||||
// top: 4.5cm,
|
||||
// bottom: 3.5cm,
|
||||
),
|
||||
|
||||
header-ascent: 1cm,
|
||||
header: context {
|
||||
let i = counter(page).get().first()
|
||||
@@ -68,14 +67,10 @@
|
||||
set text(size: script-size)
|
||||
align(center, upper(page-title))
|
||||
},
|
||||
|
||||
footer-descent: 1cm,
|
||||
footer: context {
|
||||
let i = counter(page).get().first()
|
||||
align(
|
||||
center,
|
||||
[#i],
|
||||
)
|
||||
align(center, [#i])
|
||||
},
|
||||
)
|
||||
|
||||
@@ -90,19 +85,8 @@
|
||||
|
||||
let heading-size = heading-level-size(it.level)
|
||||
|
||||
set text(
|
||||
size: heading-size,
|
||||
fill: luma(10%),
|
||||
weight: 600,
|
||||
top-edge: "bounds",
|
||||
bottom-edge: "baseline",
|
||||
)
|
||||
set par(
|
||||
spacing: 0pt,
|
||||
hanging-indent: 0pt,
|
||||
first-line-indent: 0pt,
|
||||
)
|
||||
|
||||
set text(size: heading-size, fill: luma(10%), weight: 600, top-edge: "bounds", bottom-edge: "baseline")
|
||||
set par(spacing: 0pt, hanging-indent: 0pt, first-line-indent: 0pt)
|
||||
|
||||
if it.level == 1 {
|
||||
if counter(heading).get() != (0,) {
|
||||
@@ -111,20 +95,14 @@
|
||||
|
||||
stack(
|
||||
dir: ttb,
|
||||
..(
|
||||
if counter(heading).get() != (0,) {
|
||||
(
|
||||
layout(size => v(size.height * 25%)),
|
||||
{
|
||||
set text(size: heading-level-size(3))
|
||||
[Capitolo ]
|
||||
set text(size: heading-level-size(2))
|
||||
counter(heading).display("1")
|
||||
},
|
||||
v(heading-size * 0.61),
|
||||
)
|
||||
}
|
||||
),
|
||||
..(if counter(heading).get() != (0,) {
|
||||
(layout(size => v(size.height * 25%)), {
|
||||
set text(size: heading-level-size(3))
|
||||
[Capitolo ]
|
||||
set text(size: heading-level-size(2))
|
||||
counter(heading).display("1")
|
||||
}, v(heading-size * 0.61),)
|
||||
}),
|
||||
line(length: 100%),
|
||||
v(heading-size * 0.61),
|
||||
align(right, it.body),
|
||||
@@ -169,10 +147,7 @@
|
||||
show math.equation: set block(below: normal-size * 1.5, above: normal-size * 1.5)
|
||||
show math.equation: set text(weight: 400)
|
||||
|
||||
set math.equation(
|
||||
numbering: "(1)",
|
||||
supplement: none,
|
||||
)
|
||||
set math.equation(numbering: "(1)", supplement: none)
|
||||
|
||||
show math.equation: it => {
|
||||
if it.block and not it.has("label") [
|
||||
@@ -194,33 +169,20 @@
|
||||
show raw.where(block: false): it => {
|
||||
set text(size: 7.25pt, fill: luma(7%))
|
||||
|
||||
box(
|
||||
outset: (x: 2pt, y: 3pt),
|
||||
fill: luma(92%),
|
||||
radius: 3pt,
|
||||
it,
|
||||
)
|
||||
box(outset: (x: 2pt, y: 3pt), fill: luma(92%), radius: 3pt, it)
|
||||
}
|
||||
|
||||
show raw.where(block: true): it => block(
|
||||
outset: (x: 2pt, y: 3pt),
|
||||
fill: luma(92%),
|
||||
radius: 4pt,
|
||||
inset: 4pt,
|
||||
it,
|
||||
)
|
||||
show raw.where(block: true): it => block(outset: (x: 2pt, y: 3pt), fill: luma(92%), radius: 4pt, inset: 4pt, it)
|
||||
|
||||
set std.bibliography(
|
||||
style: "ieee",
|
||||
title: none,
|
||||
)
|
||||
set std.bibliography(style: "ieee", title: none)
|
||||
|
||||
set figure(gap: 1em)
|
||||
show figure: set block(above: 1.5em, below: 1.5em)
|
||||
show figure: it => {
|
||||
// Customize the figure's caption.
|
||||
show figure.caption: caption => {
|
||||
set text(size: small-size)
|
||||
show figure.caption: caption => block(inset: (x: 1.4em), {
|
||||
set align(left)
|
||||
set text(size: 10.5pt)
|
||||
smallcaps(caption.supplement)
|
||||
if caption.numbering != none {
|
||||
[ ]
|
||||
@@ -228,7 +190,7 @@
|
||||
}
|
||||
[. ]
|
||||
caption.body
|
||||
}
|
||||
})
|
||||
|
||||
// We want a bit of space around tables and images.
|
||||
show selector.or(table, image): pad.with(x: 2em)
|
||||
@@ -346,102 +308,66 @@
|
||||
show ref: it => {
|
||||
if it.element != none {
|
||||
let el = it.element
|
||||
if el == figure {
|
||||
if el.kind == "proposition" or el.kind == "lemma" or el.kind == "theorem" {
|
||||
link(
|
||||
el.location(),
|
||||
{
|
||||
if it.supplement != auto { it.supplement } else { el.supplement }
|
||||
[ ]
|
||||
(
|
||||
..counter(heading).at(el.location()).slice(0, 1).map(it => str(it)),
|
||||
numbering(el.numbering, ..el.counter.at(el.location())),
|
||||
).join(".")
|
||||
},
|
||||
)
|
||||
}
|
||||
if el.func() == figure and (el.kind == "definition" or el.kind == "proposition" or el.kind == "lemma" or el.kind == "theorem") {
|
||||
link(el.location(), {
|
||||
if it.supplement != auto { it.supplement } else { el.supplement }
|
||||
[ ]
|
||||
(
|
||||
..counter(heading).at(el.location()).slice(0, 1).map(it => str(it)),
|
||||
numbering(el.numbering, ..el.counter.at(el.location())),
|
||||
).join(".")
|
||||
})
|
||||
} else if el.func() == metadata and type(el.value) == array and el.value.at(0) == "marker" {
|
||||
link(el.location(), el.value.at(1))
|
||||
} else {
|
||||
it
|
||||
repr(it)
|
||||
}
|
||||
} else if it.citation != none {
|
||||
it
|
||||
}
|
||||
}
|
||||
|
||||
// show ref: it => {
|
||||
// set text(fill: white)
|
||||
// box(fill: red, outset: (y: 0.5em), it)
|
||||
// }
|
||||
|
||||
// First thesis page
|
||||
context {
|
||||
set align(center + horizon)
|
||||
set text(size: 14pt)
|
||||
set page(
|
||||
margin: 0pt,
|
||||
header: none,
|
||||
footer: none,
|
||||
)
|
||||
set page(margin: 0pt, header: none, footer: none)
|
||||
|
||||
// show text: it => box(stroke: 1pt + red, it)
|
||||
// show grid: it => box(stroke: 1pt + red, it)
|
||||
|
||||
grid(
|
||||
columns: 1,
|
||||
image("assets/unipi.svg", width: 5cm),
|
||||
v(2em),
|
||||
{
|
||||
set text(size: 18pt)
|
||||
smallcaps[Università di Pisa]
|
||||
},
|
||||
grid(columns: 1, image("assets/unipi.svg", width: 5cm), v(2em), {
|
||||
set text(size: 18pt)
|
||||
smallcaps[Università di Pisa]
|
||||
}, v(1em), {
|
||||
line(length: 5.25cm)
|
||||
}, v(1em), [
|
||||
*Dipartimento di Matematica \ Corso di Laurea Triennale in Matematica*
|
||||
], v(6em), {
|
||||
[Tesi di Laurea]
|
||||
}, v(1em), {
|
||||
set text(size: 18pt)
|
||||
strong(page-title)
|
||||
}, v(15em), {
|
||||
block(width: 12cm, grid(columns: (1fr, 1fr), {
|
||||
set align(left)
|
||||
|
||||
v(1em),
|
||||
{
|
||||
line(length: 5.25cm)
|
||||
},
|
||||
[Relatore: \ *Prof. Paolo Lisca*]
|
||||
}, {
|
||||
set align(right)
|
||||
|
||||
v(1em),
|
||||
[
|
||||
*Dipartimento di Matematica \ Corso di Laurea Triennale in Matematica*
|
||||
],
|
||||
|
||||
v(6em),
|
||||
{
|
||||
[Tesi di Laurea]
|
||||
},
|
||||
|
||||
v(1em),
|
||||
{
|
||||
set text(size: 18pt)
|
||||
strong(page-title)
|
||||
},
|
||||
|
||||
v(15em),
|
||||
{
|
||||
block(
|
||||
width: 12cm,
|
||||
grid(
|
||||
columns: (1fr, 1fr),
|
||||
{
|
||||
set align(left)
|
||||
|
||||
[Relatore: \ *Prof. Paolo Lisca*]
|
||||
},
|
||||
{
|
||||
set align(right)
|
||||
|
||||
[Candidato: \ *Antonio De Lucreziis*]
|
||||
},
|
||||
),
|
||||
)
|
||||
},
|
||||
|
||||
v(6em),
|
||||
{
|
||||
line(length: 6cm)
|
||||
},
|
||||
|
||||
v(1em),
|
||||
[
|
||||
*Anno Accademico 2024/2025*
|
||||
],
|
||||
)
|
||||
[Candidato: \ *Antonio De Lucreziis*]
|
||||
}))
|
||||
}, v(6em), {
|
||||
line(length: 6cm)
|
||||
}, v(1em), [
|
||||
*Anno Accademico 2024/2025*
|
||||
])
|
||||
|
||||
pagebreak()
|
||||
}
|
||||
@@ -459,43 +385,26 @@
|
||||
// },
|
||||
// )
|
||||
|
||||
grid(rows: (auto, 1fr, 2fr), align: center + horizon, v(2em), {
|
||||
if abstract != none {
|
||||
pad(x: 2em, grid(columns: 1, {
|
||||
set text(size: 16pt)
|
||||
|
||||
grid(
|
||||
rows: (auto, 1fr, 2fr),
|
||||
align: center + horizon,
|
||||
v(2em),
|
||||
{
|
||||
if abstract != none {
|
||||
pad(
|
||||
x: 2em,
|
||||
grid(
|
||||
columns: 1,
|
||||
{
|
||||
set text(size: 16pt)
|
||||
[*Abstract*]
|
||||
}, v(1em), {
|
||||
set align(start)
|
||||
abstract
|
||||
}))
|
||||
}
|
||||
}, {
|
||||
set text(size: 16pt)
|
||||
[*Indice*]
|
||||
|
||||
[*Abstract*]
|
||||
},
|
||||
|
||||
v(1em),
|
||||
{
|
||||
set align(start)
|
||||
abstract
|
||||
},
|
||||
),
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
set text(size: 16pt)
|
||||
[*Indice*]
|
||||
|
||||
v(0.25em)
|
||||
|
||||
set text(size: 12pt)
|
||||
outline(title: none, depth: 2, indent: 1em)
|
||||
},
|
||||
)
|
||||
v(0.25em)
|
||||
|
||||
set text(size: 12pt)
|
||||
outline(title: none, depth: 2, indent: 1em)
|
||||
})
|
||||
|
||||
context { counter("fact").update(2) }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user