intro rasta

This commit is contained in:
Jean-Marie 'Histausse' Mineau 2025-10-16 17:10:52 +02:00
parent 679076fc63
commit 23440a4b3c
Signed by: histausse
GPG key ID: B66AEEDA9B645AD2
8 changed files with 1374 additions and 86 deletions

View file

@ -1,19 +1,9 @@
#import "@preview/polylux:0.4.0": * #import "@preview/polylux:0.4.0": *
#import "slides/lib.typ": * #import "slides/lib.typ": *
#show link: it => if type(it.dest) == label {
context {
if query(it.dest).len() == 0 {
it.body
} else {
it
}
}
} else {
it
}
#set text(lang: "en") #set text(lang: "en")
#set list(marker: none)
#show: sns-polylux-template.with( #show: sns-polylux-template.with(
txt-font: "New Computer Modern", txt-font: "New Computer Modern",
title-font: "TeX Gyre Heros", title-font: "TeX Gyre Heros",
@ -24,6 +14,8 @@
short-title : [], //[PhD Defense], short-title : [], //[PhD Defense],
//short-event : [Rennes, 2025/12/9], //short-event : [Rennes, 2025/12/9],
title-size : 32pt, title-size : 32pt,
section-size : 18pt,
size : 22pt,
//logo-1 : image("slides/imgs/logo_irisa.png"), //logo-1 : image("slides/imgs/logo_irisa.png"),
//logo-2 : image("slides/imgs/logo_pirat.png"), //logo-2 : image("slides/imgs/logo_pirat.png"),
// //
@ -40,6 +32,13 @@
date : datetime(year: 2025, month: 12, day: 9), date : datetime(year: 2025, month: 12, day: 9),
) )
/*
* Intro:
* Dear jury, gentle people of the audience, here and online, thank you for your presence.
* I am Jean-Marie Mineau, and today I will be defending my thesis about Android Application reverse engineering and the many difficulties a reverse engineer might encounter.
* This thesis was suppervised by Jean-François Lalande and Valerie Viet Triem Tong, within the PIRAT research team at IRISA.
*/
#title-slide( #title-slide(
logo: grid(columns: 2, logo: grid(columns: 2,
image("slides/imgs/logo_pirat.png"), image("slides/imgs/logo_pirat.png"),
@ -53,18 +52,75 @@
new-sec: true, new-sec: true,
title: [Introduction], title: [Introduction],
hide-title: true, hide-title: true,
foreground: { /*foreground: {
ghost-5(dx: 10%, dy: 30pt) ghost-5(x: 10%, y: 30pt)
ghost-4(dx: 95%, dy: 80%) ghost-4(x: 95%, y: 80%)
//ghost-4(dx: 45%, dy: 43%) //ghost-4(x: 45%, y: 43%)
} }*/
)[ )[
Intro 1 #set align(center+horizon)
#grid(
columns: (1fr, 1fr),
image("slides/imgs/google.png", width: 200pt),
image("slides/imgs/phone.png", height: 350pt)
)
#v(2em)
] ]
#slide[ #slide(
Intro 2 foreground: ghost-4(x: 60%, y: 25%, rot: 45deg)
)[
#set align(center+horizon)
#grid(
columns: (3fr, 2fr), stack(dir: ltr,
item-by-item[
- Personal Data and PII
- Computing Power
- Phone
- Mic, Camera, \ Geolocalisation
],
[ $ => $ ],
item-by-item()[
- Ransomware/Spyware
- Cryptojacker
- Expander (phone billing)
- Stalkerware
]
),
{
move(dx: 20pt, image("slides/imgs/phone.png", height: 350pt))
}
)
]
#slide(
title: [Analysing Applications: Which Tools?],
foreground: eye-3(x: 3%, y: 5%)
)[
#set align(center+horizon)
#move(dx: -50pt, image("slides/imgs/apk-analysis.svg", width: 300pt))
]
// something is broken, so hack to keep the page number at the same
#counter("logical-slide").update( n => n - 1 )
#slide(
title: [Analysing Applications: Which Tools?],
)[
#set list(spacing: 3em)
#item-by-item[
- #cite(<Li2017>, form: "prose"): systematic literature review for Android static analysis, lists open-sourced tools
- #cite(<reaves_droid_2016>, form: "prose"): tests analysis tools, raises concerns about reusability and analysis of
real-world applications
]
]
// something is broken, so hack to keep the page number at the same
#counter("logical-slide").update( n => n - 1 )
#slide(
title: [Analysing Applications: Which Tools?],
)[
#highlight-block(pb1-text)
] ]
#new-section-slide([Tool Reusability]) #new-section-slide([Tool Reusability])
@ -120,13 +176,11 @@
/* /*
#slide()[ #slide()[
#get_figure(<fig:th-cg-before-after>)) #get_figure(<fig:th-cg-before-after>))
] ]
#slide()[ #slide()[
/*
#pl.toolbox.slide-number #pl.toolbox.slide-number
#context({ #context({
pl.toolbox.all-sections((sections, current) => { pl.toolbox.all-sections((sections, current) => {
@ -135,67 +189,12 @@
} }
}) })
}) })
*/
#sections()
]
// #toc-slide( title: [Outline] )
#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
] ]
*/ */
/*
* Notes:
*
* Intro:
* Dear jury, gentle people of the audience, here and online, thank you for your presence.
* I am Jean-Marie Mineau, and today I will be defending my thesis about Android Application reverse engineering and the many difficulties a reverse engineer might encounter.
* This thesis was suppervised by Jean-François Lalande and Valerie Viet Triem Tong, within the PIRAT research team at IRISA.
*
*/
#pagebreak() #pagebreak()
#set page(height: auto, margin: 25mm) #set page(height: auto, margin: 25mm)
#bibliography("bibliography.bib") #bibliography("bibliography.bib")

