Compare commits
4 Commits
83c294898e
...
17624d3525
Author | SHA1 | Date |
---|---|---|
Thomas Forgione | 17624d3525 | |
Thomas Forgione | 4829761261 | |
Thomas Forgione | e2db45aedf | |
Thomas Forgione | 40ebb52ca6 |
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 12 KiB |
BIN
build/main.pdf
BIN
build/main.pdf
Binary file not shown.
60
content.typ
60
content.typ
|
@ -1,5 +1,12 @@
|
|||
#import "template.typ"
|
||||
|
||||
// Configuration
|
||||
|
||||
// Polymny config
|
||||
#let spacing = 0.345cm
|
||||
#let show_publications = true
|
||||
#let show_projects = false
|
||||
|
||||
= Parcours
|
||||
|
||||
#template.entry2(
|
||||
|
@ -36,7 +43,54 @@
|
|||
note: [Spécialisation en multimédia et traitement d'images]
|
||||
)
|
||||
|
||||
#v(0.55cm)
|
||||
#v(spacing)
|
||||
|
||||
#if show_publications [
|
||||
|
||||
= Publications
|
||||
|
||||
#let local_spacing = 0.7em
|
||||
|
||||
#template.entry2(
|
||||
left: [2019],
|
||||
heading: [*Using 3D Bookmarks for Desktop and Mobile DASH-3D Clients*],
|
||||
description: [
|
||||
ACMMM 19 Demo Paper \
|
||||
#link("https://tforgione.fr/publications/acmmm19/")
|
||||
],
|
||||
note: [T. Forgione, A. Carlier, G. Morin, W. T. Ooi, V. Charvillat],
|
||||
disable_line: true,
|
||||
)
|
||||
|
||||
#v(local_spacing)
|
||||
|
||||
#template.entry2(
|
||||
left: [2018],
|
||||
heading: [*DASH for 3D Networked Virtual Environment*],
|
||||
description: [
|
||||
ACMMM 18 Long Paper + Demo paper \
|
||||
#link("https://tforgione.fr/publications/acmmm18/")
|
||||
],
|
||||
note: [T. Forgione, A. Carlier, G. Morin, W. T. Ooi, V. Charvillat, P. K. Yadav],
|
||||
disable_line: true,
|
||||
)
|
||||
|
||||
#v(local_spacing)
|
||||
|
||||
#template.entry2(
|
||||
left: [2016],
|
||||
heading: [*Impact of 3D Bookmarks on Navigation and Streaming in a Networked Virtual Environment*],
|
||||
description: [
|
||||
MMSys 16 Long Paper \
|
||||
#link("https://tforgione.fr/publications/mmsys16/")
|
||||
],
|
||||
note: [T. Forgione, A. Carlier, G. Morin, W. T. Ooi, V. Charvillat],
|
||||
disable_line: true,
|
||||
)
|
||||
|
||||
]
|
||||
|
||||
#if show_projects [
|
||||
|
||||
= Projets
|
||||
|
||||
|
@ -65,7 +119,9 @@
|
|||
]
|
||||
)
|
||||
|
||||
#v(0.54cm)
|
||||
]
|
||||
|
||||
#v(spacing)
|
||||
|
||||
= Loisirs
|
||||
|
||||
|
|
|
@ -1,12 +1,34 @@
|
|||
#import "template.typ"
|
||||
|
||||
#let is_polymny = true
|
||||
|
||||
= Contact
|
||||
|
||||
#align(left + top, [
|
||||
#if is_polymny {
|
||||
|
||||
// Version polymny
|
||||
align(left + top, [
|
||||
#grid(columns: (auto, auto), row-gutter: 0.5cm, column-gutter: 0.2cm,
|
||||
[ #image("assets/icons/location.svg", height: 10pt) ],
|
||||
[ 9 bd de la Gare, appt 83 \
|
||||
31500 Toulouse France
|
||||
[ Polymny Studio \
|
||||
16 route de Luchon \
|
||||
31110 Moustajon
|
||||
],
|
||||
[ #image("assets/icons/phone.svg", height: 10pt) ], [ 05.82.95.91.76 ],
|
||||
[ #image("assets/icons/mail.svg", height: 10pt) ], [ #link("mailto:contact@polymny.studio")[contacter\@polymny.studio] ],
|
||||
[ #image("assets/icons/world.svg", height: 10pt) ], [ #link("https://tforgione.fr")[https://tforgione.fr] ],
|
||||
[ #image("assets/icons/github.svg", height: 10pt) ], [ #link("https://github.com/tforgione")[\@tforgione] ]
|
||||
)
|
||||
])
|
||||
|
||||
} else {
|
||||
|
||||
// Version perso
|
||||
align(left + top, [
|
||||
#grid(columns: (auto, auto), row-gutter: 0.5cm, column-gutter: 0.2cm,
|
||||
[ #image("assets/icons/location.svg", height: 10pt) ],
|
||||
[ 9 bd de la gare, appt 83 \
|
||||
31500 Toulouse
|
||||
],
|
||||
[ #image("assets/icons/phone.svg", height: 10pt) ], [ 06.71.22.05.84 ],
|
||||
[ #image("assets/icons/mail.svg", height: 10pt) ], [ #link("mailto:thomas@forgione.fr")[thomas\@forgione.fr] ],
|
||||
|
@ -15,6 +37,8 @@
|
|||
)
|
||||
])
|
||||
|
||||
}
|
||||
|
||||
= Programmation
|
||||
|
||||
#align(left + top, [
|
||||
|
|
81
template.typ
81
template.typ
|
@ -1,16 +1,29 @@
|
|||
#let color = blue
|
||||
// #let color = rgb("#018d32")
|
||||
|
||||
// Basic template settings. Must be shown at very begining
|
||||
#let init(doc) = {
|
||||
|
||||
let opacity = "33" // opacity hex chars
|
||||
|
||||
let polymny = read("./assets/polymny.svg")
|
||||
let polymny_transparent = polymny
|
||||
.replace("#FFFFFFFF", "#FFFFFF" + opacity)
|
||||
.replace("#EAE2D4FF", "#EAE2D4" + opacity)
|
||||
.replace("#BDB299FF", "#BDB299" + opacity)
|
||||
|
||||
set page(
|
||||
paper: "a4",
|
||||
numbering: none,
|
||||
margin: (left: 0.25cm, right: 0.25cm, top: 0.5cm, bottom: 0.5cm),
|
||||
background: [
|
||||
#align(top + left, rect(width: 5.55cm, height: 100%, fill: blue.lighten(90%)))
|
||||
#v(-100%)
|
||||
#v(-1.3em)
|
||||
#align(top, rect(width: 100%, height: 4.4cm, fill: blue))
|
||||
#v(-5cm)
|
||||
#align(top + left, box(inset: (x: 0.8cm, y: 1cm), image("./assets/moi.png", height: 4cm)))
|
||||
#place(bottom + left, dx: 2cm, dy: 2.75cm, {
|
||||
image.decode(polymny_transparent, width: 65em, height: 65em)
|
||||
})
|
||||
|
||||
#place(top + left, rect(width: 5.55cm, height: 100%, fill: color.lighten(90%)))
|
||||
#place(top + left, rect(width: 100%, height: 4.4cm, fill: color))
|
||||
#place(top + left, dx: 0.8cm, dy: 1cm, image("./assets/moi.png", height: 4cm))
|
||||
],
|
||||
)
|
||||
|
||||
|
@ -47,15 +60,15 @@
|
|||
}
|
||||
|
||||
show heading.where(level: 1): it => {
|
||||
set text(fill: blue)
|
||||
set text(fill: color)
|
||||
grid(
|
||||
gutter: 1em,
|
||||
columns: (5cm, 7fr),
|
||||
[], // align(horizon, [#v(3pt) #rect(width: 1cm, height: 0.33em, fill: blue)]),
|
||||
[], // align(horizon, [#v(3pt) #rect(width: 1cm, height: 0.33em, fill: color)]),
|
||||
[
|
||||
#it.body
|
||||
#v(-0.5cm)
|
||||
#line(stroke: blue, length: 100%)
|
||||
#line(stroke: color, length: 100%)
|
||||
],
|
||||
)
|
||||
}
|
||||
|
@ -95,33 +108,49 @@
|
|||
}
|
||||
|
||||
// An entry in the CV with "until" date, heading, description and note.
|
||||
#let entry2(left: content, heading: content, description: content, note: content) = {
|
||||
#let entry2(left: content, heading: content, description: content, note: content, disable_line: false) = {
|
||||
|
||||
let content = [
|
||||
#heading \
|
||||
#set text(size: 12pt, style: "italic")
|
||||
#description \
|
||||
#set text(size: 11pt, style: "normal")
|
||||
#note
|
||||
]
|
||||
#heading \
|
||||
#set text(size: 12pt, style: "italic")
|
||||
#description \
|
||||
#set text(size: 11pt, style: "normal")
|
||||
#note
|
||||
]
|
||||
|
||||
layout(size =>
|
||||
style(styles => {
|
||||
let size = measure(content, styles)
|
||||
let size = measure({
|
||||
block(
|
||||
width: size.width,
|
||||
grid(
|
||||
gutter: 1em,
|
||||
columns: (5.5cm, 0.75fr, 7fr),
|
||||
[], [], content
|
||||
)
|
||||
)
|
||||
}, styles)
|
||||
|
||||
let offset = measure(left, styles)
|
||||
|
||||
grid(
|
||||
gutter: 1em,
|
||||
columns: (5.5cm, 0.75fr, 7fr),
|
||||
[],
|
||||
align(center, [
|
||||
#left
|
||||
#v(-0.5em)
|
||||
#line(angle: 90deg, length: size.height - offset.height - 0.5em)
|
||||
]),
|
||||
if not disable_line {
|
||||
align(center, [
|
||||
#left
|
||||
#v(-0.5em)
|
||||
#line(angle: 90deg, length: size.height - offset.height - 0.5em)
|
||||
])
|
||||
} else {
|
||||
left
|
||||
},
|
||||
content
|
||||
)
|
||||
v(-4pt)
|
||||
|
||||
})
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
// A score box between 1 and 5.
|
||||
|
@ -131,9 +160,9 @@
|
|||
|
||||
for x in range(5) {
|
||||
if level > x {
|
||||
elems.push(rect(width: 0.4cm, height: 0.2cm, fill: blue))
|
||||
elems.push(rect(width: 0.4cm, height: 0.2cm, fill: color))
|
||||
} else {
|
||||
elems.push(rect(width: 0.4cm, height: 0.2cm, fill: blue.lighten(60%)))
|
||||
elems.push(rect(width: 0.4cm, height: 0.2cm, fill: color.lighten(60%)))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue