Author SHA1 Message Date
aziis98 e5fb9835f4 fixed minor typos 2025-07-06 21:38:22 +02:00
aziis98 edbabac625 finished first part of chapter 3 2025-07-06 20:59:46 +02:00
aziis98 a38c3754aa finished first part 2025-07-06 20:58:52 +02:00
aziis98 60567ce745 almost finished first part of chapter 3 2025-07-06 16:29:28 +02:00
aziis98 0a13243240 fixed a proof 2025-07-06 12:45:51 +02:00
aziis98 26fc1f769e completed first complete draft 2025-07-06 02:00:49 +02:00
aziis98 65c2506188 almost end of proof 2025-07-05 20:14:29 +02:00
aziis98 52087756d9 finita dimostrazione lemma con tante sommatorie e switch 2025-07-05 15:26:19 +02:00
aziis98 d855a22c7b many sums 2025-07-05 12:52:12 +02:00
aziis98 b9434226bb more work 2025-07-03 15:09:59 +02:00
aziis98 f101b49738 snapshot per versione finale capitolo 2 2025-06-27 18:10:42 +02:00
aziis98 40b028c8cb ultimato capitolo 2 2025-06-27 17:21:53 +02:00
aziis98 c3e479bc78 more work, chapter 2 almost done 2025-06-27 00:28:42 +02:00
aziis98 d7c6309425 removed old pdf 2025-06-24 00:56:36 +02:00
aziis98 edd05f4502 almost finished chapter 2 2025-06-24 00:56:11 +02:00
16 changed files with 1229 additions and 706 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

+1041 -439
View File
File diff suppressed because it is too large Load Diff
+50 -63
View File
@@ -27,37 +27,28 @@
#let definition(body, name: none) = { #let definition(body, name: none) = {
// show figure: statement-style(name, numbered: false) // show figure: statement-style(name, numbered: false)
figure( figure(body, kind: "definition", supplement: {
body, [Definizione]
kind: "definition", if name != none {
supplement: { [ -- ]
[Definizione] name
if name != none { }
[ -- ] })
name
}
},
)
} }
#let fact(body, name: none) = { #let fact(body, name: none) = {
// show figure: statement-style(name, numbered: false) // show figure: statement-style(name, numbered: false)
figure( figure(body, kind: "fact", supplement: {
body, [Fatto]
kind: "fact", if name != none {
supplement: { [ -- ]
[Fatto] name
if name != none { }
[ -- ] })
name
}
},
)
} }
#let proposition(body, numbered: true) = { #let proposition(body, numbered: true) = {
// show figure: statement-style(name, numbered: numbered) // show figure: statement-style(name, numbered: numbered)
return figure( return figure(
body, body,
// kind: "proposition", // kind: "proposition",
@@ -80,17 +71,12 @@
#let theorem(body, name: none, numbered: true) = { #let theorem(body, name: none, numbered: true) = {
// show figure: statement-style(name, numbered: numbered) // show figure: statement-style(name, numbered: numbered)
figure( figure(body, kind: "theorem", supplement: {
body, [Teorema]
kind: "theorem", if name != none {
supplement: { [ (#name) ]
[Teorema] }
if name != none { }, numbering: if numbered { "1" })
[ (#name)]
}
},
numbering: if numbered { "1" },
)
} }
#let proof(body) = block({ #let proof(body) = block({
@@ -125,34 +111,35 @@
} }
#let todo-color = color.mix((red, 10%), (yellow, 90%)) #let todo-color = color.mix((red, 10%), (yellow, 90%))
#let todo(content) = block( #let todo(content) = block(breakable: false, grid(
breakable: false, rows: 2,
grid( align: left,
rows: 2, block(fill: todo-color.desaturate(60%), inset: (x: 0.5em, y: 0.35em), radius: (top: 0.25em), {
align: left, set text(fill: black.transparentize(15%), size: 8pt, font: "Open Sans")
block( [*TODO*]
fill: todo-color.desaturate(60%), }),
inset: (x: 0.5em, y: 0.35em), block(
radius: (top: 0.25em), width: 100%,
{ fill: todo-color.desaturate(75%),
set text(fill: black.transparentize(15%), size: 8pt, font: "Open Sans") inset: (x: 0.5em, y: 0.5em),
[*TODO*] radius: (bottom: 0.25em, top-right: 0.25em),
}, {
), set text(fill: black.transparentize(15%), size: 9pt, font: "Open Sans")
block( content
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( #let scr(it) = text(features: ("ss01",), box($cal(it)$))
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))
+1 -2
View File
@@ -40,8 +40,7 @@
author = {Crowell, R.H. and Fox, R.H.}, author = {Crowell, R.H. and Fox, R.H.},
isbn = {9783540902720}, isbn = {9783540902720},
lccn = {77022776}, lccn = {77022776},
series = {Ecological Studies}, series = {Graduate Text in Mathematics},
url = {https://books.google.it/books?id=_1HvAAAAMAAJ},
year = {1977}, year = {1977},
publisher = {Springer New York} publisher = {Springer New York}
} }
+57 -31
View File
@@ -1,36 +1,24 @@
#import "@preview/cetz:0.3.4" #import "@preview/cetz:0.3.4"
#let draw-strand(polyline, style: (:)) = { #let draw-strand(polyline, size-factor: 1.0, style: (:)) = {
import cetz.draw: * import cetz.draw: *
set-style( // draw the white outline
..cetz.styles.resolve( set-style(..cetz.styles.resolve((stroke: (paint: white, thickness: size-factor * 0.75pt * 8, cap: "butt")), base: style))
(stroke: (paint: white, thickness: 0.75pt * 8, cap: "butt")),
base: style,
),
)
polyline
set-style(
..cetz.styles.resolve(
style,
base: (stroke: (paint: black, thickness: 0.75pt, cap: "round")),
),
)
polyline polyline
set-style(stroke: (paint: black, thickness: 0.75pt, cap: "round")) // 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"))
} }
#let skein-canvas = body => cetz.canvas( #let skein-canvas = (body, size-factor: 1.0) => cetz.canvas(length: size-factor * 0.25cm, padding: 0.25, {
length: 0.25cm, import cetz.draw: *
padding: 0.25, rect((-1, -1), (1, 1), fill: white, stroke: none)
{
import cetz.draw: *
rect((-1, -1), (1, 1), fill: white, stroke: none)
body body
}, })
)
#let arrow-size = 0.35 #let arrow-size = 0.35
@@ -48,6 +36,9 @@
} }
} }
#let medium-scale-factor = 0.8
#let small-scale-factor = 0.125cm / 0.25cm
#let skein = ( #let skein = (
unit: skein-canvas({ unit: skein-canvas({
import cetz.draw: * import cetz.draw: *
@@ -89,15 +80,50 @@
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)) })
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)
draw-strand(size-factor: medium-scale-factor, { hobby((-1, 0), (0, 0.25), (1, 0), omega: 1) })
}),
over-twist-medium: skein-canvas(size-factor: medium-scale-factor, {
import cetz.draw: *
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)
draw-strand(size-factor: small-scale-factor, { hobby((-1, 0), (0, 0.25), (1, 0), omega: 1) })
}),
over-twist-small: skein-canvas(size-factor: small-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)) })
}),
under-twist-small: skein-canvas(size-factor: small-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)) })
}),
) )
#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({ skein-canvas({
import cetz.draw: * import cetz.draw: *
if kind == "over" { if kind == "over" {
+80 -171
View File
@@ -60,7 +60,6 @@
// top: 4.5cm, // top: 4.5cm,
// bottom: 3.5cm, // bottom: 3.5cm,
), ),
header-ascent: 1cm, header-ascent: 1cm,
header: context { header: context {
let i = counter(page).get().first() let i = counter(page).get().first()
@@ -68,14 +67,10 @@
set text(size: script-size) set text(size: script-size)
align(center, upper(page-title)) align(center, upper(page-title))
}, },
footer-descent: 1cm, footer-descent: 1cm,
footer: context { footer: context {
let i = counter(page).get().first() let i = counter(page).get().first()
align( align(center, [#i])
center,
[#i],
)
}, },
) )
@@ -90,19 +85,8 @@
let heading-size = heading-level-size(it.level) let heading-size = heading-level-size(it.level)
set text( set text(size: heading-size, fill: luma(10%), weight: 600, top-edge: "bounds", bottom-edge: "baseline")
size: heading-size, set par(spacing: 0pt, hanging-indent: 0pt, first-line-indent: 0pt)
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 it.level == 1 {
if counter(heading).get() != (0,) { if counter(heading).get() != (0,) {
@@ -111,20 +95,14 @@
stack( stack(
dir: ttb, dir: ttb,
..( ..(if counter(heading).get() != (0,) {
if counter(heading).get() != (0,) { (layout(size => v(size.height * 25%)), {
( set text(size: heading-level-size(3))
layout(size => v(size.height * 25%)), [Capitolo ]
{ set text(size: heading-level-size(2))
set text(size: heading-level-size(3)) counter(heading).display("1")
[Capitolo ] }, v(heading-size * 0.61),)
set text(size: heading-level-size(2)) }),
counter(heading).display("1")
},
v(heading-size * 0.61),
)
}
),
line(length: 100%), line(length: 100%),
v(heading-size * 0.61), v(heading-size * 0.61),
align(right, it.body), 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 block(below: normal-size * 1.5, above: normal-size * 1.5)
show math.equation: set text(weight: 400) show math.equation: set text(weight: 400)
set math.equation( set math.equation(numbering: "(1)", supplement: none)
numbering: "(1)",
supplement: none,
)
show math.equation: it => { show math.equation: it => {
if it.block and not it.has("label") [ if it.block and not it.has("label") [
@@ -194,33 +169,20 @@
show raw.where(block: false): it => { show raw.where(block: false): it => {
set text(size: 7.25pt, fill: luma(7%)) set text(size: 7.25pt, fill: luma(7%))
box( box(outset: (x: 2pt, y: 3pt), fill: luma(92%), radius: 3pt, it)
outset: (x: 2pt, y: 3pt),
fill: luma(92%),
radius: 3pt,
it,
)
} }
show raw.where(block: true): it => block( show raw.where(block: true): it => block(outset: (x: 2pt, y: 3pt), fill: luma(92%), radius: 4pt, inset: 4pt, it)
outset: (x: 2pt, y: 3pt),
fill: luma(92%),
radius: 4pt,
inset: 4pt,
it,
)
set std.bibliography( set std.bibliography(style: "ieee", title: none)
style: "ieee",
title: none,
)
set figure(gap: 17pt) set figure(gap: 1em)
show figure: set block(above: 1.5em, below: 1.5em) show figure: set block(above: 1.5em, below: 1.5em)
show figure: it => { show figure: it => {
// Customize the figure's caption. // Customize the figure's caption.
show figure.caption: caption => { show figure.caption: caption => block(inset: (x: 1.4em), {
set text(size: small-size) set align(left)
set text(size: 10.5pt)
smallcaps(caption.supplement) smallcaps(caption.supplement)
if caption.numbering != none { if caption.numbering != none {
[ ] [ ]
@@ -228,10 +190,10 @@
} }
[. ] [. ]
caption.body caption.body
} })
// We want a bit of space around tables and images. // We want a bit of space around tables and images.
show selector.or(table, image): pad.with(x: 23pt) show selector.or(table, image): pad.with(x: 2em)
// Display the figure's body and caption. // Display the figure's body and caption.
it it
@@ -346,102 +308,66 @@
show ref: it => { show ref: it => {
if it.element != none { if it.element != none {
let el = it.element let el = it.element
if el == figure { if el.func() == figure and (el.kind == "definition" or el.kind == "proposition" or el.kind == "lemma" or el.kind == "theorem") {
if el.kind == "proposition" or el.kind == "lemma" or el.kind == "theorem" { link(el.location(), {
link( if it.supplement != auto { it.supplement } else { el.supplement }
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(".")
..counter(heading).at(el.location()).slice(0, 1).map(it => str(it)), })
numbering(el.numbering, ..el.counter.at(el.location())), } else if el.func() == metadata and type(el.value) == array and el.value.at(0) == "marker" {
).join(".") link(el.location(), el.value.at(1))
},
)
}
} else { } else {
it repr(it)
} }
} else if it.citation != none { } else if it.citation != none {
it it
} }
} }
// show ref: it => {
// set text(fill: white)
// box(fill: red, outset: (y: 0.5em), it)
// }
// First thesis page // First thesis page
context { context {
set align(center + horizon) set align(center + horizon)
set text(size: 14pt) set text(size: 14pt)
set page( set page(margin: 0pt, header: none, footer: none)
margin: 0pt,
header: none,
footer: none,
)
// show text: it => box(stroke: 1pt + red, it) // show text: it => box(stroke: 1pt + red, it)
// show grid: it => box(stroke: 1pt + red, it) // show grid: it => box(stroke: 1pt + red, it)
grid( grid(columns: 1, image("assets/unipi.svg", width: 5cm), v(2em), {
columns: 1, set text(size: 18pt)
image("assets/unipi.svg", width: 5cm), smallcaps[Università di Pisa]
v(2em), }, v(1em), {
{ line(length: 5.25cm)
set text(size: 18pt) }, v(1em), [
smallcaps[Università di Pisa] *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), [Relatore: \ *Prof. Paolo Lisca*]
{ }, {
line(length: 5.25cm) set align(right)
},
v(1em), [Candidato: \ *Antonio De Lucreziis*]
[ }))
*Dipartimento di Matematica \ Corso di Laurea Triennale in Matematica* }, v(6em), {
], line(length: 6cm)
}, v(1em), [
v(6em), *Anno Accademico 2024/2025*
{ ])
[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*
],
)
pagebreak() 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( [*Abstract*]
rows: (auto, 1fr, 2fr), }, v(1em), {
align: center + horizon, set align(start)
v(2em), abstract
{ }))
if abstract != none { }
pad( }, {
x: 2em, set text(size: 16pt)
grid( [*Indice*]
columns: 1,
{
set text(size: 16pt)
[*Abstract*] v(0.25em)
},
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)
},
)
set text(size: 12pt)
outline(title: none, depth: 2, indent: 1em)
})
context { counter("fact").update(2) } context { counter("fact").update(2) }