View file

@ -0,0 +1,200 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="118.86373mm"
height="101.41884mm"
viewBox="0 0 118.86373 101.41884"
version="1.1"
id="svg1"
sodipodi:docname="apk-analysis.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
inkscape:document-units="mm"
inkscape:zoom="0.54740759"
inkscape:cx="430.2096"
inkscape:cy="240.2232"
inkscape:window-width="1278"
inkscape:window-height="1438"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" />
<defs
id="defs1">
<rect
x="103.11004"
y="338.67529"
width="108.28193"
height="54.516369"
id="rect6998-6-8" />
<rect
x="51.09034"
y="484.5957"
width="483.07062"
height="93.030174"
id="rect5-18-8-0" />
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-48.88522,-109.61498)">
<g
id="g4"
transform="translate(63.800723,65.734078)">
<path
style="fill:#a80000;fill-opacity:1;stroke:none;stroke-width:1.16851;stroke-dasharray:none;stroke-opacity:1"
d="m 84.189105,65.707438 c 0,0 -1.670223,-2.771444 3.119061,-1.920413 3.414668,0.677793 14.751794,16.369866 15.793074,20.049847 1.04127,3.680016 -1.41744,3.513496 -1.41744,3.513496 l -19.190891,-0.63153 z"
id="path4680-0"
sodipodi:nodetypes="ccsccc" />
<path
style="fill:#a80000;fill-opacity:1;stroke:#5f0000;stroke-width:1.1685;stroke-dasharray:none;stroke-opacity:1"
d="m 46.357169,63.198599 v 81.516891 h 56.995041 c 0,0 -0.15305,-46.991299 0.0104,-59.634813 0.19066,-5.37141 -17.409719,-2.136358 -17.409719,-2.136358 0,0 5.366564,-19.130606 0.410717,-19.426974 -4.071144,-0.0018 -40.006214,-0.318603 -40.006214,-0.318603 z"
id="path113-3"
sodipodi:nodetypes="cccccccc" />
<text
xml:space="preserve"
transform="matrix(0.46491259,0,0,0.46491259,8.2476048,-40.408637)"
id="text6996-6"
style="font-size:48px;white-space:pre;shape-inside:url(#rect6998-6-8);display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.51339;stroke-dasharray:none;stroke-opacity:1"><tspan
x="103.10938"
y="382.34979"
id="tspan4"><tspan
style="font-size:32px"
id="tspan3">.APK</tspan></tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.16851;stroke-dasharray:none;stroke-opacity:1"
id="rect8612-63"
width="20.369755"
height="18.939493"
x="62.991112"
y="92.58017" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.16851;stroke-dasharray:none;stroke-opacity:1"
d="m 63.016392,90.733082 20.377389,0.01796 c 0,0 -0.02299,-7.636 -10.194544,-7.631366 -10.171563,0.0072 -10.182845,7.611718 -10.182845,7.611718 z"
id="path8722-20" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.16851;stroke-dasharray:none;stroke-opacity:1"
d="m 57.734281,94.417768 c -0.0036,1.841104 0,9.824012 0,12.002792 0,2.17885 3.442868,2.26035 3.447455,0 0.0054,-2.26028 -7.94e-4,-10.166932 0,-12.002792 7.72e-4,-1.835895 -3.444754,-1.84114 -3.447455,0 z"
id="path11632-615" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.16851;stroke-dasharray:none;stroke-opacity:1"
d="m 85.132494,94.413243 c -0.0036,1.841139 0,9.824047 0,12.002857 0,2.17878 3.442876,2.26032 3.447441,0 0.0054,-2.26031 -7.69e-4,-10.166962 0,-12.002857 7.94e-4,-1.835824 -3.444725,-1.841104 -3.447441,0 z"
id="path11632-3-54" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.416248;stroke-dasharray:none;stroke-opacity:1"
d="m 78.718145,80.741007 c -0.381845,0.652326 -2.033669,3.483108 -2.484716,4.255584 -0.451039,0.772511 0.451061,1.337949 0.920186,0.537277 0.469121,-0.800708 2.104448,-3.604802 2.484712,-4.25562 0.38025,-0.650745 -0.538337,-1.189567 -0.920182,-0.537241 z"
id="path11632-3-5-7" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.416248;stroke-dasharray:none;stroke-opacity:1"
d="m 66.425895,81.092726 c 0.378684,0.65423 2.024413,3.488497 2.473402,4.262229 0.448963,0.773697 1.386142,0.268675 0.921608,-0.534835 -0.464552,-0.80333 -2.095296,-3.610154 -2.473398,-4.262229 -0.37811,-0.652003 -1.300278,-0.119251 -0.921612,0.534835 z"
id="path11632-3-5-3-6" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.16851;stroke-dasharray:none;stroke-opacity:1"
d="m 77.151449,104.84985 c -0.0018,1.84118 0,9.82405 0,12.00286 0,2.17875 3.442875,2.26028 3.447444,0 0.0054,-2.26031 -7.76e-4,-10.167 0,-12.00286 7.94e-4,-1.83586 -3.444732,-1.84107 -3.447444,0 z"
id="path11632-3-6-5" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.16851;stroke-dasharray:none;stroke-opacity:1"
d="m 65.791234,104.84766 c -0.0036,1.84114 0,9.82398 0,12.00275 0,2.17882 3.442872,2.26036 3.447441,0 0.0054,-2.26028 -7.76e-4,-10.16693 0,-12.00275 7.72e-4,-1.83586 -3.444736,-1.8411 -3.447441,0 z"
id="path11632-3-6-7-6" />
</g>
<g
id="g3"
transform="rotate(180,111.29859,175.34573)">
<circle
style="fill:#6f6f6f;fill-opacity:1;stroke:#3c3c3c;stroke-width:6;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="path1"
cx="104.06962"
cy="208.65189"
r="28.196201" />
<path
style="fill:#6f6f6f;fill-opacity:1;stroke:#3c3c3c;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="m 132.06932,220.95661 38.64264,17.11987"
id="path2" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.872563;stroke-dasharray:none;stroke-opacity:1"
d="m 121.3,195.44438 c -1.37481,-0.003 -33.212602,0 -34.839593,0 -1.626965,0 -1.687851,2.57091 0,2.57431 1.687852,0.006 33.468693,-5.6e-4 34.839593,0 1.37087,6.2e-4 1.37484,-2.57227 0,-2.57431 z"
id="path11632-3-54-5-0-2-2" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.872563;stroke-dasharray:none;stroke-opacity:1"
d="m 121.26073,222.37849 c -1.37481,-0.003 -33.212597,0 -34.839587,0 -1.62697,0 -1.68785,2.57091 0,2.57431 1.68785,0.006 33.468687,-5.6e-4 34.839587,0 1.37087,6.2e-4 1.37484,-2.57227 0,-2.57431 z"
id="path11632-3-54-5-0-2-2-3" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.627106;stroke-dasharray:none;stroke-opacity:1"
d="m 112.59092,228.60178 c -0.71012,-0.003 -17.155024,0 -17.9954,0 -0.840365,0 -0.871811,2.57091 0,2.57431 0.871811,0.006 17.2873,-5.6e-4 17.9954,0 0.70809,6.2e-4 0.71014,-2.57227 0,-2.57431 z"
id="path11632-3-54-5-0-2-2-3-2"
sodipodi:nodetypes="csccc" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.627106;stroke-dasharray:none;stroke-opacity:1"
d="m 113.11519,189.35286 c -0.71012,-0.003 -17.155033,0 -17.995403,0 -0.84037,0 -0.87182,2.57091 0,2.57431 0.87181,0.006 17.287303,-5.6e-4 17.995403,0 0.70809,6.2e-4 0.71014,-2.57227 0,-2.57431 z"
id="path11632-3-54-5-0-2-2-3-2-6" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.960537;stroke-dasharray:none;stroke-opacity:1"
d="m 124.71379,202.01092 c -1.666,-0.003 -40.247344,0 -42.218946,0 -1.971566,0 -2.045353,2.57091 0,2.57431 2.045353,0.006 40.557676,-5.6e-4 42.218946,0 1.66124,6.2e-4 1.66604,-2.57227 0,-2.57431 z"
id="path11632-3-54-5-0-2-2-0" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.983974;stroke-dasharray:none;stroke-opacity:1"
d="m 125.89878,208.99494 c -1.7483,-0.003 -42.235426,0 -44.304419,0 -2.068954,0 -2.146386,2.57091 0,2.57431 2.146388,0.006 42.561089,-5.6e-4 44.304419,0 1.74329,6.2e-4 1.74834,-2.57227 0,-2.57431 z"
id="path11632-3-54-5-0-2-2-0-6" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.95688;stroke-dasharray:none;stroke-opacity:1"
d="m 124.44307,215.58187 c -1.65334,-0.003 -39.941482,0 -41.898102,0 -1.956582,0 -2.029809,2.57091 0,2.57431 2.029811,0.006 40.249462,-5.6e-4 41.898102,0 1.64861,6.2e-4 1.65339,-2.57227 0,-2.57431 z"
id="path11632-3-54-5-0-2-2-0-6-7" />
</g>
<g
id="g12"
transform="matrix(0.34548525,0.17351546,-0.17351546,0.34548525,93.435206,73.665796)">
<path
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:6.00001;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="m 146.33052,150.9254 c 2.86004,3.52113 14.63731,3.65401 22.28398,0.49389 8.19791,-3.38793 8.35696,-33.06463 0.73507,-38.45501 -7.50091,-5.30483 -21.85297,-2.77944 -25.4635,-0.86302 -3.4844,1.84947 -9.91266,23.61071 2.44445,38.82414 z"
id="path4"
sodipodi:nodetypes="sssss" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="m 124.21807,95.459413 c 3.43516,16.080897 15.02857,14.836297 16.19185,14.983507 l 33.59205,-0.96668 c -8.4219,0.39241 13.96682,2.4511 12.80848,-15.708513"
id="path5"
sodipodi:nodetypes="cccc" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.00001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="m 116.48465,132.91817 12.08347,-9.18344 30.45035,9.42511 26.10029,-9.66677 13.05015,10.15011"
id="path7" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.00001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="m 128.80979,163.85186 -0.48334,-12.32514 12.32514,-8.94177 32.14203,-1.69169 11.35847,11.1168 -0.24168,11.60012"
id="path8" />
<path
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:6.00001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="m 144.27664,102.7095 24.65027,-0.48334 c -0.47665,-7.238368 -4.87787,-9.407674 -12.08347,-9.425109 -9.36136,-0.02265 -14.12512,8.937019 -12.5668,9.908449 z"
id="path9"
sodipodi:nodetypes="ccsc" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="m 165.78521,95.942752 c 2.02768,-3.620104 3.42177,-8.876209 12.80847,-11.116792"
id="path10"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="M 147.90167,97.392769 C 141.27485,84.715309 136.35007,86.186325 135.57653,86.034306"
id="path11"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="m 149.3517,122.04305 17.15852,15.70851 m -0.97678,-15.62987 -16.67519,14.9835"
id="path12"
sodipodi:nodetypes="cccc" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 66 KiB

BIN
slides/imgs/google.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
slides/imgs/phone.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

BIN
slides/imgs/phone.png~ Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

View file

@ -1,6 +1,8 @@
#import "sns_polylux_template.typ": * #import "sns_polylux_template.typ": *
#import "figures.typ": figures, get_figure #import "figures.typ": figures, get_figure
#import "../lib.typ": pb1-text, pb2-text, pb3-text
#let pirat-color = ( #let pirat-color = (
black: rgb("#000000"), black: rgb("#000000"),
white: rgb("#FFFFFF"), white: rgb("#FFFFFF"),
@ -17,6 +19,12 @@ rgb("#E69426"),
pirat-color.red, pirat-color.red,
) )
#let highlight-block = block.with(
fill: pirat-color.blue,
width: 100%,
inset: 8pt,
radius: 4pt,
)
#let colortest = [ #let colortest = [
#for th in ( #for th in (
@ -30,17 +38,29 @@ pirat-color.red,
} }
] ]
#let ghost(img, dx: 0pt, dy: 0pt, height: 100pt, ..args,) = context { #let ghost(
img, x: 0pt,
y: 0pt,
mirror: false,
rot: 0deg,
height: 100pt
) = context {
let img = image(img, height: height) let img = image(img, height: height)
if mirror {
img = scale(x: -100%, img)
}
if rot != 0deg {
img = rotate(rot, img)
}
let s = measure(img) let s = measure(img)
let hx = s.width / 2 let hx = s.width / 2
let hy = s.height / 2 let hy = s.height / 2
place( place(
bottom + left, bottom + left,
dx: dx - hx, dx: x - hx,
dy: -dy + hy, dy: -y + hy,
..args,
img img
) )
} }

View file

@ -38,6 +38,7 @@ cmyk(25%,7%,0%,0%),
#let sns-polylux-template_second-text-color = state("txt_color2", none) #let sns-polylux-template_second-text-color = state("txt_color2", none)
#let sns-polylux-template_title-text-color = state("title_color", none) #let sns-polylux-template_title-text-color = state("title_color", none)
#let sns-polylux-template_size = state("size", none) #let sns-polylux-template_size = state("size", none)
#let sns-polylux-template_section-size = state("section-size",none)
#let sns-polylux-template_title-size = state("title-size", none) #let sns-polylux-template_title-size = state("title-size", none)
// Data // Data
@ -67,6 +68,7 @@ cmyk(25%,7%,0%,0%),
txt-color2 : white, txt-color2 : white,
title-color : rgb("#444444"), title-color : rgb("#444444"),
size : 20pt, size : 20pt,
section-size : 20pt,
title-size : 64pt, title-size : 64pt,
bkgnd-color : white, bkgnd-color : white,
@ -93,6 +95,7 @@ cmyk(25%,7%,0%,0%),
sns-polylux-template_title-text-color.update(title-color) sns-polylux-template_title-text-color.update(title-color)
sns-polylux-template_size.update(size) sns-polylux-template_size.update(size)
sns-polylux-template_title-size.update(title-size) sns-polylux-template_title-size.update(title-size)
sns-polylux-template_section-size.update(section-size)
sns-polylux-template_colormap.update(colormap) sns-polylux-template_colormap.update(colormap)
@ -127,7 +130,7 @@ cmyk(25%,7%,0%,0%),
context { context {
//let section-pages = sns-polylux-template_section-pages.final() //let section-pages = sns-polylux-template_section-pages.final()
if not "END" in sns-polylux-template_section-pages.at(here()).keys() { if not "END" in sns-polylux-template_section-pages.at(here()).keys() {
let page_num = counter("logical-slide").at(here()) let page_num = counter("logical-slide").get()
sns-polylux-template_section-pages.update(secpages => { sns-polylux-template_section-pages.update(secpages => {
secpages.insert("END", page_num) secpages.insert("END", page_num)
secpages secpages
@ -138,7 +141,7 @@ cmyk(25%,7%,0%,0%),
#let register-section(title, no_dedicated_slide: false) = context { #let register-section(title, no_dedicated_slide: false) = context {
// YUCKKKKK, but polylux don't allows access to integers soooooo // YUCKKKKK, but polylux don't allows access to integers soooooo
let page_num = counter("logical-slide").at(here()) //sns-polylux-template_slide-pages.at(here()) let page_num = counter("logical-slide").get() //sns-polylux-template_slide-pages.at(here())
if no_dedicated_slide { if no_dedicated_slide {
page_num.at(0) += 1 page_num.at(0) += 1
} }
@ -282,9 +285,11 @@ cmyk(25%,7%,0%,0%),
counter("logical-slide").update( n => n - 1 ) counter("logical-slide").update( n => n - 1 )
} ) } )
#let sections() = context { #let sections(pos_before_slide) = context {
let section-pages = sns-polylux-template_section-pages.final() let section-pages = sns-polylux-template_section-pages.final()
let pnum = counter("logical-slide").at(here()).first() + 1 let section-size = sns-polylux-template_section-size.at(pos_before_slide)
set text(size: section-size)
let pnum = counter("logical-slide").at(pos_before_slide).first() + 1
pl.toolbox.all-sections((sections, current) => { pl.toolbox.all-sections((sections, current) => {
let beg-end-section = (:) let beg-end-section = (:)
let prev-sec = none let prev-sec = none
@ -383,6 +388,8 @@ cmyk(25%,7%,0%,0%),
let progress_bar_height = 3pt let progress_bar_height = 3pt
let title_bar_height = 2cm let title_bar_height = 2cm
let pos_before_slide = here()
// HEADER // HEADER
let header = align(top, context( { let header = align(top, context( {
let logo = sns-polylux-template_logo-2.at(here()) let logo = sns-polylux-template_logo-2.at(here())
@ -412,7 +419,7 @@ cmyk(25%,7%,0%,0%),
align(horizon + center,text(fill: sns-polylux-template_second-text-color.at(here()), { align(horizon + center,text(fill: sns-polylux-template_second-text-color.at(here()), {
v(-1em) v(-1em)
if hide-section { hide(sections()) } else { sections() } if hide-section { hide(sections(pos_before_slide)) } else { sections(pos_before_slide) }
})) }))
), ),
grid.cell(colspan: columns.len(), progress-bar()), grid.cell(colspan: columns.len(), progress-bar()),