Bibliography workflow
This commit is contained in:
commit
47982ce73a
10
.idea/.gitignore
generated
vendored
Normal file
10
.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Ignored default folder with query files
|
||||
/queries/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
17
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
17
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@ -0,0 +1,17 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ignoredPackages">
|
||||
<list />
|
||||
</option>
|
||||
</inspection_tool>
|
||||
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ignoredIdentifiers">
|
||||
<list>
|
||||
<option value="src.*" />
|
||||
</list>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
||||
6
.idea/misc.xml
generated
Normal file
6
.idea/misc.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/PPH.iml" filepath="$PROJECT_DIR$/PPH.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
8
PPH.iml
Normal file
8
PPH.iml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="GENERAL_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
41
justfile
Normal file
41
justfile
Normal file
@ -0,0 +1,41 @@
|
||||
|
||||
watch:
|
||||
typst watch main.typ
|
||||
|
||||
watch-bib:
|
||||
#!/usr/bin/env zsh
|
||||
BIB_URL="http://127.0.0.1:23119/better-bibtex/export?/library;id:1/collection;key:B7TICUAL/PPH.biblatex"
|
||||
|
||||
# Initial download and compile
|
||||
curl -o references.bib "$BIB_URL"
|
||||
typst compile main.typ
|
||||
|
||||
# Background process to watch URL for changes
|
||||
(
|
||||
while true; do
|
||||
TEMP_FILE=$(mktemp)
|
||||
curl -s -o "$TEMP_FILE" "$BIB_URL"
|
||||
if ! cmp -s "$TEMP_FILE" references.bib; then
|
||||
echo "Bibliography updated from URL"
|
||||
mv "$TEMP_FILE" references.bib
|
||||
typst compile main.typ
|
||||
else
|
||||
rm "$TEMP_FILE"
|
||||
fi
|
||||
sleep 10
|
||||
done
|
||||
) &
|
||||
URL_WATCHER_PID=$!
|
||||
|
||||
# Trap to kill background process on exit
|
||||
trap "kill $URL_WATCHER_PID 2>/dev/null; exit" INT TERM EXIT
|
||||
|
||||
# Watch local files for changes
|
||||
fswatch -o main.typ tplib-clement.typ references.bib | while read num; do
|
||||
typst compile main.typ
|
||||
done
|
||||
|
||||
update-bib:
|
||||
curl -o references.bib "http://127.0.0.1:23119/better-bibtex/export?/library;id:1/collection;key:B7TICUAL/PPH.bibtex"
|
||||
typst compile main.typ
|
||||
|
||||
96
main.typ
Normal file
96
main.typ
Normal file
@ -0,0 +1,96 @@
|
||||
#import "tplib-clement.typ": *
|
||||
#import table: cell
|
||||
|
||||
#show: tplib-clement.with(
|
||||
title: [Comment les big tech dominent ?\ État des lieux et perspectives.],
|
||||
authors: (
|
||||
("Clément", "Grennerat"),
|
||||
),
|
||||
left_footer: [PPH 4IF],
|
||||
date: [Février 2026],
|
||||
show_toc: true,
|
||||
break_toc: true,
|
||||
break_h1: true,
|
||||
tight_h1: false,
|
||||
lang: "fr",
|
||||
)
|
||||
|
||||
|
||||
#show link: this => {
|
||||
underline(text(this, fill: blue.darken(50%)))
|
||||
}
|
||||
#let comment = setup_comments.with(visible: true)
|
||||
|
||||
#comment[
|
||||
= Refs
|
||||
- The four — Le règne des quatre—Scott Galloway. (s. d.). Babelio. Consulté 5 janvier 2026, à l’adresse https://www.babelio.com/livres/Galloway-The-four-Le-regne-des-quatre/1185863
|
||||
- (1) De la liberté du logiciel et de son ouverture : Tour d’horizon et perspectives. (s. d.). Consulté 27 janvier 2026, à l’adresse https://www.academia.edu/1246995/De_la_libert%C3%A9_du_logiciel_et_de_son_ouverture_tour_d_horizon_et_perspectives?email_work_card=view-paper
|
||||
- Les employés des GAFAM, plus gros contributeurs du logiciel libre. (s. d.). Polytechnique Insights. Consulté 4 janvier 2026, à l’adresse https://www.polytechnique-insights.com/dossiers/digital/des-machines-et-des-hommes-les-defis-du-numerique/comment-les-geants-du-numerique-sapproprient-le-logiciel-libre/
|
||||
- An Office without GAFAM? (s. d.). Consulté 4 janvier 2026, à l’adresse https://publication2023.bits-und-baeume.org/values-for-transformation/an-office-without-gafam/
|
||||
- Redacción. (2024, septembre 4). How do we protect ourselves from dependence on the tech giants? Thediplomatinspain.Com. https://thediplomatinspain.com/en/2024/09/04/como-nos-defendemos-de-la-dependencia-de-los-gigantes-tecnologicos/
|
||||
]
|
||||
|
||||
#comment[
|
||||
= II. Sujet ciblé sur le contrôle des big tech
|
||||
#align(center)[
|
||||
_L’Homme esclave des big tech, état des lieux et perspectives._
|
||||
|
||||
_Comment l’Homme moderne est-t-il devenu esclave des big tech ? État des lieux et perspectives._
|
||||
]
|
||||
- Nécessité d’utiliser les software des big tech pour s’intégrer en société
|
||||
- La messagerie instantanée aujourd’hui
|
||||
- L’email aujourd’hui et le monopôle des fournisseurs
|
||||
- Le marché des systèmes d’exploitation et suites bureautique
|
||||
- opacité
|
||||
- Alternatives
|
||||
- logiciels open-source.
|
||||
- associations d’hébergement et self-hosting.
|
||||
- Exemple : éducation nationale
|
||||
- limites (rémunérations, contributions malveillantes) et sensibilisation du grand publique.
|
||||
- Conclusion : comment naviguer dans ce monde
|
||||
]
|
||||
|
||||
= Introduction
|
||||
|
||||
#comment[
|
||||
- Définition des big tech
|
||||
- État des lieux actuels (chiffres, ...)
|
||||
- Enjeux
|
||||
- Introduction de la problèmatique
|
||||
]
|
||||
|
||||
Dans le glossaire relatif à la confidentialité de Brave @QuestceQueBig2023, le terme "Big tech" est défini par "un terme générique qui se rapporte aux grandes entreprises technologiques qui fabriquent du matériel et des logiciels largement utilisés, et qui ont généralement une immense influence sur la technologie, Internet et l’économie dans son ensemble."
|
||||
Ce terme est souvent utilisé en faisant référence à cinq entreprises : Amazon, Apple, Alphabet (Google), Meta, et Microsoft. Mais on peut aussi le voir de manière plus large en intégrant toutes les très grande entreprises de l’informatique qui dominent dans leur milieu.
|
||||
|
||||
|
||||
= Pourquoi tout le monde utilise les big tech
|
||||
|
||||
== En entreprise
|
||||
|
||||
== Personnellement
|
||||
|
||||
|
||||
= Pourquoi vouloir quitter les big tech
|
||||
|
||||
== Centralisation du pouvoir
|
||||
|
||||
== On ne sait pas comment ça marche : obfuscation
|
||||
|
||||
|
||||
= Comment quitter les big tech
|
||||
|
||||
== Introduction à l’open-source
|
||||
|
||||
== Cas de l’éducation nationale
|
||||
|
||||
== Sensibilisation du grand public, ou pourquoi tout le monde s’en fout
|
||||
|
||||
|
||||
= Conclusion
|
||||
|
||||
== Ce que nous ont apportés les big tech
|
||||
|
||||
|
||||
= Bibliographie
|
||||
|
||||
#bibliography("references.bib", title: none, style: "apa")
|
||||
134
references.bib
Normal file
134
references.bib
Normal file
@ -0,0 +1,134 @@
|
||||
@online{1LusageLogiciels,
|
||||
title = {(1) {{L}}'usage Des Logiciels Libres : Regards Croisés Entre Le {{Québec}} et La {{France}}},
|
||||
url = {https://www.academia.edu/113218003/Lusage_des_logiciels_libres_regards_crois%C3%A9s_entre_le_Qu%C3%A9bec_et_la_France?uc-sb-sw=10299076},
|
||||
urldate = {2026-01-04},
|
||||
file = {/Users/clement/Zotero/storage/VCBZ8B3A/Lusage_des_logiciels_libres_regards_croisés_entre_le_Québec_et_la_France.html}
|
||||
}
|
||||
|
||||
@online{bigotDigitalSovereigntyWhy2025,
|
||||
title = {Digital Sovereignty: Why leaving the GAFAM is an absolute urgency (and what to replace them with) L'intelligence Artificielle pour les entreprises},
|
||||
shorttitle = {Digital Sovereignty},
|
||||
author = {Bigot, Rémy},
|
||||
date = {2025-04-25T07:11:08+00:00},
|
||||
url = {https://www.montersonbusiness.com/entreprise/digital-sovereignty-why-leaving-gafam-absolute-urgency/},
|
||||
urldate = {2026-01-04},
|
||||
abstract = {Share at: ChatGPT Perplexity WhatsApp LinkedIn X Grok Google AI The digital war is silent but ruthless. Our data, businesses, and administrations are massively dependent on GAFAM (Google, Apple, Facebook/Meta, Amazon, Microsoft). This dependence is far from trivial, exposing us to major risks: loss of strategic control, foreign interference, censorship, and economic vulnerability. 90\% of […]},
|
||||
langid = {french},
|
||||
organization = {L'intelligence Artificielle pour les entreprises},
|
||||
file = {/Users/clement/Zotero/storage/NBL7YNDZ/digital-sovereignty-why-leaving-gafam-absolute-urgency.html}
|
||||
}
|
||||
|
||||
@online{DigitalSovereigntyWhen2025,
|
||||
title = {Digital sovereignty: when public actors move from words to action},
|
||||
shorttitle = {Digital sovereignty},
|
||||
date = {2025-10-22T18:03:27+00:00},
|
||||
url = {https://www.exoplatform.com/blog/digital-sovereignty-when-public-actors-move-from-words-to-action/},
|
||||
urldate = {2026-01-04},
|
||||
abstract = {The Polytechnique school suspends its migration to Microsoft 365. The state of Schleswig-Holstein in northern Germany gives up Microsoft tools in favor of open source alternatives. The Occitanie region is gradually freeing itself from GAFAM.},
|
||||
langid = {french},
|
||||
organization = {eXo Platform},
|
||||
file = {/Users/clement/Zotero/storage/5I5AB38V/digital-sovereignty-when-public-actors-move-from-words-to-action.html}
|
||||
}
|
||||
|
||||
@online{EmployesGAFAMGros,
|
||||
title = {Les employés des GAFAM, plus gros contributeurs du logiciel libre},
|
||||
url = {https://www.polytechnique-insights.com/dossiers/digital/des-machines-et-des-hommes-les-defis-du-numerique/comment-les-geants-du-numerique-sapproprient-le-logiciel-libre/},
|
||||
urldate = {2026-01-04},
|
||||
abstract = {Découvrez dès maintenant l'épisode Les employés des GAFAM, plus gros contributeurs du logiciel libre sur Polytechnique Insights.},
|
||||
langid = {french},
|
||||
organization = {Polytechnique Insights},
|
||||
file = {/Users/clement/Zotero/storage/LR3UGVWT/comment-les-geants-du-numerique-sapproprient-le-logiciel-libre.html}
|
||||
}
|
||||
|
||||
@online{FourRegneQuatre,
|
||||
title = {The four - Le règne des quatre - Scott Galloway},
|
||||
url = {https://www.babelio.com/livres/Galloway-The-four-Le-regne-des-quatre/1185863},
|
||||
urldate = {2026-01-05},
|
||||
abstract = {Critiques (3), citations, extraits de The four - Le règne des quatre de Scott Galloway. Intéressé par le sujet, l'approche comparatif des 4 cavaliers Américai...},
|
||||
langid = {french},
|
||||
organization = {Babelio},
|
||||
file = {/Users/clement/Zotero/storage/FLI6SIKZ/1185863.html}
|
||||
}
|
||||
|
||||
@online{goziOpenSourceEducation2025,
|
||||
title = {Open source en éducation : avantages pour enseignants et élèves},
|
||||
shorttitle = {Open source en éducation},
|
||||
author = {Gozi, Simon},
|
||||
date = {2025-12-04T07:35:38+00:00},
|
||||
url = {https://www.regardsurlenumerique.fr/open-source-education-benefices/},
|
||||
urldate = {2026-01-04},
|
||||
abstract = {Découvrez comment l’open source révolutionne l’éducation en offrant aux enseignants et élèves des outils libres, innovants et accessibles.},
|
||||
langid = {french},
|
||||
organization = {Regards sur le numérique},
|
||||
file = {/Users/clement/Zotero/storage/PCCHJRDP/open-source-education-benefices.html}
|
||||
}
|
||||
|
||||
@online{LiberteLogicielSon,
|
||||
title = {De La Liberté Du Logiciel et de Son Ouverture : Tour d’horizon et Perspectives},
|
||||
url = {https://www.academia.edu/1246995/De_la_libert%C3%A9_du_logiciel_et_de_son_ouverture_tour_d_horizon_et_perspectives?email_work_card=view-paper},
|
||||
urldate = {2026-01-27},
|
||||
file = {/Users/clement/Zotero/storage/EUSDZ85Y/De_la_liberté_du_logiciel_et_de_son_ouverture_tour_d_horizon_et_perspectives.html}
|
||||
}
|
||||
|
||||
@online{OfficeGAFAM,
|
||||
title = {An {{Office}} without {{GAFAM}}?},
|
||||
url = {https://publication2023.bits-und-baeume.org/values-for-transformation/an-office-without-gafam/},
|
||||
urldate = {2026-01-04},
|
||||
file = {/Users/clement/Zotero/storage/G2ATCLCA/an-office-without-gafam.html}
|
||||
}
|
||||
|
||||
@online{QuestceQueBig2023,
|
||||
title = {Qu’est-ce que la Big Tech ?},
|
||||
date = {2023-03-13T00:00:00+00:00},
|
||||
url = {https://brave.com/fr/glossary/big-tech/},
|
||||
urldate = {2026-02-10},
|
||||
abstract = {Il n’est pas toujours facile de saisir tous les enjeux de la confidentialité en ligne. Cette liste regroupe des définitions concises des principaux termes liés à la confidentialité et à Internet, tels que «~Big Tech~». Consultez le glossaire relatif à la confidentialité de Brave ici.},
|
||||
langid = {french},
|
||||
organization = {Brave},
|
||||
file = {/Users/clement/Zotero/storage/FBEW5SKQ/big-tech.html}
|
||||
}
|
||||
|
||||
@online{redaccionHowWeProtect2024,
|
||||
title = {How Do We Protect Ourselves from Dependence on the Tech Giants?},
|
||||
author = {Redacción},
|
||||
date = {2024-09-04T06:04:00+02:00},
|
||||
url = {https://thediplomatinspain.com/en/2024/09/04/como-nos-defendemos-de-la-dependencia-de-los-gigantes-tecnologicos/},
|
||||
urldate = {2026-01-06},
|
||||
abstract = {A number of events illustrate the kind of world we are building and in which we are immersed. With these},
|
||||
langid = {american},
|
||||
organization = {thediplomatinspain.com},
|
||||
file = {/Users/clement/Zotero/storage/LJ2XIEYT/como-nos-defendemos-de-la-dependencia-de-los-gigantes-tecnologicos.html}
|
||||
}
|
||||
|
||||
@article{shadrachDigitalDominancePower2019,
|
||||
title = {Digital {{Dominance}}: {{The Power}} of {{Google}}, {{Amazon}}, {{Facebook}}, and {{Apple}}},
|
||||
shorttitle = {Digital {{Dominance}}},
|
||||
author = {Shadrach, Basheerhamad},
|
||||
date = {2019-11-04},
|
||||
journaltitle = {The International Journal of Information, Diversity, \& Inclusion (IJIDI)},
|
||||
shortjournal = {IJIDI},
|
||||
volume = {4},
|
||||
number = {1},
|
||||
issn = {2574-3430},
|
||||
doi = {10.33137/ijidi.v4i1.33062},
|
||||
url = {https://jps.library.utoronto.ca/index.php/ijidi/article/view/33062},
|
||||
urldate = {2026-01-27},
|
||||
abstract = {Book Review},
|
||||
file = {/Users/clement/Zotero/storage/3U7X7EVG/Shadrach - 2019 - Digital Dominance The Power of Google, Amazon, Facebook, and Apple.pdf}
|
||||
}
|
||||
|
||||
@online{ValueOpenSource,
|
||||
title = {The {{Value}} of {{Open Source Software}} - {{Working Paper}} - {{Faculty}} \& {{Research}} - {{Harvard Business School}}},
|
||||
url = {https://www.hbs.edu/faculty/Pages/item.aspx?num=65230},
|
||||
urldate = {2026-01-04},
|
||||
file = {/Users/clement/Zotero/storage/ZD2JP334/The Value of Open Source Software - Working Paper - Faculty & Research - Harvard Business School.pdf;/Users/clement/Zotero/storage/V4ZBY9RQ/item.html}
|
||||
}
|
||||
|
||||
@online{WhyDontYour2024,
|
||||
type = {Reddit Post},
|
||||
title = {Why Don't Your Companies Use {{Open Source}} Alternatives to the Big Players?},
|
||||
date = {2024-08-30T17:29:50},
|
||||
url = {https://www.reddit.com/r/webdev/comments/1f510gw/why_dont_your_companies_use_open_source/},
|
||||
urldate = {2026-01-04},
|
||||
organization = {r/webdev}
|
||||
}
|
||||
BIN
res/logo-insa-lyon.png
Normal file
BIN
res/logo-insa-lyon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
297
tplib-clement.typ
Normal file
297
tplib-clement.typ
Normal file
@ -0,0 +1,297 @@
|
||||
#import "@preview/codly:1.2.0": *
|
||||
#import "@preview/fontawesome:0.5.0": *
|
||||
|
||||
// ---- Variables ---- //
|
||||
|
||||
// Identificateurs
|
||||
#let identificateur-titre = [x309QfWkIO]
|
||||
#let identificateur-annexe = [U2pWAy70cU]
|
||||
#let identificateur-sous-titre-annexe = [4rS78a14Pv]
|
||||
|
||||
|
||||
// Couleurs
|
||||
#let couleur-rouge = color.red
|
||||
#let couleur-vert = color.rgb(0, 169, 51)
|
||||
#let couleur-bleu = color.rgb(52, 101, 164)
|
||||
#let couleur-bleu-legende = color.rgb(0,69,134)
|
||||
#let couleur-pourpre = color.rgb(166,77,121)
|
||||
|
||||
|
||||
// Polices
|
||||
#let fs-base = 12pt
|
||||
|
||||
#let fs-header = fs-base - 1.5pt
|
||||
#let fs-footer = fs-base - 2pt
|
||||
|
||||
#let fs-title = fs-base + 6pt
|
||||
#let fs-subtitle = fs-base + 2pt
|
||||
|
||||
#let fs-title1 = fs-base + 2pt
|
||||
#let fs-title2 = fs-base + 1pt
|
||||
#let fs-title3 = fs-base
|
||||
|
||||
#let fs-legend = fs-base - 2pt
|
||||
|
||||
|
||||
// Longueurs
|
||||
#let tabulation = 0.76cm
|
||||
#let titre-tabulation = 0.50cm
|
||||
#let titre-demi-tabulation = titre-tabulation / 2
|
||||
#let titre-tabulation-annexe = 0.33cm
|
||||
#let tab-numerotation = 0.2cm
|
||||
#let tab-sommaire = 0.4cm
|
||||
#let espace-vert-titres = 0.15cm
|
||||
|
||||
#show link: this => {
|
||||
underline(text(this, fill: blue.darken(50%)))
|
||||
}
|
||||
|
||||
#state("in-comment").update(false)
|
||||
#let setup_comments(body, visible: false) = {
|
||||
if visible {
|
||||
state("in-comment").update(true)
|
||||
set heading(
|
||||
outlined: false,
|
||||
numbering: none
|
||||
)
|
||||
block(fill: rgb("#ffe39c"), inset: 8pt, radius: 4pt, width:100%, body)
|
||||
state("in-comment").update(false)
|
||||
}
|
||||
}
|
||||
|
||||
#let tplib-clement(
|
||||
title: none, // `content?`
|
||||
authors: none, // `array<str> | content?`
|
||||
left_footer: none, // `content?`
|
||||
date: none, // `datetime | content?`
|
||||
font: "New Computer Modern", // `str`
|
||||
show_toc: true, // `bool`
|
||||
break_toc: false, // `bool`
|
||||
break_h1: true, // `bool`
|
||||
tight_h1: false, // `bool`
|
||||
show_comments: true,
|
||||
lang: "fr",
|
||||
doc // content
|
||||
) = {
|
||||
set text(
|
||||
lang: lang,
|
||||
font: (font,)
|
||||
)
|
||||
|
||||
set par(
|
||||
justify: true
|
||||
)
|
||||
|
||||
set heading(numbering: (..nums) => {
|
||||
let nums = nums.pos();
|
||||
let count = nums.len();
|
||||
for (i, num) in nums.enumerate() {
|
||||
if i == 0{
|
||||
" " * (count - 1);
|
||||
numbering("I.", num)
|
||||
}else if i == 1{
|
||||
numbering("1.", num)
|
||||
}else if i == 2{
|
||||
numbering("a.", num)
|
||||
}else if i == 3{
|
||||
numbering("a)", num)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
state("in-outline").update(false)
|
||||
show outline: it => {
|
||||
state("in-outline").update(true)
|
||||
it
|
||||
if not break_h1 and break_toc {
|
||||
pagebreak()
|
||||
}
|
||||
state("in-outline").update(false)
|
||||
}
|
||||
|
||||
show heading.where(depth: 1): it => {
|
||||
if it.outlined and not state("in-outline", false).get() {
|
||||
if break_h1 and not state("in-comment", true).get() {
|
||||
pagebreak(weak: true)
|
||||
}else if not tight_h1 {
|
||||
linebreak()
|
||||
}
|
||||
it
|
||||
}else {
|
||||
it
|
||||
}
|
||||
}
|
||||
|
||||
show link: this => {
|
||||
underline(text(this, fill: blue.darken(50%)))
|
||||
}
|
||||
|
||||
|
||||
show footnote.entry: set text(size: fs-footer)
|
||||
|
||||
show figure.caption: it => {
|
||||
text(
|
||||
fs-legend,
|
||||
[
|
||||
#let sup = if (it.supplement == [Fig.]) [Figure] else {it.supplement}
|
||||
#context [
|
||||
#smallcaps(sup) #it.counter.display(). #it.body
|
||||
]
|
||||
|
||||
]
|
||||
)
|
||||
}
|
||||
|
||||
show ref: it => {
|
||||
let element = it.element
|
||||
if (element == none
|
||||
or element.func() != figure
|
||||
or element.caption.supplement != [Fig.]){
|
||||
it
|
||||
return
|
||||
}
|
||||
let number = numbering(
|
||||
element.numbering,
|
||||
..counter(figure).at(element.location())
|
||||
)
|
||||
[#smallcaps[Figure] #number]
|
||||
}
|
||||
|
||||
set page(
|
||||
paper: "a4",
|
||||
margin: (
|
||||
left: 2cm,
|
||||
right: 2cm,
|
||||
top: 3cm,
|
||||
bottom: 2.5cm,
|
||||
),
|
||||
header: [
|
||||
#set text(size: fs-header)
|
||||
#grid(
|
||||
columns: (auto, 1fr, auto, 1fr, auto),
|
||||
rows: (auto, 5pt),
|
||||
stroke: (x, y) => if y == 1 {
|
||||
(bottom: (
|
||||
paint: luma(50%),
|
||||
thickness: 1pt
|
||||
))
|
||||
},
|
||||
[
|
||||
#set image(height: 0.8cm)
|
||||
#align(left + horizon)[
|
||||
#image("res/logo-insa-lyon.png")
|
||||
]
|
||||
], [],
|
||||
align(center + horizon)[
|
||||
#title
|
||||
], [],
|
||||
// Authors
|
||||
if authors != none {
|
||||
let row_count = calc.min(authors.len(), 3)
|
||||
let column_count = calc.ceil(authors.len() / row_count)
|
||||
authors = authors.sorted(key: it => it.at(1))
|
||||
align(right + horizon)[
|
||||
#grid(
|
||||
columns: (auto,) * column_count,
|
||||
rows: (auto,) * row_count,
|
||||
column-gutter: 3pt,
|
||||
row-gutter: 3pt,
|
||||
..authors.enumerate()
|
||||
.map(data => {
|
||||
let i = data.at(0);
|
||||
let author = data.at(1);
|
||||
let last_i = i == authors.len() - 1;
|
||||
grid.cell(
|
||||
colspan: if last_i {column_count * row_count - authors.len() + 1} else {1},
|
||||
{
|
||||
if authors.len() > 3 {
|
||||
[#smallcaps(author.at(1)) ]
|
||||
}else{
|
||||
[#author.at(0) #smallcaps(author.at(1)) ]
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
)
|
||||
]
|
||||
}
|
||||
)
|
||||
], // Header
|
||||
|
||||
footer: [
|
||||
#set text(size: fs-footer)
|
||||
#grid(
|
||||
columns: (1fr, 1fr, 1fr),
|
||||
align(left)[#left_footer],
|
||||
align(center)[
|
||||
#context [
|
||||
#counter(page).display(
|
||||
"– 1/1 –",
|
||||
both: true,
|
||||
)
|
||||
]
|
||||
],
|
||||
align(right)[#date],
|
||||
)
|
||||
], // Footer
|
||||
) // Page
|
||||
|
||||
// Heading
|
||||
set text(size: fs-title)
|
||||
align(center)[#title]
|
||||
|
||||
set text(size: fs-subtitle)
|
||||
let column_count = calc.min(authors.len(), 3)
|
||||
let row_count = calc.ceil(authors.len() / column_count)
|
||||
authors = authors.sorted(key: it => it.at(1))
|
||||
grid(
|
||||
columns: (1fr,) * column_count,
|
||||
rows: (auto,) * row_count,
|
||||
row-gutter: 12pt,
|
||||
..authors.enumerate().map(data => {
|
||||
let i = data.at(0);
|
||||
let author = data.at(1);
|
||||
let last_i = i == authors.len() - 1;
|
||||
grid.cell(
|
||||
colspan: if last_i {column_count * row_count - authors.len() + 1} else {1},
|
||||
align(center)[#author.at(0) #smallcaps(author.at(1))]
|
||||
)
|
||||
}
|
||||
)
|
||||
)
|
||||
align(center)[
|
||||
#date
|
||||
#if left_footer != none {
|
||||
[ \-- #left_footer]
|
||||
}
|
||||
]
|
||||
|
||||
set text(size: fs-base)
|
||||
if show_toc {
|
||||
outline()
|
||||
}
|
||||
|
||||
show: codly-init.with()
|
||||
let code-icon(fa-name) = {
|
||||
box(
|
||||
inset: (right: 3pt),
|
||||
height: 0.8em,
|
||||
baseline: 0.05em,
|
||||
fa-icon(fa-name)
|
||||
)
|
||||
h(0.1em)
|
||||
}
|
||||
codly(
|
||||
number-align: top + right,
|
||||
zebra-fill: luma(250),
|
||||
fill: luma(250),
|
||||
languages: (
|
||||
rust: (name: "Rust", icon: code-icon("rust"), color: rgb("#CE412B")),
|
||||
sql: (name: "SQL", icon: code-icon("database"), color: luma(180)),
|
||||
)
|
||||
)
|
||||
state("in-comment").update(false)
|
||||
doc
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user