template
All checks were successful
/ test_checkout (push) Successful in 1m47s

This commit is contained in:
Jean-Marie Mineau 2025-10-13 18:55:27 +02:00
parent 033656e159
commit 1f5f70779b
Signed by: histausse
GPG key ID: B66AEEDA9B645AD2
11 changed files with 801 additions and 21 deletions

View file

@ -1,3 +1,6 @@
#import "@preview/polylux:0.4.0": *
#import "slides/lib.typ": *
#show link: it => if type(it.dest) == label {
context {
if query(it.dest).len() == 0 {
@ -10,26 +13,117 @@
it
}
#let get_figures(body) = {
if type(body) == array {
body.map(get_figures).flatten()
} else if type(body) == dictionary {
body.values().map(get_figures).flatten()
} else if type(body) != content {
()
}else if body.func() == figure {
(body,)
} else {
body.fields().values().map(get_figures).flatten()
}
}
#set text(lang: "en")
#show: sns-polylux-template.with(
txt-font: "New Computer Modern",
title-font: "TeX Gyre Heros",
aspect-ratio : "16-9",
title : [From Large Scale Analysis to Dynamic Deobfuscation],
subtitle : [The Woes of Android Reverse Engineering],
event : [], //[PhD Defense],
short-title : [], //[PhD Defense],
//short-event : [Rennes, 2025/12/9],
title-size : 32pt,
//logo-1 : image("slides/imgs/logo_irisa.png"),
//logo-2 : image("slides/imgs/logo_pirat.png"),
//
colormap : sns-polylux-template_sns-pirat,
authors : (
{
set text(weight: "bold")
[MINEAU Jean-Marie]
v(1em)
},
[LALANDE Jean-François, PhD supervisor],
[VIET TRIEM TONG Valérie, PhD co-supervisor]
),
date : datetime(year: 2025, month: 12, day: 9),
)
#title-slide(
logo: grid(columns: 2,
image("slides/imgs/logo_pirat.png"),
image(width: 500pt, "slides/imgs/logo_cs.png"),
image("slides/imgs/logo_irisa.png"),
image("slides/imgs/platypus.png"),
)
)
#slide(
title: [Test],
subtitle: [Test Slide],
)[
#stack(dir: ltr,
scale(40%, reflow: true, get_figure(<tab:rasta-tools>)),
scale(55%, reflow: true, get_figure(<tab:rasta-sources>)),
)
]
#slide()[
#get_figure(<fig:th-cg-before-after>))
]
#slide()[
/*
#pl.toolbox.slide-number
#context({
pl.toolbox.all-sections((sections, current) => {
for i in sections {
repr(i.at("body").at("text"))
}
})
})
*/
#sections()
]
// #toc-slide( title: [Outline] )
#new-section-slide([First section])
#slide(
title: [A slide without subtitle],
)[
This slide does not have a subtitle, but belongs to the first section.
]
#new-section-slide([Second section])
#slide(
title: [Title],
subtitle: [Subtitle],
)[
plop
]
#slide(
subtitle: [Hidden subtitle],
)[
This slide however does not have a title. It belongs to the second section.
]
#new-section-slide([Third section])
#focus-slide()[
This is a _focus-slide_.
]
#slide(new-sec: true, title: [Fourth section],)[
A slide can also open a new section...
]
#focus-slide(new-sec: [Fifth section],)[
... and also a focus-slide can do it!
]
#empty-slide()[
Ending slide
]
#let main = include("./main.typ")
#let figs = get_figures(main)
// #repr(figs)
#for f in figs {
f
}
/*
* Notes: