<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.ainw.org/wiki/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Mon wiki - informatique:projets</title>
        <description></description>
        <link>https://www.ainw.org/wiki/</link>
        <lastBuildDate>Mon, 04 May 2026 11:41:32 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://www.ainw.org/wiki/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
            <title>Mon wiki</title>
            <link>https://www.ainw.org/wiki/</link>
        </image>
        <item>
            <title>amelioration_de_mon_site</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:projets:amelioration_de_mon_site&amp;rev=1754271999&amp;do=diff</link>
            <description>


&lt;h1 class=&quot;sectionedit1&quot; id=&quot;amelioration_de_mon_site&quot;&gt;Amélioration de mon site&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Am\u00e9lioration de mon site&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;amelioration_de_mon_site&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;12-52&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;amelioration_des_performances&quot;&gt;Amélioration des performances&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Depuis ses débuts, le web s&amp;#039;est alourdi. On a besoin de plus de puissance pour afficher une simple page web que pour lancer Appolo. Je peste régulièrement sur les sites qui mettent trop longtemps avant d&amp;#039;être utilisables. J&amp;#039;ai décidé de me regarder le nombril et d&amp;#039;alléger le contenu de mon site pour qu&amp;#039;il soit plus agréable à utiliser.
&lt;/p&gt;

&lt;p&gt;
Pour m&amp;#039;aider dans cette tâche, j&amp;#039;utilise l&amp;#039;outil &lt;a href=&quot;https://developers.google.com/speed/pagespeed/insights/&quot; class=&quot;urlextern&quot; title=&quot;https://developers.google.com/speed/pagespeed/insights/&quot; rel=&quot;ugc nofollow&quot;&gt;PageSpeed Insights&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; &lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; de Google. Un autre indicateur pour vérifier l&amp;#039;embonpoint de son site est l&amp;#039;outil &lt;a href=&quot;https://fitonafloppy.website/&quot; class=&quot;urlextern&quot; title=&quot;https://fitonafloppy.website/&quot; rel=&quot;ugc nofollow&quot;&gt;Fit on a Floppy&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;#fn__3&quot; id=&quot;fnt__3&quot; class=&quot;fn_top&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt; qui valide si la page appelée peut être stockée sur une disquette.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Am\u00e9lioration des performances&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;amelioration_des_performances&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;53-1057&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;compression_des_donnees&quot;&gt;Compression des données&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
L&amp;#039;étape la plus facile à mettre en œuvre est la compression des données entre le serveur et le navigateur afin de réduire la quantité de données transférées. J&amp;#039;utilise Apache comme serveur web, j&amp;#039;ai donc configuré mon fichier &lt;code&gt;.htaccess&lt;/code&gt; pour qu&amp;#039;il compresse les données compressibles &lt;sup&gt;&lt;a href=&quot;#fn__4&quot; id=&quot;fnt__4&quot; class=&quot;fn_top&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt;. Pour cela, j&amp;#039;utilise &lt;a href=&quot;https://httpd.apache.org/docs/2.4/fr/mod/mod_deflate.html&quot; class=&quot;urlextern&quot; title=&quot;https://httpd.apache.org/docs/2.4/fr/mod/mod_deflate.html&quot; rel=&quot;ugc nofollow&quot;&gt;mod_deflate&lt;/a&gt; pour le &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;, le &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;, le JS et le XML &lt;sup&gt;&lt;a href=&quot;#fn__5&quot; id=&quot;fnt__5&quot; class=&quot;fn_top&quot;&gt;5)&lt;/a&gt;&lt;/sup&gt;. J&amp;#039;ai donc ajouté les lignes suivantes dans mon fichier :
&lt;/p&gt;
&lt;pre class=&quot;code apache&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;AddType&lt;/span&gt; text/css .css
&lt;span class=&quot;kw1&quot;&gt;AddOutputFilterByType&lt;/span&gt; DEFLATE text/html
&lt;span class=&quot;kw1&quot;&gt;AddOutputFilterByType&lt;/span&gt; DEFLATE text/css
&lt;span class=&quot;kw1&quot;&gt;AddOutputFilterByType&lt;/span&gt; DEFLATE application/javascript
&lt;span class=&quot;kw1&quot;&gt;AddOutputFilterByType&lt;/span&gt; DEFLATE application/xml&lt;/pre&gt;

&lt;p&gt;
J&amp;#039;ai ensuite vérifié que le contenu fourni était correctement compressé avec cet &lt;a href=&quot;https://varvy.com/tools/gzip/&quot; class=&quot;urlextern&quot; title=&quot;https://varvy.com/tools/gzip/&quot; rel=&quot;ugc nofollow&quot;&gt;outil&lt;/a&gt; et que j&amp;#039;avais amélioré mon score sur PageSpeed Insights. C&amp;#039;est concluant, alors on passe à l&amp;#039;étape suivante.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Compression des donn\u00e9es&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;compression_des_donnees&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1058-2136&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;changement_de_theme&quot;&gt;Changement de thème&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
J&amp;#039;ai troqué le thème &lt;em&gt;bootstrap&lt;/em&gt; pour le thème &lt;em&gt;lanyon&lt;/em&gt; qui utilise beaucoup moins de fichiers.
J&amp;#039;ai du abandonner quelques effets supportés par le précédent thème mais ce n&amp;#039;est pas trop grave car j&amp;#039;y ai gagné en lisibilité et en clareté.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Changement de th\u00e8me&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;changement_de_theme&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2137-2421&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;suppression_des_videos&quot;&gt;Suppression des vidéos&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://getnikola.com/&quot; class=&quot;urlextern&quot; title=&quot;https://getnikola.com/&quot; rel=&quot;ugc nofollow&quot;&gt;Nikola&lt;/a&gt; permet d&amp;#039;inclure une vidéo Youtube par l&amp;#039;intermédiaire d&amp;#039;un mot-clé.
Cela inclus automatiquement le lecteur de vidéo avec son lot de dépendances&lt;sup&gt;&lt;a href=&quot;#fn__6&quot; id=&quot;fnt__6&quot; class=&quot;fn_top&quot;&gt;6)&lt;/a&gt;&lt;/sup&gt;.
Comme l&amp;#039;usage de la vidéo sur mon site est très limité et que dans la plus part des cas, un lien suffit, j&amp;#039;ai remplacé le mot-clé par un lien vers l&amp;#039;original.
&lt;/p&gt;

&lt;p&gt;
C&amp;#039;est un changement très facile qui m&amp;#039;a permis de passer d&amp;#039;un score inférieur à 50 à un score supérieur à 70.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Suppression des vid\u00e9os&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;suppression_des_videos&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2422-2945&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;suppression_des_appels_a_google&quot;&gt;Suppression des appels à Google&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Le thème utilisé &lt;sup&gt;&lt;a href=&quot;#fn__7&quot; id=&quot;fnt__7&quot; class=&quot;fn_top&quot;&gt;7)&lt;/a&gt;&lt;/sup&gt; fait des appels à Google pour la récupération des polices de caractères. Comme je ne suis pas fan de faire des appels aux serveurs de Google &lt;sup&gt;&lt;a href=&quot;#fn__8&quot; id=&quot;fnt__8&quot; class=&quot;fn_top&quot;&gt;8)&lt;/a&gt;&lt;/sup&gt;, je préfère héberger les polices sur mon serveur. Pour cela, j&amp;#039;ai supprimé la ligne correspondante dans le fichier &lt;em&gt;base_helper.tmpl&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;//fonts.googleapis.com/css?family=PT+Serif:400,400italic,700|PT+Sans:400&amp;quot;&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Maintenant le site utilise les polices disponibles dans le navigateur. Comme je veux toujours utiliser la police &lt;em&gt;PT&lt;/em&gt;, j&amp;#039;ai téléchargé les fichiers &lt;em&gt;TrueType&lt;/em&gt; associés dans le répertoire de polices de mon site. J&amp;#039;ai ensuite modifié les fichiers de style pour reproduire ce que faisait Google.
&lt;/p&gt;
&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* latin-ext */&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PT Sans&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;400&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PT Sans&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PTSans-Regular&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;../fonts/PT_Sans/PT_Sans-Web-Regular.ttf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;truetype&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;unicode-range&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0100-024F&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0259&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;1E00-1EFF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2020&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;20A0-20AB&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;20AD-20CF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2113&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;2C60-2C7F&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;A720-A7FF&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* latin */&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PT Sans&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;400&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PT Sans&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PTSans-Regular&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;../fonts/PT_Sans/PT_Sans-Web-Regular.ttf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;truetype&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;unicode-range&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0000-00FF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0131&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0152-0153&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02BB-02BC&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02C6&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02DA&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02DC&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2000&lt;/span&gt;-206F&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2074&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;20AC&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2122&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2191&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2193&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2212&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2215&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;FEFF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;FFFD&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* latin-ext */&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PT Serif&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;italic&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;400&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PT Serif Italic&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PTSerif-Italic&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;../fonts/PT_Serif/PT_Serif-Web-Italic.ttf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;truetype&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;unicode-range&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0100-024F&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0259&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;1E00-1EFF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2020&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;20A0-20AB&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;20AD-20CF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2113&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;2C60-2C7F&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;A720-A7FF&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* latin */&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PT Serif&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;italic&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;400&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PT Serif Italic&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PTSerif-Italic&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;../fonts/PT_Serif/PT_Serif-Web-Italic.ttf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;truetype&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;unicode-range&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0000-00FF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0131&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0152-0153&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02BB-02BC&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02C6&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02DA&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02DC&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2000&lt;/span&gt;-206F&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2074&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;20AC&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2122&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2191&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2193&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2212&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2215&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;FEFF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;FFFD&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* latin-ext */&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PT Serif&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;400&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PT Serif&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PTSerif-Regular&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;../fonts/PT_Serif/PT_Serif-Web-Regular.ttf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;truetype&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;unicode-range&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0100-024F&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0259&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;1E00-1EFF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2020&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;20A0-20AB&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;20AD-20CF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2113&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;2C60-2C7F&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;A720-A7FF&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* latin */&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PT Serif&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;400&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PT Serif&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PTSerif-Regular&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;../fonts/PT_Serif/PT_Serif-Web-Regular.ttf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;truetype&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;unicode-range&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0000-00FF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0131&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0152-0153&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02BB-02BC&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02C6&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02DA&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02DC&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2000&lt;/span&gt;-206F&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2074&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;20AC&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2122&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2191&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2193&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2212&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2215&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;FEFF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;FFFD&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* latin-ext */&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PT Serif&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;700&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PT Serif Bold&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PTSerif-Bold&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;../fonts/PT_Serif/PT_Serif-Web-Bold.ttf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;truetype&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;unicode-range&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0100-024F&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0259&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;1E00-1EFF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2020&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;20A0-20AB&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;20AD-20CF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2113&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;2C60-2C7F&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;A720-A7FF&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* latin */&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PT Serif&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;700&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PT Serif Bold&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; local&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;PTSerif-Bold&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;../fonts/PT_Serif/PT_Serif-Web-Bold.ttf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;truetype&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;unicode-range&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0000-00FF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0131&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;0152-0153&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02BB-02BC&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02C6&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02DA&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;02DC&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2000&lt;/span&gt;-206F&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2074&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;20AC&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2122&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2191&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2193&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2212&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2215&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;FEFF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; U&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;FFFD&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Pour optimiser les temps de chargement, j&amp;#039;ai ajouté une directive dans le fichier &lt;code&gt;.htaccess&lt;/code&gt; pour prendre en charge la compression des polices :
&lt;/p&gt;
&lt;pre class=&quot;code apache&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;AddType&lt;/span&gt; font/truetype .ttf
&lt;span class=&quot;kw1&quot;&gt;AddOutputFilterByType&lt;/span&gt; DEFLATE font/truetype&lt;/pre&gt;

&lt;p&gt;
Ces opérations ne changent pas vraiment la performance générale du site, mais il me permet de ne pas dépendre de Google.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Suppression des appels \u00e0 Google&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;suppression_des_appels_a_google&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2946-7123&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;ajout_d_une_politique_de_cache&quot;&gt;Ajout d&amp;#039;une politique de cache&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Une autre façon d&amp;#039;avoir de meilleures performances est d&amp;#039;activer le cache. Toutes les resources n&amp;#039;ont pas la même durée de vie, il faut donc gérer la durée de rétention en cache en fonction du type de ressource. Dans mon cas, j&amp;#039;ai mis une durée de vie de 1 an pour les ressources qui ne devraient pas changer (images, polices, documents), 1 semaine pour les resources qui ne changent que rarement (feuilles de style, script) et 6 heures pour le contenu du site.
Pour cela, j&amp;#039;ai ajouté la configuration suivante dans mon fichier &lt;code&gt;.htaccess&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code apache&quot;&gt;&amp;lt;&lt;span class=&quot;kw3&quot;&gt;FilesMatch&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\.&lt;/span&gt;(ico|pdf|jpg|jpeg|png|ttf)$&amp;quot;&lt;/span&gt;&amp;gt;
&lt;span class=&quot;kw1&quot;&gt;Header&lt;/span&gt; set Cache-Control &lt;span class=&quot;st0&quot;&gt;&amp;quot;max-age=31449600, public&amp;quot;&lt;/span&gt;
&amp;lt;/&lt;span class=&quot;kw3&quot;&gt;FilesMatch&lt;/span&gt;&amp;gt;
&amp;lt;&lt;span class=&quot;kw3&quot;&gt;FilesMatch&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\.&lt;/span&gt;(css|js)$&amp;quot;&lt;/span&gt;&amp;gt;
&lt;span class=&quot;kw1&quot;&gt;Header&lt;/span&gt; set Cache-Control &lt;span class=&quot;st0&quot;&gt;&amp;quot;max-age=604800, public, must-revalidate&amp;quot;&lt;/span&gt;
&amp;lt;/&lt;span class=&quot;kw3&quot;&gt;FilesMatch&lt;/span&gt;&amp;gt;
&amp;lt;&lt;span class=&quot;kw3&quot;&gt;FilesMatch&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\.&lt;/span&gt;(html|htm|xml)$&amp;quot;&lt;/span&gt;&amp;gt;
&lt;span class=&quot;kw1&quot;&gt;Header&lt;/span&gt; set Cache-Control &lt;span class=&quot;st0&quot;&gt;&amp;quot;max-age=32400, must-revalidate&amp;quot;&lt;/span&gt;
&amp;lt;/&lt;span class=&quot;kw3&quot;&gt;FilesMatch&lt;/span&gt;&amp;gt;&lt;/pre&gt;

&lt;p&gt;
À partir de ce moment, mon indice de performance est supérieur à 85.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ajout d&amp;#039;une politique de cache&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ajout_d_une_politique_de_cache&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;7124-8135&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;minimiser_le_nombre_d_appels&quot;&gt;Minimiser le nombre d&amp;#039;appels&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Le site utilise plusieurs feuilles de style ainsi que plusieurs fichiers de script. Il est possible de les regrouper ce qui a pour effet de limiter le nombre d&amp;#039;appel, limiter le nombre de compression/décompression et donc de rendre le site plus réactif. Avec nikola, rien de plus simple. Il suffit d&amp;#039;activer la configuration suivante dans le fichier &lt;em&gt;conf.py&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code python&quot;&gt;USE_BUNDLES &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Il faudra, au préalable, installer le paquet &lt;em&gt;webassets&lt;/em&gt; pour que cela fonctionne correctement :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pip install webassets&lt;/pre&gt;

&lt;p&gt;
À partir de ce moment, mon indice de performance avoisine les 95.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_important plugin_wrap&quot;&gt;
&lt;p&gt;
Attention, pour que les fichiers &lt;em&gt;custom.css&lt;/em&gt; et &lt;em&gt;fonts.css&lt;/em&gt; soient ajoutés au fichier généré, il faut les ajouter dans le fichier de configuration &lt;em&gt;bundles&lt;/em&gt;.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_tip plugin_wrap&quot;&gt;
&lt;p&gt;
Il faut éviter l&amp;#039;utililation de l&amp;#039;import de fichier en &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; (&lt;code&gt;@import&lt;/code&gt;) car cela force le navigateur a charger les fichiers séquentiellement.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Minimiser le nombre d&amp;#039;appels&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;minimiser_le_nombre_d_appels&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;8136-9144&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;minifier_les_fichiers&quot;&gt;Minifier les fichiers&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Pour limiter la taille de certains fichiers transférés, il est possible d&amp;#039;en supprimer les espaces non-significatifs &lt;sup&gt;&lt;a href=&quot;#fn__9&quot; id=&quot;fnt__9&quot; class=&quot;fn_top&quot;&gt;9)&lt;/a&gt;&lt;/sup&gt;.
Pour cela, j&amp;#039;ai utilisé des filtres déclenchés à la fin du traitement de compilation pour traiter les fichiers &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; et les fichiers XML.
Comme ces filtres sont fournis avec Nikola, il suffit de les activer dans la configuration.
Dans le fichier &lt;em&gt;conf.py&lt;/em&gt;, il faut ajouter les lignes suivantes :
&lt;/p&gt;
&lt;pre class=&quot;code python&quot;&gt;FILTERS &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;st0&quot;&gt;&amp;quot;.css&amp;quot;&lt;/span&gt;: &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;filters.cssminify&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st0&quot;&gt;&amp;quot;.xml&amp;quot;&lt;/span&gt;: &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;filters.xmlminify&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_important plugin_wrap&quot;&gt;
&lt;p&gt;
Il est important d&amp;#039;avoir une connexion à Internet car le filtre &lt;em&gt;filters.cssminify&lt;/em&gt; utilise un service externe pour supprimer les espaces non-significatifs.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Minifier les fichiers&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;minifier_les_fichiers&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;9145-9929&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;suppression_du_js&quot;&gt;Suppression du JS&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
J&amp;#039;utilise le javascript uniquement pour l&amp;#039;interprétation du LaTeX situé dans certaines pages. Les autres appels sont donc inutiles.
J&amp;#039;ai modifié le thème &lt;code&gt;lanyon&lt;/code&gt; pour supprimer tous ces appels :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Suppression de la définition de la méthode &lt;em&gt;late_load_js&lt;/em&gt; dans &lt;em&gt;base_helper.tmpl&lt;/em&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Suppression de l&amp;#039;appel conditionnel de javascript pour Internet Explorer 9 dans &lt;em&gt;base_helper.tmpl&lt;/em&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Suppression de l&amp;#039;appel de la méthode &lt;em&gt;late_load_js&lt;/em&gt; dans &lt;em&gt;base.tmpl&lt;/em&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Suppression de l&amp;#039;appel de javascript supplémentaire dans &lt;em&gt;base.tmpl&lt;/em&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Suppression du JS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;suppression_du_js&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;9930-10514&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;amelioration_de_la_securite&quot;&gt;Amélioration de la sécurité&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Après être tombé par hasard sur le site &lt;a href=&quot;https://securityheaders.com&quot; class=&quot;urlextern&quot; title=&quot;https://securityheaders.com&quot; rel=&quot;ugc nofollow&quot;&gt;Security Headers&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;#fn__10&quot; id=&quot;fnt__10&quot; class=&quot;fn_top&quot;&gt;10)&lt;/a&gt;&lt;/sup&gt;, je me suis rendu compte que ma note était vraiment basse. En fait, je n&amp;#039;avais jamais prêté attention aux entêtes envoyés par mon serveur et je n&amp;#039;avais même jamais entendu parlé de ces entêtes.
&lt;/p&gt;

&lt;p&gt;
J&amp;#039;ai donc décidé d&amp;#039;y remédier et porter attention à la sécurité de mes visiteurs. Pour cela, j&amp;#039;ai modifié mon fichier &lt;code&gt;.htaccess&lt;/code&gt; en ajoutant les directives suivantes :
&lt;/p&gt;
&lt;pre class=&quot;code apache&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;Header&lt;/span&gt; set Content-Security-Policy &lt;span class=&quot;st0&quot;&gt;&amp;quot;default-src &#039;none&#039;; script-src &#039;self&#039; &#039;unsafe-inline&#039; &#039;unsafe-eval&#039; cdnjs.cloudflare.com; font-src &#039;self&#039; cdnjs.cloudflare.com; img-src &#039;self&#039; data:; style-src &#039;self&#039; &#039;unsafe-inline&#039;; base-uri &#039;self&#039;; connect-src &#039;self&#039;; form-action &#039;self&#039;; media-src &#039;self&#039;; frame-src embed.diagrams.net; worker-src embed.diagrams.net&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;Header&lt;/span&gt; set Permissions-Policy &lt;span class=&quot;st0&quot;&gt;&amp;quot;interest-cohort=()&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;Header&lt;/span&gt; set Referrer-Policy &lt;span class=&quot;st0&quot;&gt;&amp;quot;no-referrer&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;Header&lt;/span&gt; set Strict-Transport-Security &lt;span class=&quot;st0&quot;&gt;&amp;quot;max-age=31536000; includeSubDomains&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;Header&lt;/span&gt; set X-Content-Type-&lt;span class=&quot;kw1&quot;&gt;Options&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;nosniff&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;Header&lt;/span&gt; set X-Frame-&lt;span class=&quot;kw1&quot;&gt;Options&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;SAMEORIGIN&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Content-Security-Policy&lt;/strong&gt; permet de gérer la manière dont les ressources du site peuvent être chargées. Ces permissions sont encore un peu trop large à mon goût car je suis encore obligé d&amp;#039;autoriser &lt;em&gt;cloudflare.com&lt;/em&gt;&lt;sup&gt;&lt;a href=&quot;#fn__11&quot; id=&quot;fnt__11&quot; class=&quot;fn_top&quot;&gt;11)&lt;/a&gt;&lt;/sup&gt;. Pour plus d&amp;#039;informations, il y a le &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP&quot; class=&quot;urlextern&quot; title=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP&quot; rel=&quot;ugc nofollow&quot;&gt;MDN&lt;/a&gt; et le &lt;a href=&quot;https://content-security-policy.com/&quot; class=&quot;urlextern&quot; title=&quot;https://content-security-policy.com/&quot; rel=&quot;ugc nofollow&quot;&gt;guide de référence&lt;/a&gt;. &lt;sup&gt;&lt;a href=&quot;#fn__12&quot; id=&quot;fnt__12&quot; class=&quot;fn_top&quot;&gt;12)&lt;/a&gt;&lt;/sup&gt;&lt;br/&gt;

&lt;strong&gt;Permissions-Policy&lt;/strong&gt; permet de gérer les autorisations d&amp;#039;accès aux &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt; du navigateur. Ici, je l&amp;#039;ai configuré pour bloquer l&amp;#039;accès à la nouvelle technologie de pistage de Google. Pour plus d&amp;#039;informations, il y a &lt;a href=&quot;https://plausible.io/blog/google-floc&quot; class=&quot;urlextern&quot; title=&quot;https://plausible.io/blog/google-floc&quot; rel=&quot;ugc nofollow&quot;&gt;ce site&lt;/a&gt; et &lt;a href=&quot;https://paramdeo.com/blog/opting-your-website-out-of-googles-floc-network&quot; class=&quot;urlextern&quot; title=&quot;https://paramdeo.com/blog/opting-your-website-out-of-googles-floc-network&quot; rel=&quot;ugc nofollow&quot;&gt;ce site&lt;/a&gt; qui en parlent mieux que je ne pourrais le faire.&lt;br/&gt;

&lt;strong&gt;Referrer-Policy&lt;/strong&gt; permet de gérer les informations transmises lors de l&amp;#039;ouverture d&amp;#039;un lien externe au site. Ici, je l&amp;#039;ai configuré pour ne rien envoyer. Pour plus d&amp;#039;informations, il y a le &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy&quot; class=&quot;urlextern&quot; title=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy&quot; rel=&quot;ugc nofollow&quot;&gt;MDN&lt;/a&gt;.&lt;br/&gt;

&lt;strong&gt;Strict-Transport-Security&lt;/strong&gt; indique au navigateur d&amp;#039;utiliser uniquement HTTPS pour accéder au site. Ici, je l&amp;#039;ai configuré avec la valeur recommandée. Pour plus d&amp;#039;informations, il y a le &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security&quot; class=&quot;urlextern&quot; title=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security&quot; rel=&quot;ugc nofollow&quot;&gt;MDN&lt;/a&gt;.&lt;br/&gt;

&lt;strong&gt;X-Content-Type-Options&lt;/strong&gt; indique au navigateur de ne pas modifier les types MIME envoyés par le serveur. Pour plus d&amp;#039;informations, il y a le &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options&quot; class=&quot;urlextern&quot; title=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options&quot; rel=&quot;ugc nofollow&quot;&gt;MDN&lt;/a&gt;.&lt;br/&gt;

&lt;strong&gt;X-Frame-Options&lt;/strong&gt; indique au navigateur si le site peut être inclus dans un autre site. Pour plus d&amp;#039;informations, il y a le &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options&quot; class=&quot;urlextern&quot; title=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options&quot; rel=&quot;ugc nofollow&quot;&gt;MDN&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Am\u00e9lioration de la s\u00e9curit\u00e9&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;amelioration_de_la_securite&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;10515-13988&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;amelioration_de_l_accessibilite&quot;&gt;Amélioration de l&amp;#039;accessibilité&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Après avoir fait quelques recherches sur l&amp;#039;accessibilité des sites web, je me suis rendu compte que le mien pouvait être très largement amélioré.
Voici la liste des choses que j&amp;#039;ai faite pour améliorer mes scores sur différents outils :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ajout de description alternative &lt;sup&gt;&lt;a href=&quot;#fn__13&quot; id=&quot;fnt__13&quot; class=&quot;fn_top&quot;&gt;13)&lt;/a&gt;&lt;/sup&gt;sur les balises &lt;code&gt;img&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Augmentation du contraste du texte.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Modification des liens pour éviter les redirections permanentes &lt;sup&gt;&lt;a href=&quot;#fn__14&quot; id=&quot;fnt__14&quot; class=&quot;fn_top&quot;&gt;14)&lt;/a&gt;&lt;/sup&gt;, j&amp;#039;ai modifié l&amp;#039;ensemble des liens dans le fichier &lt;em&gt;conf.py&lt;/em&gt; pour qu&amp;#039;ils dirigent vers la vraie &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Utilisation d&amp;#039;images en JPG Progressif à l&amp;#039;aide d&amp;#039;un filtre déclenché en fin de traitement. Ce filtre est à configurer dans le fichier &lt;em&gt;conf.py&lt;/em&gt; : &lt;pre class=&quot;code python&quot;&gt;FILTERS &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;st0&quot;&gt;&amp;quot;.jpg&amp;quot;&lt;/span&gt;: &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;jpegoptim --strip-all --all-progressive %s&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Suppression des identifiants dupliqués à l&amp;#039;aide d&amp;#039;un filtre déclenché en fin de traitement. Ce filtre est à configurer dans le fichier &lt;em&gt;conf.py&lt;/em&gt; : &lt;pre class=&quot;code python&quot;&gt;FILTERS &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;st0&quot;&gt;&amp;quot;.html&amp;quot;&lt;/span&gt;: &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;filters.deduplicate_ids&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_info plugin_wrap&quot;&gt;
&lt;p&gt;
Pour identifier et corriger les problèmes d&amp;#039;accessibilité de mon site, j&amp;#039;ai utilisé les outils suivants :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://color.a11y.com/Contrast/&quot; class=&quot;urlextern&quot; title=&quot;https://color.a11y.com/Contrast/&quot; rel=&quot;ugc nofollow&quot;&gt;Color Contrast Accessibility Validator&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://ready.mobi&quot; class=&quot;urlextern&quot; title=&quot;https://ready.mobi&quot; rel=&quot;ugc nofollow&quot;&gt;mobiReady&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.webaccessibility.com&quot; class=&quot;urlextern&quot; title=&quot;https://www.webaccessibility.com&quot; rel=&quot;ugc nofollow&quot;&gt;WebAccessibility.com&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://validator.w3.org/checklink&quot; class=&quot;urlextern&quot; title=&quot;https://validator.w3.org/checklink&quot; rel=&quot;ugc nofollow&quot;&gt;W3C Link Checker&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.webpagetest.org&quot; class=&quot;urlextern&quot; title=&quot;https://www.webpagetest.org&quot; rel=&quot;ugc nofollow&quot;&gt;WebPageTest&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Am\u00e9lioration de l&amp;#039;accessibilit\u00e9&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;amelioration_de_l_accessibilite&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;13989-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;a href=&quot;https://developers.google.com/speed/pagespeed/insights/?url=https%3A%2F%2Fainw.org%2F&quot; class=&quot;urlextern&quot; title=&quot;https://developers.google.com/speed/pagespeed/insights/?url=https%3A%2F%2Fainw.org%2F&quot; rel=&quot;ugc nofollow&quot;&gt;PageSpeed Insights - AINW.ORG&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Attention à autoriser le &lt;em&gt;referer&lt;/em&gt; pour pouvoir l&amp;#039;utiliser&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__3&quot; id=&quot;fn__3&quot; class=&quot;fn_bot&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;a href=&quot;https://fitonafloppy.website/?website=ainw.org&amp;amp;https=true&quot; class=&quot;urlextern&quot; title=&quot;https://fitonafloppy.website/?website=ainw.org&amp;amp;https=true&quot; rel=&quot;ugc nofollow&quot;&gt;Fit on a Floppy - AINW.ORG&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__4&quot; id=&quot;fn__4&quot; class=&quot;fn_bot&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;on oublie toutes les données déjà optimisées comme les images&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__5&quot; id=&quot;fn__5&quot; class=&quot;fn_bot&quot;&gt;5)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;pour le flux RSS&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__6&quot; id=&quot;fn__6&quot; class=&quot;fn_bot&quot;&gt;6)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;, JS et trackers&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__7&quot; id=&quot;fn__7&quot; class=&quot;fn_bot&quot;&gt;7)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;lanyon&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__8&quot; id=&quot;fn__8&quot; class=&quot;fn_bot&quot;&gt;8)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;profilage, etc&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__9&quot; id=&quot;fn__9&quot; class=&quot;fn_bot&quot;&gt;9)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;C&amp;#039;est l&amp;#039;action &lt;em&gt;minify&lt;/em&gt; en anglais&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__10&quot; id=&quot;fn__10&quot; class=&quot;fn_bot&quot;&gt;10)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;a href=&quot;https://securityheaders.com/?q=https%3A%2F%2Fainw.org&amp;amp;followRedirects=on&quot; class=&quot;urlextern&quot; title=&quot;https://securityheaders.com/?q=https%3A%2F%2Fainw.org&amp;amp;followRedirects=on&quot; rel=&quot;ugc nofollow&quot;&gt;Security Headers - AINW.ORG&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__11&quot; id=&quot;fn__11&quot; class=&quot;fn_bot&quot;&gt;11)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Nécessaire pour MathJax jusqu&amp;#039;au jour où j&amp;#039;arrive à le faire fonctionner directement sur mon site&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__12&quot; id=&quot;fn__12&quot; class=&quot;fn_bot&quot;&gt;12)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Cet entête m&amp;#039;a causé quelques soucis car il a été appliqué également sur le wiki. Je n&amp;#039;en ai pas eu conscience jusqu&amp;#039;au moment où j&amp;#039;ai essayé d&amp;#039;y intégrer des vidéos. Il me manquait la règle autorisant les médias, à savoir &lt;code&gt;media-src&lt;/code&gt;. Ce fut un beau casse-tête à résoudre.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__13&quot; id=&quot;fn__13&quot; class=&quot;fn_bot&quot;&gt;13)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Attribut &lt;em&gt;alt&lt;/em&gt; de la balise &lt;em&gt;img&lt;/em&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__14&quot; id=&quot;fn__14&quot; class=&quot;fn_bot&quot;&gt;14)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/HTTP_301&quot; class=&quot;urlextern&quot; title=&quot;https://en.wikipedia.org/wiki/HTTP_301&quot; rel=&quot;ugc nofollow&quot;&gt;HTTP 301 - Wikipedia&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 04 Aug 2025 01:46:39 +0000</pubDate>
        </item>
        <item>
            <title>carnet_adresses</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:projets:carnet_adresses&amp;rev=1735646949&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;mise_en_place_d_un_carnet_d_adresse&quot;&gt;Mise en place d&amp;#039;un carnet d&amp;#039;adresse&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Il y a quelques années, j&amp;#039;avais mis mon carnet d&amp;#039;adresse en ligne avec &lt;a href=&quot;https://sourceforge.net/projects/php-addressbook/&quot; class=&quot;urlextern&quot; title=&quot;https://sourceforge.net/projects/php-addressbook/&quot; rel=&quot;ugc nofollow&quot;&gt;PHP Address Book&lt;/a&gt;. Mais la solution choisie ne me convenait plus. Voici ce que j&amp;#039;ai fait pour mettre en place quelque chose de plus adapté à mes besoins.
&lt;/p&gt;

&lt;p&gt;
Avec PHP Address Book, j&amp;#039;ai plusieurs fois perdu les adresses de certains de mes contacts. Parfois à cause de l&amp;#039;ergonomie peu adaptée, parfois à cause de vulnérabilités (&lt;a href=&quot;https://www.ainw.org/wiki/lib/exe/fetch.php?media=projets:informatique:exploits_of_a_mom.png&quot; class=&quot;media mediafile mf_png&quot; title=&quot;projets:informatique:exploits_of_a_mom.png (31.2 KB)&quot;&gt;injection SQL&lt;/a&gt;). En bref, ce n&amp;#039;était pas une situation acceptable pour conserver ce genre d&amp;#039;information.
&lt;/p&gt;

&lt;p&gt;
Ma première idée fut de refaire quelque chose de similaire en utilisant &lt;a href=&quot;https://symfony.com/&quot; class=&quot;urlextern&quot; title=&quot;https://symfony.com/&quot; rel=&quot;ugc nofollow&quot;&gt;Symfony&lt;/a&gt; et le bundle &lt;a href=&quot;https://symfony.com/doc/master/bundles/EasyAdminBundle/index.html&quot; class=&quot;urlextern&quot; title=&quot;https://symfony.com/doc/master/bundles/EasyAdminBundle/index.html&quot; rel=&quot;ugc nofollow&quot;&gt;EasyAdminBundle&lt;/a&gt;. J&amp;#039;utilise ce genre de chose tous les jours, je me suis donc dit que je pourrai faire ça rapidement. J&amp;#039;ai commencé à mettre en place et j&amp;#039;ai obtenu quelque chose de fonctionnel assez facilement. Par contre, ce n&amp;#039;était pas du tout travaillé en terme d&amp;#039;ergonomie et d&amp;#039;interface. Je me suis promis de revenir dessus mais je ne l&amp;#039;ai jamais fait. C&amp;#039;était il y a quelques mois.
&lt;/p&gt;

&lt;p&gt;
En laissant mûrir ça, j&amp;#039;ai commencé à me dire que je n&amp;#039;avais pas besoin d&amp;#039;une application complète pour gérer mes quelques contacts. J&amp;#039;ai listé les choses que devait faire cette liste de contact afin de recentrer mes efforts. Après réflexion, voici ce que j&amp;#039;attends de cette liste :
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Imprimable pour pouvoir la conserver dans mon portefeuille.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Modifiable facilement avec un éditeur de texte.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Consultable en ligne (pas besoin d&amp;#039;édition).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Accessible uniquement avec un mot de passe.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
De ce fait, je peux avoir une page statique sans avoir besoin ni de base de données ni de scripts.
&lt;/p&gt;

&lt;p&gt;
Je me suis tourné vers &lt;a href=&quot;https://www.tug.org/&quot; class=&quot;urlextern&quot; title=&quot;https://www.tug.org/&quot; rel=&quot;ugc nofollow&quot;&gt;TeX&lt;/a&gt; pour la génération d&amp;#039;un fichier &lt;a href=&quot;https://acrobat.adobe.com/us/en/why-adobe/about-adobe-pdf.html&quot; class=&quot;urlextern&quot; title=&quot;https://acrobat.adobe.com/us/en/why-adobe/about-adobe-pdf.html&quot; rel=&quot;ugc nofollow&quot;&gt;PDF&lt;/a&gt;. Mes besoins étant assez limités, le fichier est extrêmement simple :
&lt;/p&gt;
&lt;pre class=&quot;code latex&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cdocumentclass&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;documentclass&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;article&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cusepackage&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;a4paper, bottom=15mm, top=1mm, left=1mm, right=1mm&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;geometry&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cusepackage&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;multirow&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cusepackage&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;utf8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;inputenc&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cusepackage&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;{marvosym&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;% For phone, cell, and email icons&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cusepackage&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;longtable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;% For a table that spans on multiple pages&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cusepackage&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;hyperref&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cusepackage&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;fancyhdr&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cdef&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\mydate&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\leavevmode&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\hbox&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\twodigits&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\day&lt;/span&gt;-&lt;span class=&quot;re12&quot;&gt;\twodigits&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\month&lt;/span&gt;-&lt;span class=&quot;re12&quot;&gt;\the&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\year&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cdef&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\twodigits&lt;/span&gt;#1&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\ifnum&lt;/span&gt;#1&amp;lt;10 0&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cfi&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\the&lt;/span&gt;#1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cnewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;newcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\row&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
	&lt;span class=&quot;re12&quot;&gt;\rowcell&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;#1} &amp;amp; &lt;span class=&quot;re12&quot;&gt;\rowcell&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;#2&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;re12&quot;&gt;\rowcell&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;#3&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;re12&quot;&gt;\rowcell&lt;/span&gt;{#4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;re10&quot;&gt;\%&lt;/span&gt;
	&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Chline&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;hline&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cnewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;newcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\cell&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;&lt;span class=&quot;re12&quot;&gt;\Mobilefone&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt; &lt;span class=&quot;re12&quot;&gt;\href&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;tel:#1&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;#1&lt;span class=&quot;sy0&quot;&gt;}}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cnewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;newcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\phone&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\Telefon&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt; &lt;span class=&quot;re12&quot;&gt;\href&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;tel:#1&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;#1&lt;span class=&quot;sy0&quot;&gt;}}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cnewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;newcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cemail&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;email&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\Email&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt; &lt;span class=&quot;re12&quot;&gt;\href&lt;/span&gt;{mailto:#1}{#1}&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cnewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;newcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\rowcell&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
	&lt;span class=&quot;re8&quot;&gt;\begin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;&lt;span class=&quot;re7&quot;&gt;tabular&lt;/span&gt;}{l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
		#1&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
	&lt;span class=&quot;re8&quot;&gt;\end&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;&lt;span class=&quot;re7&quot;&gt;tabular&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cpagestyle&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;pagestyle&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;fancy&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;re12&quot;&gt;\fancyhf&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{}&lt;/span&gt;
&lt;span class=&quot;re12&quot;&gt;\cfoot&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\tiny&lt;/span&gt; Généré le &lt;span class=&quot;re12&quot;&gt;\mydate&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re8&quot;&gt;\begin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;document&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;re8&quot;&gt;\begin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;longtable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;llll&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Chline&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;hline&lt;/span&gt;&lt;/a&gt;
		&lt;span class=&quot;re12&quot;&gt;\row&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;Prénom Nom&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\cell&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;06.07.08.09.00&lt;span class=&quot;sy0&quot;&gt;}\\&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\phone&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;01.02.03.04.05&lt;span class=&quot;sy0&quot;&gt;}}{\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cemail&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;email&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;prenom.nom@example.org&lt;span class=&quot;sy0&quot;&gt;}\\\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cemail&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;email&lt;/span&gt;&lt;/a&gt;{nom.prenom@example.org}}{1 rue de l&#039;example \\ 77777 Example&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
…
		&lt;span class=&quot;re12&quot;&gt;\row&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;Prénom Nom}{&lt;span class=&quot;re12&quot;&gt;\cell&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;06.07.08.09.00&lt;span class=&quot;sy0&quot;&gt;}\\&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\phone&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;01.02.03.04.05&lt;span class=&quot;sy0&quot;&gt;}}{\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cemail&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;email&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;prenom.nom@example.org&lt;span class=&quot;sy0&quot;&gt;}\\\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cemail&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;email&lt;/span&gt;&lt;/a&gt;{nom.prenom@example.org}}{1 rue de l&#039;example \\ 77777 Example&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
	&lt;span class=&quot;re8&quot;&gt;\end&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;&lt;span class=&quot;re7&quot;&gt;longtable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;re8&quot;&gt;\end&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;document&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_important plugin_wrap&quot;&gt;
&lt;p&gt;
Il faut noter qu&amp;#039;on ne peut pas utiliser &lt;code&gt;_&lt;/code&gt; directement. Il faut l&amp;#039;échapper de la manière suivante &lt;code&gt;\_&lt;/code&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Ensuite pour rendre cette liste visible en ligne, je me suis mis en tête d&amp;#039;utiliser &lt;a href=&quot;http://pandoc.org/&quot; class=&quot;urlextern&quot; title=&quot;http://pandoc.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Pandoc&lt;/a&gt; comme pour mon projet de &lt;a href=&quot;https://www.ainw.org/wiki/doku.php?id=informatique:projets:sauvegarde_blog_pdf&quot; class=&quot;wikilink1&quot; title=&quot;informatique:projets:sauvegarde_blog_pdf&quot; data-wiki-id=&quot;informatique:projets:sauvegarde_blog_pdf&quot;&gt;sauvegarde d&amp;#039;un blog en PDF&lt;/a&gt;. Mais ça ne fonctionne pas vraiment comme espéré. Je n&amp;#039;ai plus de tableau, les caractères accentués sont mal interprétés. Mais en fait, je n&amp;#039;aurais pas du aller chercher aussi loin car l&amp;#039;installation de la bibliothèque TeXLive propose un outil de conversion de TeX vers &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;. Il suffit de le lancer de la manière suivante :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;htlatex &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;file.tex&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Ça génère une page &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; avec une mise en page très simple. Je trouve que ce n&amp;#039;est pas très utilisable tel quel, car les commandes &lt;code&gt;\Telefon&lt;/code&gt;, &lt;code&gt;\Mobilefone&lt;/code&gt; et &lt;code&gt;Email&lt;/code&gt; sont affichées respectivement en &lt;code&gt;T&lt;/code&gt;, &lt;code&gt;H&lt;/code&gt; et &lt;code&gt;k&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt;, le tableau n&amp;#039;utilise pas toute la place disponible et il est difficile de savoir quelles coordonnées correspondent à quel contact.
&lt;/p&gt;

&lt;p&gt;
Pour régler ces problèmes&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt;, on commence par redéfinir les commandes &lt;code&gt;\Telefon&lt;/code&gt;, &lt;code&gt;\Mobilefone&lt;/code&gt; et &lt;code&gt;Email&lt;/code&gt; mais uniquement dans le cas de la conversion en &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;. Pour cela, on va créer le fichier &lt;code&gt;marvosym.4ht&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;#fn__3&quot; id=&quot;fnt__3&quot; class=&quot;fn_top&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt; qui va remplacer la commande initiale par le contenu du paramètre de la commande :
&lt;/p&gt;
&lt;pre class=&quot;code latex&quot;&gt;&lt;span class=&quot;re12&quot;&gt;\NewConfigure&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;Telefon&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;1&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Crenewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;renewcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\Telefon&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\a&lt;/span&gt;:Telefon&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;re12&quot;&gt;\NewConfigure&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;Mobilefone&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;1&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Crenewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;renewcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\Mobilefone&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\a&lt;/span&gt;:Mobilefone&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;re12&quot;&gt;\NewConfigure&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;Email&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;1&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Crenewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;renewcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\Email&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\a&lt;/span&gt;:Email&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Ensuite, on cré un fichier &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; qui va contenir l&amp;#039;ensemble des règles à appliquer à notre page &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; &lt;sup&gt;&lt;a href=&quot;#fn__4&quot; id=&quot;fnt__4&quot; class=&quot;fn_top&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;table&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;100%&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.hline&lt;/span&gt; hr &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
tr&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;not&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.hline&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; td &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0.2rem&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
tr&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;not&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.hline&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;hover&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;lightgrey&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.landline&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;after&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;\1F3D8&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.cell&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;after&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;\1F4F1&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.email&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;after&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;\1F4E7&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Puis on cré le fichier de configuration qui va faire le lien entre tout ça :
&lt;/p&gt;
&lt;pre class=&quot;code latex&quot;&gt;&lt;span class=&quot;re12&quot;&gt;\Preamble&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;xhtml&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;re12&quot;&gt;\Configure&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;Telefon&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\HCode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&amp;lt;span class=&amp;quot;landline&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;span class=&quot;sy0&quot;&gt;}}&lt;/span&gt;
&lt;span class=&quot;re12&quot;&gt;\Configure&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;Mobilefone&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\HCode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&amp;lt;span class=&amp;quot;cell&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;span class=&quot;sy0&quot;&gt;}}&lt;/span&gt;
&lt;span class=&quot;re12&quot;&gt;\Configure&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;Email&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\HCode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&amp;lt;span class=&amp;quot;email&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;span class=&quot;sy0&quot;&gt;}}&lt;/span&gt;
&lt;span class=&quot;re8&quot;&gt;\begin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;document&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;re12&quot;&gt;\CssFile&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;&amp;lt;file.css&amp;gt;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;re12&quot;&gt;\EndCssFile&lt;/span&gt;
&lt;span class=&quot;re12&quot;&gt;\EndPreamble&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Pour utiliser les fichiers que l&amp;#039;on vient de créer, il faut lancer la commande suivante &lt;sup&gt;&lt;a href=&quot;#fn__5&quot; id=&quot;fnt__5&quot; class=&quot;fn_top&quot;&gt;5)&lt;/a&gt;&lt;/sup&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;htlatex &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;file.tex&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;file.cfg&amp;gt;,css-in&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_tip plugin_wrap&quot;&gt;
&lt;p&gt;
Pour ne pas avoir à me souvenir de cette commande, je l&amp;#039;ai incluse dans un fichier &lt;em&gt;MAKE&lt;/em&gt;.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Maintenant, il ne reste plus qu&amp;#039;à mettre le fichier en ligne et à la sécuriser. Pour cela, on va utiliser le système de sécurité de Apache. Les besoins étant limités, ça suffira largement &lt;sup&gt;&lt;a href=&quot;#fn__6&quot; id=&quot;fnt__6&quot; class=&quot;fn_top&quot;&gt;6)&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;

&lt;p&gt;
On commence par créer un fichier &lt;code&gt;.htaccess&lt;/code&gt; dans le répertoire contenant la liste des contacts. On lui ajoute le contenu suivant :
&lt;/p&gt;
&lt;pre class=&quot;code apache&quot;&gt;&amp;lt;&lt;span class=&quot;kw3&quot;&gt;Files&lt;/span&gt; &amp;lt;file&amp;gt;&amp;gt;
    &lt;span class=&quot;kw1&quot;&gt;AuthType&lt;/span&gt; Basic
    &lt;span class=&quot;kw1&quot;&gt;AuthUserFile&lt;/span&gt; /home/&amp;lt;username&amp;gt;/pass
    &lt;span class=&quot;kw1&quot;&gt;AuthName&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Restricted&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;require&lt;/span&gt; valid-&lt;span class=&quot;kw1&quot;&gt;user&lt;/span&gt; &amp;lt;user&amp;gt;
&amp;lt;/&lt;span class=&quot;kw3&quot;&gt;Files&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;file&lt;/code&gt; correspond au nom du fichier dont on veut restreindre l&amp;#039;accès.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;username&lt;/code&gt; correspond au nom de l&amp;#039;utilisateur utilisé par Apache.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;user&lt;/code&gt; correspond au nom de l&amp;#039;utilisateur auquel on veut donner l&amp;#039;accès.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Ensuite, on va configurer le mot de passe de l&amp;#039;utilisateur avec la commande suivante :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;htpasswd &lt;span class=&quot;re5&quot;&gt;-c&lt;/span&gt; ~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;pass &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;user&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Et voila !
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;C&amp;#039;est le &lt;a href=&quot;https://www.ctan.org/pkg/marvosym&quot; class=&quot;urlextern&quot; title=&quot;https://www.ctan.org/pkg/marvosym&quot; rel=&quot;ugc nofollow&quot;&gt;package marvosym&lt;/a&gt; qui utilise une police différente pour afficher des symboles à la place des lettres.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Il y a beaucoup d&amp;#039;informations utiles sur les deux pages suivantes : &lt;a href=&quot;https://github.com/michal-h21/helpers4ht/wiki/tex4ht-tutorial&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/michal-h21/helpers4ht/wiki/tex4ht-tutorial&quot; rel=&quot;ugc nofollow&quot;&gt;tex4ht tutorial&lt;/a&gt; et 
&lt;a href=&quot;http://cvr.cc/?p=504&quot; class=&quot;urlextern&quot; title=&quot;http://cvr.cc/?p=504&quot; rel=&quot;ugc nofollow&quot;&gt;TeX4ht: Options&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__3&quot; id=&quot;fn__3&quot; class=&quot;fn_bot&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Le nom est important car il doit correspondre au fichier &lt;code&gt;sty&lt;/code&gt; correspondant, ici &lt;code&gt;marvosym.sty&lt;/code&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__4&quot; id=&quot;fn__4&quot; class=&quot;fn_bot&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Le nom est important, il ne doit pas correspondre au nom du fichier &lt;code&gt;tex&lt;/code&gt; sinon il sera écrasé à chaque compilation.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__5&quot; id=&quot;fn__5&quot; class=&quot;fn_bot&quot;&gt;5)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Il faut lancer 2 fois la commande pour inclure le fichier &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; dans le fichier &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__6&quot; id=&quot;fn__6&quot; class=&quot;fn_bot&quot;&gt;6)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;En tout cas, je l&amp;#039;espère&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 31 Dec 2024 12:09:09 +0000</pubDate>
        </item>
        <item>
            <title>conservation_informations</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:projets:conservation_informations&amp;rev=1732470120&amp;do=diff</link>
            <description>&lt;div class=&quot;tagstop&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?id=tag:todo&amp;amp;do=showtag&amp;amp;tag=todo&quot; class=&quot;wikilink1&quot; title=&quot;tag:todo&quot; rel=&quot;tag&quot;&gt;todo&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;conservation_d_informations_importantes&quot;&gt;Conservation d&amp;#039;informations importantes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Il y a des informations importantes qu&amp;#039;il faut impérativement conserver en lieu sur comme c&amp;#039;est le cas avec les numéros de série de mon appareil photo. Ça fait un petit moment que je réfléchi à une manière efficace de le faire. Il faut que cette conservation soit faite à la fois sur un support informatique et à la fois sur un support papier.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;qrencode -o toto.png -l H -s 10 &amp;quot;lorem ipsum&amp;quot;
convert -pointsize 70 -background white -gravity center toto.png \( label:&amp;quot;lorem ipsum&amp;quot; -trim \) -append -bordercolor white -border 30x30 -bordercolor black -border 1x1 toto2.png&lt;/pre&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.ainw.org/wiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Conservation d&amp;#039;informations importantes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;conservation_d_informations_importantes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;14-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 24 Nov 2024 17:42:00 +0000</pubDate>
        </item>
        <item>
            <title>generation_calendrier_perpetuel</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:projets:generation_calendrier_perpetuel&amp;rev=1732470401&amp;do=diff</link>
            <description>&lt;div class=&quot;tagstop&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?id=tag:todo&amp;amp;do=showtag&amp;amp;tag=todo&quot; class=&quot;wikilink1&quot; title=&quot;tag:todo&quot; rel=&quot;tag&quot;&gt;todo&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_todo plugin_wrap&quot;&gt;&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dickimaw-books.com/latex/admin/html/pgfcalendar.shtml&quot; class=&quot;urlextern&quot; title=&quot;https://www.dickimaw-books.com/latex/admin/html/pgfcalendar.shtml&quot; rel=&quot;ugc nofollow&quot;&gt;7.2 ⁂The pgfcalendar Package Utility Commands&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://texample.net/tikz/examples/birthday-calendar/&quot; class=&quot;urlextern&quot; title=&quot;https://texample.net/tikz/examples/birthday-calendar/&quot; rel=&quot;ugc nofollow&quot;&gt;Birthday calendar | TikZ example&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tikz.dev/library-calender&quot; class=&quot;urlextern&quot; title=&quot;https://tikz.dev/library-calender&quot; rel=&quot;ugc nofollow&quot;&gt;Calendar Library - PGF/TikZ Manual&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/56209/how-can-i-store-variables-and-iterate-over-them/56214#56214&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/56209/how-can-i-store-variables-and-iterate-over-them/56214#56214&quot; rel=&quot;ugc nofollow&quot;&gt;programming - How can I store variables and iterate over them? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/346023/calendar-which-displays-all-events&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/346023/calendar-which-displays-all-events&quot; rel=&quot;ugc nofollow&quot;&gt;tikz pgf - Calendar which displays all events - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/10186/weekday-captions-with-the-tikz-library-calendar/10199#10199&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/10186/weekday-captions-with-the-tikz-library-calendar/10199#10199&quot; rel=&quot;ugc nofollow&quot;&gt;Weekday captions with the TikZ library &amp;quot;calendar&amp;quot; - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://texample.net/tikz/examples/birthday-calendar/&quot; class=&quot;urlextern&quot; title=&quot;https://texample.net/tikz/examples/birthday-calendar/&quot; rel=&quot;ugc nofollow&quot;&gt;Birthday calendar | TikZ example&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/696199/calculations-from-fixed-dates-how-to-add-days&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/696199/calculations-from-fixed-dates-how-to-add-days&quot; rel=&quot;ugc nofollow&quot;&gt;calendar - Calculations from fixed dates, how to add days - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tikz.dev/library-calender&quot; class=&quot;urlextern&quot; title=&quot;https://tikz.dev/library-calender&quot; rel=&quot;ugc nofollow&quot;&gt;Calendar Library - PGF/TikZ Manual&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/39940/customising-a-tikz-calendar&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/39940/customising-a-tikz-calendar&quot; rel=&quot;ugc nofollow&quot;&gt;Customising a tikz calendar - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tikz.dev/pgfcalendar&quot; class=&quot;urlextern&quot; title=&quot;https://tikz.dev/pgfcalendar&quot; rel=&quot;ugc nofollow&quot;&gt;Date and Calendar Utility Macros - PGF/TikZ Manual&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/543825/displaying-tikz-calendar-on-several-pages-to-realize-a-weekly-schedule-logbook-f&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/543825/displaying-tikz-calendar-on-several-pages-to-realize-a-weekly-schedule-logbook-f&quot; rel=&quot;ugc nofollow&quot;&gt;Displaying tikz calendar on several pages to realize a weekly schedule logbook for each year - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/540949/filter-dates-in-a-tikz-calendar&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/540949/filter-dates-in-a-tikz-calendar&quot; rel=&quot;ugc nofollow&quot;&gt;Filter dates in a Tikz calendar - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/616708/how-to-access-an-array-of-dates-tikz-calendar&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/616708/how-to-access-an-array-of-dates-tikz-calendar&quot; rel=&quot;ugc nofollow&quot;&gt;How to access an array of dates (tikz calendar) - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.reddit.com/r/LaTeX/comments/7yr9lp/is_there_any_way_to_evaluate_expressions_inline/&quot; class=&quot;urlextern&quot; title=&quot;https://www.reddit.com/r/LaTeX/comments/7yr9lp/is_there_any_way_to_evaluate_expressions_inline/&quot; rel=&quot;ugc nofollow&quot;&gt;Is there any way to evaluate expressions inline with Latex? : r/LaTeX&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tikz.dev/pgfkeys#sec-87.4.8&quot; class=&quot;urlextern&quot; title=&quot;https://tikz.dev/pgfkeys#sec-87.4.8&quot; rel=&quot;ugc nofollow&quot;&gt;Key Management - PGF/TikZ Manual&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/50856/pgf-keys-differences-between-initial-and-default&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/50856/pgf-keys-differences-between-initial-and-default&quot; rel=&quot;ugc nofollow&quot;&gt;key value - PGF Keys differences between .initial and .default - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/483374/get-value-of-a-counter&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/483374/get-value-of-a-counter&quot; rel=&quot;ugc nofollow&quot;&gt;macros - Get value of a counter - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/34312/how-to-create-a-command-with-key-values&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/34312/how-to-create-a-command-with-key-values&quot; rel=&quot;ugc nofollow&quot;&gt;macros - How to create a command with key values? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/38674/the-the-command&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/38674/the-the-command&quot; rel=&quot;ugc nofollow&quot;&gt;macros - The \the command - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/576673/full-weeks-in-tikz-calendar&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/576673/full-weeks-in-tikz-calendar&quot; rel=&quot;ugc nofollow&quot;&gt;pdf - Full weeks in Tikz Calendar - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://stackoverflow.com/questions/75178183/subtract-integer-from-floats-and-integers-in-foreach-loop-pdflatex-overlea&quot; class=&quot;urlextern&quot; title=&quot;https://stackoverflow.com/questions/75178183/subtract-integer-from-floats-and-integers-in-foreach-loop-pdflatex-overlea&quot; rel=&quot;ugc nofollow&quot;&gt;pdflatex - Subtract integer from floats and integers in \foreach loop - (pdf)Latex [Overleaf] - Stack Overflow&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://pgf-tikz.github.io/pgf/pgfmanual.pdf&quot; class=&quot;urlextern&quot; title=&quot;https://pgf-tikz.github.io/pgf/pgfmanual.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;pgfmanual.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/56209/how-can-i-store-variables-and-iterate-over-them/56214#56214&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/56209/how-can-i-store-variables-and-iterate-over-them/56214#56214&quot; rel=&quot;ugc nofollow&quot;&gt;programming - How can I store variables and iterate over them? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/654582/undefined-control-sequence-when-macro-defined-using-pgfkeys-contains-an-ampersan&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/654582/undefined-control-sequence-when-macro-defined-using-pgfkeys-contains-an-ampersan&quot; rel=&quot;ugc nofollow&quot;&gt;tables - Undefined control sequence when macro defined using pgfkeys contains an ampersand - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/245635/formal-syntax-rules-of-dimexpr-numexpr-glueexpr&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/245635/formal-syntax-rules-of-dimexpr-numexpr-glueexpr&quot; rel=&quot;ugc nofollow&quot;&gt;tex core - formal syntax rules of \dimexpr \numexpr \glueexpr - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/616624/how-to-define-a-list-of-dates-for-tikz-calendars&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/616624/how-to-define-a-list-of-dates-for-tikz-calendars&quot; rel=&quot;ugc nofollow&quot;&gt;tex core - How to define a list of dates for tikz calendars - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/45533/how-to-determine-which-register-a-count-uses&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/45533/how-to-determine-which-register-a-count-uses&quot; rel=&quot;ugc nofollow&quot;&gt;tex core - How to determine which register a count uses - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://en.wikibooks.org/wiki/TeX/advance&quot; class=&quot;urlextern&quot; title=&quot;https://en.wikibooks.org/wiki/TeX/advance&quot; rel=&quot;ugc nofollow&quot;&gt;TeX/advance - Wikibooks, open books for an open world&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/464589/tikz-calendar-set-the-height-of-a-monthly-calendar&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/464589/tikz-calendar-set-the-height-of-a-monthly-calendar&quot; rel=&quot;ugc nofollow&quot;&gt;TikZ / calendar: Set the height of a monthly calendar - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/231701/tikzset-key-with-multiple-arguments/231705&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/231701/tikzset-key-with-multiple-arguments/231705&quot; rel=&quot;ugc nofollow&quot;&gt;tikz pgf - \tikzset key with multiple arguments - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/691473/how-to-format-date-inputed-from-file-in-date-format-and-percentage&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/691473/how-to-format-date-inputed-from-file-in-date-format-and-percentage&quot; rel=&quot;ugc nofollow&quot;&gt;tikz pgf - How to format date inputed from file in date format and percentage? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/278170/how-to-make-a-cleaning-calendar&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/278170/how-to-make-a-cleaning-calendar&quot; rel=&quot;ugc nofollow&quot;&gt;tikz pgf - How to make a cleaning calendar? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/697889/matching-recurring-date-in-pgfcalendar/698186&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/697889/matching-recurring-date-in-pgfcalendar/698186&quot; rel=&quot;ugc nofollow&quot;&gt;tikz pgf - Matching recurring date in pgfcalendar - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/697889/matching-recurring-date-in-pgfcalendar?noredirect=1#comment1733911_697889&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/697889/matching-recurring-date-in-pgfcalendar?noredirect=1#comment1733911_697889&quot; rel=&quot;ugc nofollow&quot;&gt;tikz pgf - Matching recurring date in pgfcalendar - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/228005/use-pgfkeys-to-set-a-style-variable&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/228005/use-pgfkeys-to-set-a-style-variable&quot; rel=&quot;ugc nofollow&quot;&gt;tikz pgf - Use pgfkeys to set a style variable - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/161948/what-is-the-correct-way-to-get-a-pgfkey-value&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/161948/what-is-the-correct-way-to-get-a-pgfkey-value&quot; rel=&quot;ugc nofollow&quot;&gt;tikz pgf - What is the correct way to get a pgfkey value? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 24 Nov 2024 17:46:41 +0000</pubDate>
        </item>
        <item>
            <title>ice</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:projets:ice&amp;rev=1732469156&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;mise_a_disposition_d_informations_utiles_en_cas_d_urgence&quot;&gt;Mise à disposition d&amp;#039;informations utiles en cas d&amp;#039;urgence&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
On ne peut pas prévoir quand une situation d&amp;#039;urgence se présentera ni sous quelle forme elle se manifestera. Sans entrer dans la paranoïa de certains groupes de survivalistes, je pense qu&amp;#039;il est utile de pouvoir fournir un certain nombre d&amp;#039;informations utiles même si je suis dans l&amp;#039;incapacité de le faire moi-même. Voici ce que j&amp;#039;ai fait pour répondre à cette problématique.
&lt;/p&gt;

&lt;p&gt;
Il y a environ un an, j&amp;#039;ai ajouté une page sur mon blog contenant certaines informations importantes pour faire face à ce genre de situation, à savoir les personnes de confiance à contacter, mes allergies et mon groupe sanguin.
J&amp;#039;avais généré un QR code redirigeant directement sur cette page. Il ne me restait plus qu&amp;#039;à l&amp;#039;imprimer pour que ce soit fonctionnel. Mais je ne l&amp;#039;ai jamais fait, ce qui fait que ces informations n&amp;#039;ont jamais été diffusées ni utilisables.
&lt;/p&gt;

&lt;p&gt;
La solution envisagée intialement avait quelques problèmes :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Impossibilité d&amp;#039;imprimer les informations proprement.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Impossibilité d&amp;#039;accèder aux informations si on ne possède pas un outil pour décoder les QR codes.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Présentation approximative.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
En travaillant sur la &lt;a href=&quot;https://www.ainw.org/wiki/doku.php?id=informatique:projets:carnet_adresses&quot; class=&quot;wikilink1&quot; title=&quot;informatique:projets:carnet_adresses&quot; data-wiki-id=&quot;informatique:projets:carnet_adresses&quot;&gt;mise en place d&amp;#039;un carnet d&amp;#039;adresse&lt;/a&gt;, je me suis dit que j&amp;#039;allais changer ma méthode pour pallier aux problèmes initiaux.
Du coup, j&amp;#039;ai ressorti &lt;a href=&quot;https://www.tug.org/&quot; class=&quot;urlextern&quot; title=&quot;https://www.tug.org/&quot; rel=&quot;ugc nofollow&quot;&gt;TeX&lt;/a&gt; pour générer un fichier &lt;a href=&quot;https://acrobat.adobe.com/us/en/why-adobe/about-adobe-pdf.html&quot; class=&quot;urlextern&quot; title=&quot;https://acrobat.adobe.com/us/en/why-adobe/about-adobe-pdf.html&quot; rel=&quot;ugc nofollow&quot;&gt;PDF&lt;/a&gt;.
Avec le modèle suivant, je suis capable d&amp;#039;imprimer un fichier lisible et qui peut se loger facilement dans mon porte-feuille. Ça génère une impression au &lt;a href=&quot;https://fr.wikipedia.org/wiki/Format_de_papier#Norme_internationale_:_Formats_A,_B_et_C&quot; class=&quot;urlextern&quot; title=&quot;https://fr.wikipedia.org/wiki/Format_de_papier#Norme_internationale_:_Formats_A,_B_et_C&quot; rel=&quot;ugc nofollow&quot;&gt;format A7&lt;/a&gt; doublé dans la longueur soit 210x74mm. Une fois plié en 2, j&amp;#039;obtiens un format A7. Cerise sur le gâteau, les numéros de téléphone et les adresses de messagerie sont des liens qui permettent d&amp;#039;activer les logiciels appropriés s&amp;#039;ils existent.
&lt;/p&gt;
&lt;pre class=&quot;code latex&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cdocumentclass&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;documentclass&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;article&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cusepackage&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;paperwidth=210mm, paperheight=74mm, top=5mm, left=0mm&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;geometry&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cusepackage&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;utf8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;inputenc&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cusepackage&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;marvosym&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cusepackage&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;hyperref&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cusepackage&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;{xstring&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cnewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;newcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\phoneNumber&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%	&lt;/span&gt;
	&lt;span class=&quot;re12&quot;&gt;\StrSubstitute&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;#1}{(0)}{&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;&lt;span class=&quot;re12&quot;&gt;\number&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
	&lt;span class=&quot;re12&quot;&gt;\href&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;tel:&lt;span class=&quot;re12&quot;&gt;\number&lt;/span&gt;}{#1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cnewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;newcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\cell&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;&lt;span class=&quot;re12&quot;&gt;\Mobilefone&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt; &lt;span class=&quot;re12&quot;&gt;\phoneNumber&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;#1&lt;span class=&quot;sy0&quot;&gt;}}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cnewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;newcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\phone&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\Telefon&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt; &lt;span class=&quot;re12&quot;&gt;\phoneNumber&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;#1&lt;span class=&quot;sy0&quot;&gt;}}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cnewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;newcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cemail&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;email&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\Email&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt; &lt;span class=&quot;re12&quot;&gt;\href&lt;/span&gt;{mailto:#1}{#1}&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cnewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;newcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\contact&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;]{&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
	&lt;span class=&quot;re8&quot;&gt;\begin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;&lt;span class=&quot;re7&quot;&gt;tabular&lt;/span&gt;}{l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
		&lt;span class=&quot;re8&quot;&gt;\begin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;&lt;span class=&quot;re7&quot;&gt;large&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;#1&lt;span class=&quot;re8&quot;&gt;\end&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;large&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;re10&quot;&gt;\%&lt;/span&gt;
		&lt;span class=&quot;re12&quot;&gt;\cell&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;#2&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;re10&quot;&gt;\%&lt;/span&gt;
		&lt;span class=&quot;re12&quot;&gt;\phone&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;#3&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;re10&quot;&gt;\%&lt;/span&gt;
		&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cemail&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;email&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;#4&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;re10&quot;&gt;\%&lt;/span&gt;
	&lt;span class=&quot;re8&quot;&gt;\end&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;tabular&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cvspace&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;vspace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;0.1cm&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cnewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;newcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\primaryContact&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;re12&quot;&gt;\contact&lt;/span&gt;{John Doe}{+33 (0)1.01.01.01.01}{+33 (0)2.02.02.02.02}{john.doe@example.org&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cnewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;newcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;re12&quot;&gt;\secondaryContact&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;
	&lt;span class=&quot;re12&quot;&gt;\contact&lt;/span&gt;{Jane Doe}{+33 (0)3.03.03.03.03}{+33 (0)4.04.04.04.04}{jane.doe@example.org&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re8&quot;&gt;\begin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;&lt;span class=&quot;re7&quot;&gt;document&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;re12&quot;&gt;\pagenumbering&lt;/span&gt;{gobble&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;% English section	&lt;/span&gt;
	&lt;span class=&quot;re8&quot;&gt;\begin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;&lt;span class=&quot;re7&quot;&gt;minipage&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;105mm&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;re8&quot;&gt;\begin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;Large&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;In Case of Emergency&lt;span class=&quot;re8&quot;&gt;\end&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;Large&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cvspace&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;vspace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;0.3cm&lt;span class=&quot;sy0&quot;&gt;}\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Crenewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;renewcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\arraystretch&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;1.2&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;re8&quot;&gt;\begin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;tabular&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;r|l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
			Primary contact &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;re12&quot;&gt;\primaryContact&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;re10&quot;&gt;\%&lt;/span&gt;
			Secondary contact &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;re12&quot;&gt;\secondaryContact&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;re10&quot;&gt;\%&lt;/span&gt;
			Known allergies &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;re10&quot;&gt;\%&lt;/span&gt;
			Blood type &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;re10&quot;&gt;\%&lt;/span&gt;
		&lt;span class=&quot;re8&quot;&gt;\end&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;&lt;span class=&quot;re7&quot;&gt;tabular&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;re8&quot;&gt;\end&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;minipage&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
	&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Chfill&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;hfill&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;%	&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;% French section&lt;/span&gt;
	&lt;span class=&quot;re8&quot;&gt;\begin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;&lt;span class=&quot;re7&quot;&gt;minipage&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;105mm&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;re8&quot;&gt;\begin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;Large&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;En Cas d&#039;Urgence&lt;span class=&quot;re8&quot;&gt;\end&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;Large&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Cvspace&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;vspace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;0.3cm&lt;span class=&quot;sy0&quot;&gt;}\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/%5Crenewcommand&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;renewcommand&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re12&quot;&gt;\arraystretch&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;1.2&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&amp;nbsp;
		&lt;span class=&quot;re8&quot;&gt;\begin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;tabular&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}{&lt;/span&gt;r|l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;%&lt;/span&gt;
			Contact principal &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;re12&quot;&gt;\primaryContact&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;re10&quot;&gt;\%&lt;/span&gt;
			Contact secondaire &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;re12&quot;&gt;\secondaryContact&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;re10&quot;&gt;\%&lt;/span&gt;
			Allergies connues &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;re10&quot;&gt;\%&lt;/span&gt;
			Groupe sanguin &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;re10&quot;&gt;\%&lt;/span&gt;
		&lt;span class=&quot;re8&quot;&gt;\end&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re9&quot;&gt;&lt;span class=&quot;re7&quot;&gt;tabular&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;re8&quot;&gt;\end&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;minipage&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;re8&quot;&gt;\end&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;re7&quot;&gt;document&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
J&amp;#039;ai ensuite mis à disposition ce fichier sur mon serveur ainsi qu&amp;#039;une copie papier dans mon porte-feuille.
&lt;/p&gt;

&lt;p&gt;
Pour accéder au fichier, je me suis facilité la vie en encodant l&amp;#039;&lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; dans un QR code. Pour cela, rien de plus facile en utilisant &lt;em&gt;qrencode&lt;/em&gt; de la manière suivante :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;group plugin_wrap&quot;&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_column plugin_wrap&quot; style=&quot;width: 85%;&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;# Version courte&lt;/span&gt;
qrencode &lt;span class=&quot;re5&quot;&gt;-o&lt;/span&gt; ice.1.png &lt;span class=&quot;re5&quot;&gt;-l&lt;/span&gt; H &lt;span class=&quot;re5&quot;&gt;-s&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;https://www.ainw.org/wiki/doku.php?id=projets:informatique:ice&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Version longue&lt;/span&gt;
qrencode &lt;span class=&quot;re5&quot;&gt;--output&lt;/span&gt; ice.1.png &lt;span class=&quot;re5&quot;&gt;--level&lt;/span&gt; H &lt;span class=&quot;re5&quot;&gt;--size&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;https://www.ainw.org/wiki/doku.php?id=projets:informatique:ice&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;-o&lt;/code&gt; ou &lt;code&gt;--output&lt;/code&gt; indique le nom du fichier de sortie.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;-l&lt;/code&gt; ou &lt;code&gt;--level&lt;/code&gt; indique le niveau de correction d&amp;#039;erreur.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;-s&lt;/code&gt; ou &lt;code&gt;--size&lt;/code&gt; indique la taille des points en pixels.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_column plugin_wrap&quot; style=&quot;width: 10%;&quot;&gt;
&lt;p&gt;
&lt;img src=&quot;https://www.ainw.org/wiki/lib/exe/fetch.php?w=100&amp;amp;tok=d2d1ca&amp;amp;media=projets:informatique:ice.1.png&quot; class=&quot;mediaright&quot; align=&quot;right&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;100&quot; /&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Cependant, je trouve que ce n&amp;#039;est pas assez. En effet, un QR code seul ne sert pas à grand chose s&amp;#039;il n&amp;#039;est pas possible de l&amp;#039;identifier facilement et surtout rapidement.
Je me suis amusé à ajouter les informations nécessaires à l&amp;#039;aide d&amp;#039;imagemagick. La syntaxe est loin d&amp;#039;être évidente et j&amp;#039;ai du procéder à de nombreux tests avant de trouver quelque chose qui me convienne. Je voulais afficher &lt;code&gt;I.C.E.&lt;/code&gt; au dessus et à gauche et &lt;code&gt;E.C.U.&lt;/code&gt; en dessous et à droite du code. Je voulais aussi afficher une bordure pour faciliter la découpe de l&amp;#039;impression, ainsi qu&amp;#039;un repère pour percer un trou &lt;sup&gt;&lt;a href=&quot;#fn__7&quot; id=&quot;fnt__7&quot; class=&quot;fn_top&quot;&gt;7)&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;group plugin_wrap&quot;&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_column plugin_wrap&quot; style=&quot;width: 85%;&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;# +append colle les images de gauche à droite.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# -append colle les images de bas en haut.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# \(\) regroupe des actions entre elles.&lt;/span&gt;
convert &lt;span class=&quot;re5&quot;&gt;-pointsize&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;70&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-background&lt;/span&gt; white &lt;span class=&quot;re5&quot;&gt;-gravity&lt;/span&gt; center \&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; label:&lt;span class=&quot;st0&quot;&gt;&amp;quot;I.C.E.&amp;quot;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-trim&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-rotate&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-90&lt;/span&gt; label:&lt;span class=&quot;st0&quot;&gt;&amp;quot;I.C.E.&amp;quot;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-trim&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ice.1.png \&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-rotate&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-90&lt;/span&gt; label:&lt;span class=&quot;st0&quot;&gt;&amp;quot;E.C.U.&amp;quot;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-trim&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; +append \&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; label:&lt;span class=&quot;st0&quot;&gt;&amp;quot;E.C.U.&amp;quot;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-trim&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-append&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-bordercolor&lt;/span&gt; white &lt;span class=&quot;re5&quot;&gt;-border&lt;/span&gt; 30x30 &lt;span class=&quot;re5&quot;&gt;-bordercolor&lt;/span&gt; black &lt;span class=&quot;re5&quot;&gt;-border&lt;/span&gt; 1x1 &lt;span class=&quot;re5&quot;&gt;-stroke&lt;/span&gt; black &lt;span class=&quot;re5&quot;&gt;-draw&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;circle 75,75 90,90&amp;quot;&lt;/span&gt; ice.2.png&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_column plugin_wrap&quot; style=&quot;width: 10%;&quot;&gt;
&lt;p&gt;
&lt;img src=&quot;https://www.ainw.org/wiki/lib/exe/fetch.php?w=100&amp;amp;tok=66d652&amp;amp;media=projets:informatique:ice.2.png&quot; class=&quot;mediaright&quot; align=&quot;right&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;100&quot; /&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Ce résultat est beaucoup mieux. Il ne reste plus qu&amp;#039;à l&amp;#039;imprimer &lt;sup&gt;&lt;a href=&quot;#fn__8&quot; id=&quot;fnt__8&quot; class=&quot;fn_top&quot;&gt;8)&lt;/a&gt;&lt;/sup&gt; et à le conserver à un endroit approprié.
&lt;/p&gt;

&lt;p&gt;
Pour ne pas chercher la commande à chaque fois que je veux générer l&amp;#039;image, je me suis fait une fonction dans bash qui me le fait directement à partir d&amp;#039;une entrée :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt; ice &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;co0&quot;&gt;# Generate I.C.E. QR code&lt;/span&gt;
  qrencode &lt;span class=&quot;re5&quot;&gt;--output&lt;/span&gt; - &lt;span class=&quot;re5&quot;&gt;--level&lt;/span&gt; H &lt;span class=&quot;re5&quot;&gt;--size&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;$1&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; convert &lt;span class=&quot;re5&quot;&gt;-pointsize&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;70&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-background&lt;/span&gt; white &lt;span class=&quot;re5&quot;&gt;-gravity&lt;/span&gt; center \&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; label:&lt;span class=&quot;st0&quot;&gt;&amp;quot;I.C.E.&amp;quot;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-trim&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-rotate&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-90&lt;/span&gt; label:&lt;span class=&quot;st0&quot;&gt;&amp;quot;I.C.E.&amp;quot;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-trim&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - \&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-rotate&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-90&lt;/span&gt; label:&lt;span class=&quot;st0&quot;&gt;&amp;quot;E.C.U.&amp;quot;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-trim&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; +append \&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; label:&lt;span class=&quot;st0&quot;&gt;&amp;quot;E.C.U.&amp;quot;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-trim&lt;/span&gt; \&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-append&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-bordercolor&lt;/span&gt; white &lt;span class=&quot;re5&quot;&gt;-border&lt;/span&gt; 30x30 &lt;span class=&quot;re5&quot;&gt;-bordercolor&lt;/span&gt; black &lt;span class=&quot;re5&quot;&gt;-border&lt;/span&gt; 1x1 &lt;span class=&quot;re5&quot;&gt;-stroke&lt;/span&gt; black &lt;span class=&quot;re5&quot;&gt;-draw&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;circle 75,75 90,90&amp;quot;&lt;/span&gt; ice.png
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Puis je me suis dit que je pouvais peut-être inclure directement le fichier PDF dans le code. Mais pour cela, il faudrait réduire drastiquement la taille de celui-ci.
J&amp;#039;ai optimisé le fichier en lançant la commande suivante &lt;sup&gt;&lt;a href=&quot;#fn__9&quot; id=&quot;fnt__9&quot; class=&quot;fn_top&quot;&gt;9)&lt;/a&gt;&lt;/sup&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;gs&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-sDEVICE&lt;/span&gt;=pdfwrite &lt;span class=&quot;re5&quot;&gt;-dCompatibilityLevel&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1.4&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-dNOPAUSE&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-dQUIET&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-dBATCH&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-sOutputFile&lt;/span&gt;=ice.compressed.pdf ice.pdf &lt;/pre&gt;

&lt;p&gt;
Mais ça ne donne rien. Le fichier dépasse encore la limite imposée par la norme du QR code et en plus de ça, les liens sont perdus.
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__7&quot; id=&quot;fn__7&quot; class=&quot;fn_bot&quot;&gt;7)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Cela permettra de l&amp;#039;attacher facilement&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__8&quot; id=&quot;fn__8&quot; class=&quot;fn_bot&quot;&gt;8)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Je l&amp;#039;imprime avec un redimensionnement à 25% de la taille initiale&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__9&quot; id=&quot;fn__9&quot; class=&quot;fn_bot&quot;&gt;9)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;commande trouvée sur &lt;a href=&quot;https://tex.stackexchange.com/a/19047/70112&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/a/19047/70112&quot; rel=&quot;ugc nofollow&quot;&gt;tex.stackexchange&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 24 Nov 2024 17:25:56 +0000</pubDate>
        </item>
        <item>
            <title>livre</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:projets:livre&amp;rev=1732469168&amp;do=diff</link>
            <description>&lt;div class=&quot;tagstop&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?id=tag:todo&amp;amp;do=showtag&amp;amp;tag=todo&quot; class=&quot;wikilink1&quot; title=&quot;tag:todo&quot; rel=&quot;tag&quot;&gt;todo&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ecriture_d_un_livre&quot;&gt;Écriture d&amp;#039;un livre&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Depuis de nombreuses années, je pense à écrire un livre. J&amp;#039;ai déjà choisi le thème mais je n&amp;#039;ai pas encore commencé sa réalisation. Je veux écrire un recueil de mes recettes préférées pour remplacer mon cahier de notes et aussi pour laisser quelque chose de personnel à ma fille. J&amp;#039;espère que de décrire mes idées ici déclenchera le processus de réalisation.
&lt;/p&gt;

&lt;p&gt;
Pour me faciliter la vie, je veux avoir un fichier par recette, un répertoire par section. Je veux pouvoir faire une recherche par recette et par ingrédient. Je veux pouvoir générer le fichier final facilement et surtout sans me poser de question. J&amp;#039;aimerai aussi être capable d&amp;#039;intégrer des photos afin d&amp;#039;agrémenter le document.
&lt;/p&gt;

&lt;p&gt;
Donc avant de me lancer dans l&amp;#039;écriture, il faut que je résolve les problèmes suivants :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Trouver comment intégrer des fichiers externes avec LaTeX.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Trouver comment générer un index de recette avec LaTeX.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Trouver comment générer un index d&amp;#039;ingrédient avec LaTeX.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Écrire un modèle en LaTeX pour mettre en forme les recettes si je n&amp;#039;en trouve pas un à mon goût.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Écrire un script de génération automatique à partir des sources (intégration des fichiers externes, génération des indexes, génération du fichier final).&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;

&lt;p&gt;
Après plusieurs années à y penser sans vraiment me lancer, j&amp;#039;ai eu l&amp;#039;opportunité d&amp;#039;avancer fortement ce projet grace à une échéance imposée.
Mon beau-frère, qui aime beaucoup la cuisine, va fêter son 50&lt;sup&gt;ème&lt;/sup&gt; anniversaire cette année &lt;sup&gt;&lt;a href=&quot;#fn__10&quot; id=&quot;fnt__10&quot; class=&quot;fn_top&quot;&gt;10)&lt;/a&gt;&lt;/sup&gt;.
Je me suis dit que c&amp;#039;était le déclencheur nécessaire pour commencer sérieusement à travailler dessus.
Pour l&amp;#039;occasion, j&amp;#039;ai embarqué ma mère, ma fille et mon épouse pour enrichir le contenu tandis que je travaillais fort à la partie technique.
&lt;/p&gt;

&lt;p&gt;
J&amp;#039;ai travaillé de manière à mettre en place de bonnes bases pour pouvoir réaliser mon propre recueil en me basant sur le travail réalisé pour cette occasion.
Et je pense que l&amp;#039;objectif est atteint car j&amp;#039;ai mis en place un modèle qui me permet de générer un recueil très facilement en incluant les recettes depuis des fichiers individuels, ce qui me permet d&amp;#039;avoir une recette par fichier &lt;sup&gt;&lt;a href=&quot;#fn__11&quot; id=&quot;fnt__11&quot; class=&quot;fn_top&quot;&gt;11)&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;

&lt;p&gt;
Le modèle mis en place me permet de :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Générer un recueil depuis une liste de répertoire contenant des fichiers de recette.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Générer un recueil depuis une liste de répertoire contenant des liens symboliques vers des fichiers de recette.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Générer un fiche de recette directement depuis un fichier de recette.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Intégrer des images depuis un dossier commun à tous les recueils.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u00c9criture d&amp;#039;un livre&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ecriture_d_un_livre&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;15-2800&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;modele_de_recette&quot;&gt;Modèle de recette&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.ainw.org/wiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mod\u00e8le de recette&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;modele_de_recette&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2801-2838&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;script_de_reorganisation_de_pages_pour_impression&quot;&gt;Script de réorganisation de pages pour impression&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_todo plugin_wrap&quot;&gt;&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; option pour le calcul des statistiques&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; option pour extraire par section numérotée (cf curl)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; options pour inclure ou exclure les premières pages&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; option pour ajouter une page de remplissage (blanche par défaut)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; option pour génération destructrice (cf sed)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; option pour spécifier le nombre de page dans un livret&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
&lt;img src=&quot;https://www.ainw.org/wiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Script de r\u00e9organisation de pages pour impression&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;script_de_reorganisation_de_pages_pour_impression&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2839-3269&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_todo plugin_wrap&quot;&gt;&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://latex.org/forum/viewtopic.php?t=13144&quot; class=&quot;urlextern&quot; title=&quot;https://latex.org/forum/viewtopic.php?t=13144&quot; rel=&quot;ugc nofollow&quot;&gt;\include all files from a directory?&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://latexref.xyz/_005cincludegraphics.html&quot; class=&quot;urlextern&quot; title=&quot;https://latexref.xyz/_005cincludegraphics.html&quot; rel=&quot;ugc nofollow&quot;&gt;\includegraphics (LaTeX2e unofficial reference manual (December 2020))&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dickimaw-books.com/latex/novices/html/newenv.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.dickimaw-books.com/latex/novices/html/newenv.html&quot; rel=&quot;ugc nofollow&quot;&gt;10. Defining Environments&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/23773/a-centered-plus-minus-symbol&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/23773/a-centered-plus-minus-symbol&quot; rel=&quot;ugc nofollow&quot;&gt;A centered plus-minus symbol - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.systutorials.com/a-simple-makefile-for-latex/&quot; class=&quot;urlextern&quot; title=&quot;https://www.systutorials.com/a-simple-makefile-for-latex/&quot; rel=&quot;ugc nofollow&quot;&gt;A Simple Makefile for Latex - SysTutorials&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/aeturrell/cookie-cutter-latex-book-manuscript&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/aeturrell/cookie-cutter-latex-book-manuscript&quot; rel=&quot;ugc nofollow&quot;&gt;aeturrell/cookie-cutter-latex-book-manuscript: A simple book manuscript in latex designed for export to Word via pandoc&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://stackoverflow.com/questions/4344066/allowing-includegraphics-in-latex-to-include-files-with-arbitrary-filenames&quot; class=&quot;urlextern&quot; title=&quot;https://stackoverflow.com/questions/4344066/allowing-includegraphics-in-latex-to-include-files-with-arbitrary-filenames&quot; rel=&quot;ugc nofollow&quot;&gt;Allowing includegraphics in LaTeX to include files with arbitrary filenames - Stack Overflow&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://ctan.math.ca/tex-archive/macros/latex/required/tools/multicol.pdf&quot; class=&quot;urlextern&quot; title=&quot;https://ctan.math.ca/tex-archive/macros/latex/required/tools/multicol.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;An environment for multicolumn output - multicol.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://ctan.mirror.globo.tech/macros/latex/required/tools/multicol.pdf&quot; class=&quot;urlextern&quot; title=&quot;http://ctan.mirror.globo.tech/macros/latex/required/tools/multicol.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;An environment for multicolumn output - multicol.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/536583/how-to-stop-pdflatex-exe&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/536583/how-to-stop-pdflatex-exe&quot; rel=&quot;ugc nofollow&quot;&gt;bugs - How to stop pdflatex.exe? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://mkhan45.github.io/CalcuLaTeX-Web/&quot; class=&quot;urlextern&quot; title=&quot;https://mkhan45.github.io/CalcuLaTeX-Web/&quot; rel=&quot;ugc nofollow&quot;&gt;CalcuLaTeX&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.latex4technics.com/?note=GUP4P9&quot; class=&quot;urlextern&quot; title=&quot;https://www.latex4technics.com/?note=GUP4P9&quot; rel=&quot;ugc nofollow&quot;&gt;Change size of section, subsection, subsubsection, paragraph and subparagraph title - LaTeX4technics&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://texblog.org/2012/08/29/changing-the-font-size-in-latex/&quot; class=&quot;urlextern&quot; title=&quot;https://texblog.org/2012/08/29/changing-the-font-size-in-latex/&quot; rel=&quot;ugc nofollow&quot;&gt;Changing the font size in LaTeX – texblog&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/8260/what-are-the-various-units-ex-em-in-pt-bp-dd-pc-expressed-in-mm&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/8260/what-are-the-various-units-ex-em-in-pt-bp-dd-pc-expressed-in-mm&quot; rel=&quot;ugc nofollow&quot;&gt;conversion - What are the various units (ex, em, in, pt, bp, dd, pc) expressed in mm? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/manparvesh/cookiecutter-latex-templates/tree/master/cookiecutter-book-template-double-column&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/manparvesh/cookiecutter-latex-templates/tree/master/cookiecutter-book-template-double-column&quot; rel=&quot;ugc nofollow&quot;&gt;cookiecutter-latex-templates/cookiecutter-book-template-double-column at master · manparvesh/cookiecutter-latex-templates&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/91567/copy-from-pdf-without-line-breaks-at-end-of-each-line&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/91567/copy-from-pdf-without-line-breaks-at-end-of-each-line&quot; rel=&quot;ugc nofollow&quot;&gt;Copy from PDF without line breaks at end of each line - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/2193/how-to-reference-the-page-of-a-figure&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/2193/how-to-reference-the-page-of-a-figure&quot; rel=&quot;ugc nofollow&quot;&gt;cross referencing - How to reference the page of a figure? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/187033/placing-ref-pageref-target-labels-inside-a-section&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/187033/placing-ref-pageref-target-labels-inside-a-section&quot; rel=&quot;ugc nofollow&quot;&gt;cross referencing - Placing ref/pageref target labels inside a section - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.ctan.org/tex-archive/macros/latex/contrib/cookybooky&quot; class=&quot;urlextern&quot; title=&quot;https://www.ctan.org/tex-archive/macros/latex/contrib/cookybooky&quot; rel=&quot;ugc nofollow&quot;&gt;CTAN: /tex-archive/macros/latex/contrib/cookybooky&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.ctan.org/tex-archive/macros/latex/contrib/recipe&quot; class=&quot;urlextern&quot; title=&quot;https://www.ctan.org/tex-archive/macros/latex/contrib/recipe&quot; rel=&quot;ugc nofollow&quot;&gt;CTAN: /tex-archive/macros/latex/contrib/recipe&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://ctan.org/tex-archive/macros/latex/contrib/recipe&quot; class=&quot;urlextern&quot; title=&quot;https://ctan.org/tex-archive/macros/latex/contrib/recipe&quot; rel=&quot;ugc nofollow&quot;&gt;CTAN: /tex-archive/macros/latex/contrib/recipe&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://ctan.mirror.rafal.ca/macros/latex/contrib/cuisine/cuisine.pdf&quot; class=&quot;urlextern&quot; title=&quot;https://ctan.mirror.rafal.ca/macros/latex/contrib/cuisine/cuisine.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;cuisine.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://muug.ca/mirror/ctan/macros/latex/contrib/cuisine/cuisine.pdf&quot; class=&quot;urlextern&quot; title=&quot;https://muug.ca/mirror/ctan/macros/latex/contrib/cuisine/cuisine.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;cuisine.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/88726/customize-auto-completion-in-texmaker&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/88726/customize-auto-completion-in-texmaker&quot; rel=&quot;ugc nofollow&quot;&gt;Customize auto-completion in Texmaker - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://ctan.mirror.rafal.ca/macros/latex/contrib/datetime2/datetime2.pdf&quot; class=&quot;urlextern&quot; title=&quot;https://ctan.mirror.rafal.ca/macros/latex/contrib/datetime2/datetime2.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;datetime2: date and time formats - datetime2.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://ctan.mirror.rafal.ca/macros/latex/contrib/datetime2/datetime2.pdf&quot; class=&quot;urlextern&quot; title=&quot;http://ctan.mirror.rafal.ca/macros/latex/contrib/datetime2/datetime2.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;datetime2: date and time formats - datetime2.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://ctan.mirror.globo.tech/macros/latex/contrib/datetime2/datetime2.pdf&quot; class=&quot;urlextern&quot; title=&quot;http://ctan.mirror.globo.tech/macros/latex/contrib/datetime2/datetime2.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;datetime2: date and time formats - datetime2.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/20549/a-cookbook-in-latex&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/20549/a-cookbook-in-latex&quot; rel=&quot;ugc nofollow&quot;&gt;document classes - A cookbook in LaTeX? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/35884/easy-way-to-remove-formatting-e-g-linebreaks&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/35884/easy-way-to-remove-formatting-e-g-linebreaks&quot; rel=&quot;ugc nofollow&quot;&gt;Easy way to remove formatting (e.g. linebreaks) - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/277876/how-do-i-convert-a-character-into-ascii-code&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/277876/how-do-i-convert-a-character-into-ascii-code&quot; rel=&quot;ugc nofollow&quot;&gt;enumerate - How do I convert a character into ascii code? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/968/passing-options-to-the-newenvironment&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/968/passing-options-to-the-newenvironment&quot; rel=&quot;ugc nofollow&quot;&gt;environments - Passing options to the newenvironment - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://latex.wikia.org/wiki/Eth_(LaTeX_symbol)&quot; class=&quot;urlextern&quot; title=&quot;https://latex.wikia.org/wiki/Eth_(LaTeX_symbol)&quot; rel=&quot;ugc nofollow&quot;&gt;Eth (LaTeX symbol) | LaTeX Wiki | Fandom&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://latex.org/forum/viewtopic.php?t=1341&amp;amp;p=4908&quot; class=&quot;urlextern&quot; title=&quot;https://latex.org/forum/viewtopic.php?t=1341&amp;amp;p=4908&quot; rel=&quot;ugc nofollow&quot;&gt;Excluding part titlepages from page numbering&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/103940/at-which-point-does-immediate-write-write-to-file&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/103940/at-which-point-does-immediate-write-write-to-file&quot; rel=&quot;ugc nofollow&quot;&gt;expansion - At which point does \immediate\write write to file? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/335211/how-to-immediate-write-with-multiple-lines&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/335211/how-to-immediate-write-with-multiple-lines&quot; rel=&quot;ugc nofollow&quot;&gt;expansion - How to \immediate\write with multiple lines? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/390098/write-accented-characters-to-file-using-write/390119#390119&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/390098/write-accented-characters-to-file-using-write/390119#390119&quot; rel=&quot;ugc nofollow&quot;&gt;expansion - Write accented characters to file using \write - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/390098/write-accented-characters-to-file-using-write&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/390098/write-accented-characters-to-file-using-write&quot; rel=&quot;ugc nofollow&quot;&gt;expansion - Write accented characters to file using \write - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://latex.org/forum/viewtopic.php?t=26660&quot; class=&quot;urlextern&quot; title=&quot;https://latex.org/forum/viewtopic.php?t=26660&quot; rel=&quot;ugc nofollow&quot;&gt;filename as text&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/7653/how-to-iterate-through-the-name-of-files-in-a-folder&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/7653/how-to-iterate-through-the-name-of-files-in-a-folder&quot; rel=&quot;ugc nofollow&quot;&gt;filesystem access - How to iterate through the name of files in a folder - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/44694/fontenc-vs-inputenc?noredirect=1&amp;amp;lq=1&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/44694/fontenc-vs-inputenc?noredirect=1&amp;amp;lq=1&quot; rel=&quot;ugc nofollow&quot;&gt;font encodings - fontenc vs inputenc - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/107057/adjusting-font-size-with-tikz-picture&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/107057/adjusting-font-size-with-tikz-picture&quot; rel=&quot;ugc nofollow&quot;&gt;fontsize - Adjusting font size with TikZ picture - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/139614/you-cant-use-macro-parameter-character-in-restricted-horizontal-mode&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/139614/you-cant-use-macro-parameter-character-in-restricted-horizontal-mode&quot; rel=&quot;ugc nofollow&quot;&gt;footnotes - You can&amp;#039;t use `macro parameter character #&amp;#039; in restricted horizontal mode. - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/152392/date-format-yyyy-mm-dd&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/152392/date-format-yyyy-mm-dd&quot; rel=&quot;ugc nofollow&quot;&gt;formatting - Date format: YYYY-MM-DD - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/486265/turn-off-userawinputencoding-after-specific-text&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/486265/turn-off-userawinputencoding-after-specific-text&quot; rel=&quot;ugc nofollow&quot;&gt;formatting - Turn off: \UseRawInputEncoding after specific text - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://latex-tutorial.com/tutorials/table-of-contents/&quot; class=&quot;urlextern&quot; title=&quot;https://latex-tutorial.com/tutorials/table-of-contents/&quot; rel=&quot;ugc nofollow&quot;&gt;Generate a table of contents in LaTeX - LaTeX-Tutorial.com&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/192718/centering-an-image-vertically&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/192718/centering-an-image-vertically&quot; rel=&quot;ugc nofollow&quot;&gt;graphics - Centering an image vertically - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/20792/how-to-superimpose-latex-on-a-picture&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/20792/how-to-superimpose-latex-on-a-picture&quot; rel=&quot;ugc nofollow&quot;&gt;graphics - How to superimpose LaTeX on a picture? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/139401/how-to-use-graphicspath&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/139401/how-to-use-graphicspath&quot; rel=&quot;ugc nofollow&quot;&gt;graphics - How to use \graphicspath? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/39930/hash-character-in-latex&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/39930/hash-character-in-latex&quot; rel=&quot;ugc nofollow&quot;&gt;Hash character in LaTeX - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://kb.mit.edu/confluence/pages/viewpage.action?pageId=3907360&quot; class=&quot;urlextern&quot; title=&quot;https://kb.mit.edu/confluence/pages/viewpage.action?pageId=3907360&quot; rel=&quot;ugc nofollow&quot;&gt;How can I change the font size in my Latex document? - IS&amp;amp;T Contributions - Hermes&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://theroadchoseme.com/how-i-self-published-a-professional-paperback-and-ebook-using-latex-and-pandoc?1#chap7&quot; class=&quot;urlextern&quot; title=&quot;http://theroadchoseme.com/how-i-self-published-a-professional-paperback-and-ebook-using-latex-and-pandoc?1#chap7&quot; rel=&quot;ugc nofollow&quot;&gt;How I self-published a professional paperback and eBook using LaTeX and Pandoc | The Road Chose Me&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://theroadchoseme.com/how-i-self-published-a-professional-paperback-and-ebook-using-latex-and-pandoc?1&quot; class=&quot;urlextern&quot; title=&quot;http://theroadchoseme.com/how-i-self-published-a-professional-paperback-and-ebook-using-latex-and-pandoc?1&quot; rel=&quot;ugc nofollow&quot;&gt;How I self-published a professional paperback and eBook using LaTeX and Pandoc | The Road Chose Me&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/54333/how-to-avoid-numbering-the-first-page-of-the-document&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/54333/how-to-avoid-numbering-the-first-page-of-the-document&quot; rel=&quot;ugc nofollow&quot;&gt;How to avoid numbering the first page of the document? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/4139/how-to-change-font-size-mid-document&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/4139/how-to-change-font-size-mid-document&quot; rel=&quot;ugc nofollow&quot;&gt;How to change font size mid document? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://latex.org/forum/viewtopic.php?t=24286&quot; class=&quot;urlextern&quot; title=&quot;https://latex.org/forum/viewtopic.php?t=24286&quot; rel=&quot;ugc nofollow&quot;&gt;How to force images to stay in order after text&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/168938/how-to-insert-a-trademark-symbol-tm&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/168938/how-to-insert-a-trademark-symbol-tm&quot; rel=&quot;ugc nofollow&quot;&gt;How to insert a trademark symbol? (tm) - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/99059/how-to-make-text-bold-in-a-tikz-style&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/99059/how-to-make-text-bold-in-a-tikz-style&quot; rel=&quot;ugc nofollow&quot;&gt;how to make text bold in a tikz style? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://latex.org/forum/viewtopic.php?t=32379&quot; class=&quot;urlextern&quot; title=&quot;https://latex.org/forum/viewtopic.php?t=32379&quot; rel=&quot;ugc nofollow&quot;&gt;How to use texhash ?&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/163716/how-to-write-accents-in-latex&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/163716/how-to-write-accents-in-latex&quot; rel=&quot;ugc nofollow&quot;&gt;How to write accents in LaTeX? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/53513/hyperref-token-not-allowed&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/53513/hyperref-token-not-allowed&quot; rel=&quot;ugc nofollow&quot;&gt;Hyperref - Token not allowed - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/581784/use-accented-characters-in-bookmarks/581850#581850&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/581784/use-accented-characters-in-bookmarks/581850#581850&quot; rel=&quot;ugc nofollow&quot;&gt;hyperref - Use accented characters in bookmarks - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/38571/including-all-files-within-a-directory&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/38571/including-all-files-within-a-directory&quot; rel=&quot;ugc nofollow&quot;&gt;input - Including all files within a directory - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/163532/inputting-files-alphabetically&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/163532/inputting-files-alphabetically&quot; rel=&quot;ugc nofollow&quot;&gt;input - Inputting files alphabetically - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/370278/is-there-any-reason-to-use-inputenc&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/370278/is-there-any-reason-to-use-inputenc&quot; rel=&quot;ugc nofollow&quot;&gt;input encodings - Is there any reason to use inputenc? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://latex-tutorial.com/tutorials/figures/&quot; class=&quot;urlextern&quot; title=&quot;https://latex-tutorial.com/tutorials/figures/&quot; rel=&quot;ugc nofollow&quot;&gt;Insert an image in LaTeX - Adding a figure or picture - LaTeX-Tutorial.com&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.overleaf.com/learn/latex/Inserting_Images&quot; class=&quot;urlextern&quot; title=&quot;https://www.overleaf.com/learn/latex/Inserting_Images&quot; rel=&quot;ugc nofollow&quot;&gt;Inserting Images - Overleaf, Online LaTeX Editor&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/228364/is-it-possible-to-set-a-maximum-node-width-in-tikz&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/228364/is-it-possible-to-set-a-maximum-node-width-in-tikz&quot; rel=&quot;ugc nofollow&quot;&gt;Is it possible to set a maximum node width in TikZ - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://stackoverflow.com/questions/1211888/is-there-any-way-i-can-define-a-variable-in-latex&quot; class=&quot;urlextern&quot; title=&quot;https://stackoverflow.com/questions/1211888/is-there-any-way-i-can-define-a-variable-in-latex&quot; rel=&quot;ugc nofollow&quot;&gt;Is there any way I can define a variable in LaTeX? - Stack Overflow&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://stackoverflow.com/questions/56826748/keeping-figure-just-after-text-in-latex&quot; class=&quot;urlextern&quot; title=&quot;https://stackoverflow.com/questions/56826748/keeping-figure-just-after-text-in-latex&quot; rel=&quot;ugc nofollow&quot;&gt;Keeping figure just after text in Latex - Stack Overflow&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/115159/how-can-i-do-automatic-environment-of-command-in-texmaker&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/115159/how-can-i-do-automatic-environment-of-command-in-texmaker&quot; rel=&quot;ugc nofollow&quot;&gt;kile - How can I do automatic &amp;#039;environment&amp;#039; of command in &amp;#039;Texmaker&amp;#039;? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.latex-project.org/help/documentation/encguide.pdf&quot; class=&quot;urlextern&quot; title=&quot;https://www.latex-project.org/help/documentation/encguide.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;LaTeX font encodings - encguide.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://alvinalexander.com/blog/post/latex/prevent-line-breaks-from-occurring-in-my-latex-documents/&quot; class=&quot;urlextern&quot; title=&quot;https://alvinalexander.com/blog/post/latex/prevent-line-breaks-from-occurring-in-my-latex-documents/&quot; rel=&quot;ugc nofollow&quot;&gt;LaTeX line break - How to prevent line breaks in LaTeX documents | alvinalexander.com&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://alvinalexander.com/blog/post/linux-unix/latex-setting-table-of-contents-toc-depth/&quot; class=&quot;urlextern&quot; title=&quot;https://alvinalexander.com/blog/post/linux-unix/latex-setting-table-of-contents-toc-depth/&quot; rel=&quot;ugc nofollow&quot;&gt;LaTeX: How to set the Table of Contents (TOC) depth | alvinalexander.com&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://stackoverflow.com/questions/1012799/latex-prevent-line-break-in-a-span-of-text&quot; class=&quot;urlextern&quot; title=&quot;https://stackoverflow.com/questions/1012799/latex-prevent-line-break-in-a-span-of-text&quot; rel=&quot;ugc nofollow&quot;&gt;LaTeX: Prevent line break in a span of text - Stack Overflow&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.quora.com/LaTeX-What-is-the-command-for-the-plus-minus-sign&quot; class=&quot;urlextern&quot; title=&quot;https://www.quora.com/LaTeX-What-is-the-command-for-the-plus-minus-sign&quot; rel=&quot;ugc nofollow&quot;&gt;LaTeX: What is the command for the plus-minus sign? - Quora&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://en.wikibooks.org/wiki/LaTeX/Tables_of_Contents_and_Lists_of_Figures&quot; class=&quot;urlextern&quot; title=&quot;https://en.wikibooks.org/wiki/LaTeX/Tables_of_Contents_and_Lists_of_Figures&quot; rel=&quot;ugc nofollow&quot;&gt;LaTeX/Tables of Contents and Lists of Figures - Wikibooks, open books for an open world&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.learnlatex.org/en/&quot; class=&quot;urlextern&quot; title=&quot;https://www.learnlatex.org/en/&quot; rel=&quot;ugc nofollow&quot;&gt;Learn LaTeX online for free in beginner friendly lessons | learnlatex.org&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/463008/overfull-hbox-in-a-section-title&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/463008/overfull-hbox-in-a-section-title&quot; rel=&quot;ugc nofollow&quot;&gt;line breaking - Overfull hbox in a section title - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/376246/remove-newlines-from-a-parameter-passed-to-a-macro&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/376246/remove-newlines-from-a-parameter-passed-to-a-macro&quot; rel=&quot;ugc nofollow&quot;&gt;line breaking - Remove newlines from a parameter passed to a macro - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/94217/what-is-the-difference-between-nobreak-and-nolinebreak&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/94217/what-is-the-difference-between-nobreak-and-nolinebreak&quot; rel=&quot;ugc nofollow&quot;&gt;line breaking - What is the difference between \nobreak and \nolinebreak? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/166386/how-can-i-automatically-include-all-source-code-files-located-in-a-given-directo&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/166386/how-can-i-automatically-include-all-source-code-files-located-in-a-given-directo&quot; rel=&quot;ugc nofollow&quot;&gt;listings - How can I automatically include all source code files located in a given directory? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/460913/immediate-write-with-plain-text&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/460913/immediate-write-with-plain-text&quot; rel=&quot;ugc nofollow&quot;&gt;macros - \immediate\write with plain text - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/321435/newcommand-and-renewcommand-difficulty-in-class-file&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/321435/newcommand-and-renewcommand-difficulty-in-class-file&quot; rel=&quot;ugc nofollow&quot;&gt;macros - \newcommand and \renewcommand difficulty in class file - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/252566/calculate-the-hash-md5-or-otherwise-of-a-string&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/252566/calculate-the-hash-md5-or-otherwise-of-a-string&quot; rel=&quot;ugc nofollow&quot;&gt;macros - Calculate the hash (MD5 or otherwise) of a string - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/356898/quote-with-author-reference-at-the-end&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/356898/quote-with-author-reference-at-the-end&quot; rel=&quot;ugc nofollow&quot;&gt;macros - Quote with author reference at the end - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/15361/will-two-letter-font-style-commands-bf-it-ever-be-resurrected-in-latex&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/15361/will-two-letter-font-style-commands-bf-it-ever-be-resurrected-in-latex&quot; rel=&quot;ugc nofollow&quot;&gt;macros - Will two-letter font style commands (\bf , \it , …) ever be resurrected in LaTeX? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/40738/how-to-properly-make-a-latex-project&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/40738/how-to-properly-make-a-latex-project&quot; rel=&quot;ugc nofollow&quot;&gt;makefile - How to properly &amp;#039;make&amp;#039; a latex project? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/manparvesh/cookiecutter-latex-templates&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/manparvesh/cookiecutter-latex-templates&quot; rel=&quot;ugc nofollow&quot;&gt;manparvesh/cookiecutter-latex-templates: Different cookiecutter templates for latex, like book, article, etc&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/249107/how-to-use-texorpdfstring-characters-disappear&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/249107/how-to-use-texorpdfstring-characters-disappear&quot; rel=&quot;ugc nofollow&quot;&gt;math mode - How to use `\texorpdfstring`. Characters disappear - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://latex.org/forum/viewtopic.php?t=6177&quot; class=&quot;urlextern&quot; title=&quot;https://latex.org/forum/viewtopic.php?t=6177&quot; rel=&quot;ugc nofollow&quot;&gt;Multi-line (section) headers?&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/102052/how-to-change-spacing-between-columns-for-just-one-page-in-the-document&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/102052/how-to-change-spacing-between-columns-for-just-one-page-in-the-document&quot; rel=&quot;ugc nofollow&quot;&gt;multicol - How to change spacing between columns for just one page in the document - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.overleaf.com/learn/latex/Page_numbering&quot; class=&quot;urlextern&quot; title=&quot;https://www.overleaf.com/learn/latex/Page_numbering&quot; rel=&quot;ugc nofollow&quot;&gt;Page numbering - Overleaf, Online LaTeX Editor&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/31299/tikz-position-with-different-anchors&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/31299/tikz-position-with-different-anchors&quot; rel=&quot;ugc nofollow&quot;&gt;positioning - TikZ: position with different anchors - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/292704/referencing-page-number-with-only-one-reference&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/292704/referencing-page-number-with-only-one-reference&quot; rel=&quot;ugc nofollow&quot;&gt;Referencing page number with only one reference - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://latex.org/forum/viewtopic.php?t=7687&quot; class=&quot;urlextern&quot; title=&quot;https://latex.org/forum/viewtopic.php?t=7687&quot; rel=&quot;ugc nofollow&quot;&gt;Removing line break in itemize/enumerate environment&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/124486/customizing-the-columnseprule-in-a-multicols-environment&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/124486/customizing-the-columnseprule-in-a-multicols-environment&quot; rel=&quot;ugc nofollow&quot;&gt;rules - Customizing the `\columnseprule` in a `\multicols` environment - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/19015/hiding-the-column-separator-in-multicols&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/19015/hiding-the-column-separator-in-multicols&quot; rel=&quot;ugc nofollow&quot;&gt;rules - Hiding the column separator in multicols - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://ctan.mirror.colo-serv.net/macros/latex/contrib/recipe/sample.pdf&quot; class=&quot;urlextern&quot; title=&quot;http://ctan.mirror.colo-serv.net/macros/latex/contrib/recipe/sample.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;sample.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/59726/change-size-of-section-subsection-subsubsection-paragraph-and-subparagraph-ti&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/59726/change-size-of-section-subsection-subsubsection-paragraph-and-subparagraph-ti&quot; rel=&quot;ugc nofollow&quot;&gt;sectioning - Change size of section, subsection, subsubsection, paragraph and subparagraph title - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/122461/subsubsection-remove-the-newline-like-paragraph&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/122461/subsubsection-remove-the-newline-like-paragraph&quot; rel=&quot;ugc nofollow&quot;&gt;sectioning - Subsubsection: remove the newline (like paragraph) - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/463233/tikz-in-section-heading&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/463233/tikz-in-section-heading&quot; rel=&quot;ugc nofollow&quot;&gt;sectioning - TikZ in section heading - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://ctan.mirror.globo.tech/macros/latex/contrib/sectsty/sectsty.pdf&quot; class=&quot;urlextern&quot; title=&quot;http://ctan.mirror.globo.tech/macros/latex/contrib/sectsty/sectsty.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;sectsty.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://ctan.mirror.rafal.ca/macros/latex/contrib/sectsty/sectsty.pdf&quot; class=&quot;urlextern&quot; title=&quot;https://ctan.mirror.rafal.ca/macros/latex/contrib/sectsty/sectsty.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;sectsty.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/20444/what-are-immediate-write18-and-how-does-one-use-them&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/20444/what-are-immediate-write18-and-how-does-one-use-them&quot; rel=&quot;ugc nofollow&quot;&gt;shell escape - What are \immediate &amp;amp; \write18 and how does one use them? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/345233/remove-newline-function-interaction&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/345233/remove-newline-function-interaction&quot; rel=&quot;ugc nofollow&quot;&gt;spacing - Remove newline function/interaction - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.overleaf.com/learn/latex/Subscripts_and_superscripts&quot; class=&quot;urlextern&quot; title=&quot;https://www.overleaf.com/learn/latex/Subscripts_and_superscripts&quot; rel=&quot;ugc nofollow&quot;&gt;Subscripts and superscripts - Overleaf, Online LaTeX Editor&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/495301/superscript-and-subscript&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/495301/superscript-and-subscript&quot; rel=&quot;ugc nofollow&quot;&gt;Superscript and subscript - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/47324/superscript-outside-math-mode&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/47324/superscript-outside-math-mode&quot; rel=&quot;ugc nofollow&quot;&gt;Superscript outside math mode - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/11668/adding-unnumbered-sections-to-toc&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/11668/adding-unnumbered-sections-to-toc&quot; rel=&quot;ugc nofollow&quot;&gt;table of contents - Adding unnumbered sections to TOC - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/5905/changing-the-font-in-the-toc&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/5905/changing-the-font-in-the-toc&quot; rel=&quot;ugc nofollow&quot;&gt;table of contents - Changing the font in the ToC? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/358766/exclude-chapter-from-toc-without-removing-numbering&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/358766/exclude-chapter-from-toc-without-removing-numbering&quot; rel=&quot;ugc nofollow&quot;&gt;table of contents - Exclude chapter from TOC, without removing numbering - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/28516/how-to-change-the-title-of-toc&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/28516/how-to-change-the-title-of-toc&quot; rel=&quot;ugc nofollow&quot;&gt;table of contents - How to change the title of ToC? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/312979/removing-renaming-the-title-of-minitoc&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/312979/removing-renaming-the-title-of-minitoc&quot; rel=&quot;ugc nofollow&quot;&gt;table of contents - Removing/Renaming the title of minitoc - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/24343/splitting-toc-into-two-columns-on-single-frame-in-beamer&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/24343/splitting-toc-into-two-columns-on-single-frame-in-beamer&quot; rel=&quot;ugc nofollow&quot;&gt;table of contents - Splitting TOC into two columns on single frame in beamer - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/353866/table-of-contents-in-two-column-without-multicol&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/353866/table-of-contents-in-two-column-without-multicol&quot; rel=&quot;ugc nofollow&quot;&gt;Table of contents in two column, without multicol - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/7208/how-to-vertically-center-the-text-of-the-cells&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/7208/how-to-vertically-center-the-text-of-the-cells&quot; rel=&quot;ugc nofollow&quot;&gt;tables - How to vertically-center the text of the cells? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://muug.ca/mirror/ctan/macros/latex/contrib/tkz/pgfornament/doc/ornaments.pdf&quot; class=&quot;urlextern&quot; title=&quot;https://muug.ca/mirror/ctan/macros/latex/contrib/tkz/pgfornament/doc/ornaments.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;The Ornaments package - ornaments.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://ctan.math.ca/tex-archive/macros/latex/contrib/tkz/pgfornament/doc/ornaments.pdf&quot; class=&quot;urlextern&quot; title=&quot;https://ctan.math.ca/tex-archive/macros/latex/contrib/tkz/pgfornament/doc/ornaments.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;The Ornaments package - ornaments.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://ctan.mirror.rafal.ca/macros/latex/contrib/tkz/pgfornament/doc/ornaments.pdf&quot; class=&quot;urlextern&quot; title=&quot;https://ctan.mirror.rafal.ca/macros/latex/contrib/tkz/pgfornament/doc/ornaments.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;The Ornaments package - ornaments.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://ctan.mirror.rafal.ca/macros/latex/contrib/tkz/pgfornament/doc/ornaments.pdf&quot; class=&quot;urlextern&quot; title=&quot;http://ctan.mirror.rafal.ca/macros/latex/contrib/tkz/pgfornament/doc/ornaments.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;The Ornaments package - ornaments.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.thefullwiki.org/LaTeX/Indexing&quot; class=&quot;urlextern&quot; title=&quot;http://www.thefullwiki.org/LaTeX/Indexing&quot; rel=&quot;ugc nofollow&quot;&gt;thefullwiki.org/LaTeX/Indexing&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/584455/how-to-draw-a-halftone-spiral-made-of-circles-in-latex&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/584455/how-to-draw-a-halftone-spiral-made-of-circles-in-latex&quot; rel=&quot;ugc nofollow&quot;&gt;tikz pgf - How to draw a “halftone” spiral made of circles in LaTeX? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/62492/what-is-the-correct-way-to-center-a-tikzpicture&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/62492/what-is-the-correct-way-to-center-a-tikzpicture&quot; rel=&quot;ugc nofollow&quot;&gt;tikz pgf - What is the correct way to center a \tikzpicture? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/165991/how-to-use-date-today-without-using-maketitle&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/165991/how-to-use-date-today-without-using-maketitle&quot; rel=&quot;ugc nofollow&quot;&gt;titles - How to use \date{\today} without using \maketitle? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://tug.ctan.org/tex-archive/macros/latex/contrib/titlesec/titlesec.pdf&quot; class=&quot;urlextern&quot; title=&quot;http://tug.ctan.org/tex-archive/macros/latex/contrib/titlesec/titlesec.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;titlesec.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://ctan.mirror.colo-serv.net/macros/latex/contrib/cookybooky/documentation/Manual.pdf&quot; class=&quot;urlextern&quot; title=&quot;http://ctan.mirror.colo-serv.net/macros/latex/contrib/cookybooky/documentation/Manual.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;Typesetting Recipes - Manual.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://ctan.mirror.globo.tech/macros/latex/contrib/cookybooky/documentation/Manual.pdf&quot; class=&quot;urlextern&quot; title=&quot;http://ctan.mirror.globo.tech/macros/latex/contrib/cookybooky/documentation/Manual.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;Typesetting Recipes - Manual.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/users/25493/christian-gagn%c3%a9&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/users/25493/christian-gagn%c3%a9&quot; rel=&quot;ugc nofollow&quot;&gt;User Christian Gagné - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/101583/using-commands-inside-environment-definitions&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/101583/using-commands-inside-environment-definitions&quot; rel=&quot;ugc nofollow&quot;&gt;Using commands inside environment definitions - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/41370/what-are-the-possible-dimensions-sizes-units-latex-understands&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/41370/what-are-the-possible-dimensions-sizes-units-latex-understands&quot; rel=&quot;ugc nofollow&quot;&gt;What are the possible dimensions / sizes / units LaTeX understands? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://itjobdubai.com/latex-plus-minus/&quot; class=&quot;urlextern&quot; title=&quot;https://itjobdubai.com/latex-plus-minus/&quot; rel=&quot;ugc nofollow&quot;&gt;What is the command for the LaTeX plus minus sign? - IT Jobs Dubai UAE&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/6990/what-is-the-variable-that-contains-the-source-file-name&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/6990/what-is-the-variable-that-contains-the-source-file-name&quot; rel=&quot;ugc nofollow&quot;&gt;What is the variable that contains the source file name? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/17036/why-cant-the-end-code-of-an-environment-contain-an-argument&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/17036/why-cant-the-end-code-of-an-environment-contain-an-argument&quot; rel=&quot;ugc nofollow&quot;&gt;Why can&amp;#039;t the end code of an environment contain an argument? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/329045/how-to-change-textwidth-between-section-and-subsections&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/329045/how-to-change-textwidth-between-section-and-subsections&quot; rel=&quot;ugc nofollow&quot;&gt;width - How to change \textwidth between section and subsections - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://latex.org/forum/viewtopic.php?t=30167&quot; class=&quot;urlextern&quot; title=&quot;https://latex.org/forum/viewtopic.php?t=30167&quot; rel=&quot;ugc nofollow&quot;&gt;Write accented characters to file using \write&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.overleaf.com/learn/latex/Writing_your_own_class&quot; class=&quot;urlextern&quot; title=&quot;https://www.overleaf.com/learn/latex/Writing_your_own_class&quot; rel=&quot;ugc nofollow&quot;&gt;Writing your own class - Overleaf, Online LaTeX Editor&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://tex.stackexchange.com/questions/21629/avoiding-page-numbers-in-empty-pages&quot; class=&quot;urlextern&quot; title=&quot;https://tex.stackexchange.com/questions/21629/avoiding-page-numbers-in-empty-pages&quot; rel=&quot;ugc nofollow&quot;&gt;header footer - Avoiding page numbers in empty pages? - TeX - LaTeX Stack Exchange&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.thecopierguy.my/blog/how-to-arrange-pages-for-booklet-printing&quot; class=&quot;urlextern&quot; title=&quot;https://www.thecopierguy.my/blog/how-to-arrange-pages-for-booklet-printing&quot; rel=&quot;ugc nofollow&quot;&gt;How To Arrange Pages For Booklet Printing | The Copier Guy&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://latex.org/forum/viewtopic.php?t=10623&quot; class=&quot;urlextern&quot; title=&quot;https://latex.org/forum/viewtopic.php?t=10623&quot; rel=&quot;ugc nofollow&quot;&gt;Inserting a blank page if current page number is even&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://pdf.wondershare.com/print-pdf/booklet-pages.html&quot; class=&quot;urlextern&quot; title=&quot;https://pdf.wondershare.com/print-pdf/booklet-pages.html&quot; rel=&quot;ugc nofollow&quot;&gt;The Ultimate Guide to Arrange PDF Pages for Booklet Printing&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sources&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sources&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3270-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__10&quot; id=&quot;fn__10&quot; class=&quot;fn_bot&quot;&gt;10)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;2021&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__11&quot; id=&quot;fn__11&quot; class=&quot;fn_bot&quot;&gt;11)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Ce qui est vraiment intéressant car je n&amp;#039;ai pas à me préoccuper de l&amp;#039;ordre des recettes car c&amp;#039;est fait directement au niveau du système de fichier&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 24 Nov 2024 17:26:08 +0000</pubDate>
        </item>
        <item>
            <title>mise_en_place_d_une_copie_hors-ligne_de_mon_espace_personnel</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:projets:mise_en_place_d_une_copie_hors-ligne_de_mon_espace_personnel&amp;rev=1760359851&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;mise_en_place_d_une_copie_hors-ligne_de_mon_espace_personnel&quot;&gt;Mise en place d&amp;#039;une copie hors-ligne de mon espace personnel&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mise en place d&amp;#039;une copie hors-ligne de mon espace personnel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mise_en_place_d_une_copie_hors-ligne_de_mon_espace_personnel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-75&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;mise_en_contexte&quot;&gt;Mise en contexte&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Depuis plusieurs années, j&amp;#039;alimente plusieurs système en ligne &lt;sup&gt;&lt;a href=&quot;#fn__12&quot; id=&quot;fnt__12&quot; class=&quot;fn_top&quot;&gt;12)&lt;/a&gt;&lt;/sup&gt;.
Ça me demande de l&amp;#039;énergie et du temps, ça m&amp;#039;ennuierai de voir tout ça disparaitre.
C&amp;#039;est pourquoi je voulais en faire une version hors-ligne pour pouvoir conserver mon travail car on ne sait jamais ce qui peut arriver &lt;sup&gt;&lt;a href=&quot;#fn__13&quot; id=&quot;fnt__13&quot; class=&quot;fn_top&quot;&gt;13)&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;

&lt;p&gt;
Il y a quelques années, j&amp;#039;avais écrit un script de sauvegarde mais je me suis rendu compte qu&amp;#039;il ne fonctionnait plus suite à des changements de politiques chez l&amp;#039;hébergeur et des changements de configuration localement.
Il fallait tout reprendre à la base.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mise en contexte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mise_en_contexte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;76-736&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;solutions_envisagees&quot;&gt;Solutions envisagées&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ma première idée a été de faire une sauvegarde des fichiers de données uniquement et de recréer les environnements localement.
Cette solution me permet de ne gérer que les fichiers de données lors de la sauvegarde, ce qui réduit les temps de traitement et la volumétrie.
Par contre, elle m&amp;#039;oblige à recréer les environnements localement, ce qui n&amp;#039;est pas un problème pour les sections sans configuration (blog, galerie, etc.) mais qui devient un casse-tête pour les autres sections (wikis) car il faut reproduire la configuration à l&amp;#039;identique.
&lt;/p&gt;

&lt;p&gt;
Ma seconde idée a été de faire une sauvegarde de l&amp;#039;ensemble des répertoires et de les servir localement.
Cette solution me permet de sauvegarder la totalité des applications avec configuration, données et modules.
Ça augmente la volumétrie et le temps de traitement de la sauvegarde mais ça simplifie grandement la configuration des environnements locaux.
&lt;/p&gt;

&lt;p&gt;
J&amp;#039;ai opté pour la seconde idée afin de me faciliter la vie, l&amp;#039;espace disque étant bon marché à l&amp;#039;heure actuelle.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Solutions envisag\u00e9es&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;solutions_envisagees&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;737-1818&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;mise_en_place&quot;&gt;Mise en place&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mise en place&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mise_en_place&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1819-1845&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;sauvegarde_de_mon_espace_personnel&quot;&gt;Sauvegarde de mon espace personnel&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
J&amp;#039;ai repris le script que j&amp;#039;avais écrit auparavant &lt;sup&gt;&lt;a href=&quot;#fn__14&quot; id=&quot;fnt__14&quot; class=&quot;fn_top&quot;&gt;14)&lt;/a&gt;&lt;/sup&gt; et j&amp;#039;ai modifié les choses suivantes :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Changement de l&amp;#039;accès aux bases de données,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Changement des données à sauvegarder,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Changement de la cible de sauvegarde,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Changement de l&amp;#039;accès au serveur.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Voici le nouveau script :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/usr/bin/env bash&lt;/span&gt;
&amp;nbsp;
. $&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;dirname&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;$0&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;.utils.sh
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;AINW&lt;/span&gt;=ainw
&lt;span class=&quot;re2&quot;&gt;DEST&lt;/span&gt;=~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Workspace&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;offline&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;src
&lt;span class=&quot;re2&quot;&gt;ICON&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;share&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;icons&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Adwaita&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;scalable&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;devices&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;drive-removable-media.svg
&lt;span class=&quot;re2&quot;&gt;MOUNT&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;tmp&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ainw
&lt;span class=&quot;re2&quot;&gt;USER&lt;/span&gt;=alexis
&lt;span class=&quot;re2&quot;&gt;MYSQL_HOST&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;host&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DATABASE&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;database&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
notify_info &lt;span class=&quot;re1&quot;&gt;$USER&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&#039;Backup started&#039;&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&#039;AINW.ORG to local drive.&#039;&amp;quot;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ICON&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Extract crontab&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;\e[1;32;49mBackup of crontab in progress\e[m&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;ssh&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$AINW&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;crontab -l&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$DEST&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;crontab
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Dump databases&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;\e[1;32;49mBackup of the database in progress\e[m&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;ssh&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$AINW&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;mysqldump --defaults-extra-file=~/.mysql/mysqldump.cnf --no-tablespaces --skip-comments --disable-keys --host &lt;span class=&quot;es2&quot;&gt;$MYSQL_HOST&lt;/span&gt; --databases &lt;span class=&quot;es2&quot;&gt;$DATABASE&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$DEST&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mysqldump.sql
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Save files&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;mkdir&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-p&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$MOUNT&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sshfs&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$AINW&lt;/span&gt;:www &lt;span class=&quot;re1&quot;&gt;$MOUNT&lt;/span&gt;
&amp;nbsp;
files&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;folder &lt;span class=&quot;co0&quot;&gt;#1&amp;gt;&lt;/span&gt;
…
files&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;folder &lt;span class=&quot;co0&quot;&gt;#n&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${files[@]}&lt;/span&gt;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;\e[1;32;49mBackup of &lt;span class=&quot;es2&quot;&gt;$i&lt;/span&gt; folder in progress\e[m&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$MOUNT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$i&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;mkdir&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-p&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$DEST&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$i&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
    rsync &lt;span class=&quot;re5&quot;&gt;--compress&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--delete&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--force&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--archive&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--quiet&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$MOUNT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$i&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$DEST&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;$&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;dirname&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$i&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;done&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;umount&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$MOUNT&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;rmdir&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$MOUNT&lt;/span&gt;
&amp;nbsp;
notify_info &lt;span class=&quot;re1&quot;&gt;$USER&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&#039;Backup done&#039;&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&#039;AINW.ORG to local drive.&#039;&amp;quot;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ICON&lt;/span&gt;&lt;/pre&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_important plugin_wrap&quot;&gt;
&lt;p&gt;
Une chose qu&amp;#039;il faut mentionner, c&amp;#039;est l&amp;#039;absence du nom d&amp;#039;utilisateur et de son mot de passe dans le script.
C&amp;#039;est une mauvaise pratique de faire cela alors je me suis efforcé à corriger ce problème.
J&amp;#039;ai suivi la documentation disponible dans les lectures utiles.
Il est important de noter que l&amp;#039;option &lt;code&gt;--defaults-extra-file&lt;/code&gt; doit absolument être la première option de la commande sinon elle n&amp;#039;est pas prise en compte.
&lt;/p&gt;

&lt;p&gt;
Pour l&amp;#039;instant, j&amp;#039;ai créé le fichier d&amp;#039;authentification uniquement sur le serveur.
Dans une version future, je vais gérer l&amp;#039;ajout et la suppression de ce fichier directement dans le script de sauvegarde.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_tip plugin_wrap&quot;&gt;
&lt;p&gt;
Il est impératif d&amp;#039;ajouter l&amp;#039;option &lt;code&gt;--no-tablespaces&lt;/code&gt; sinon l&amp;#039;utilisateur n&amp;#039;a pas les permissions requises pour faire la sauvegarde de la base de données.
C&amp;#039;est mentionné dans la documentation disponible sur le site de mon hébergeur mais il est facile de ne pas le voir.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_info plugin_wrap&quot;&gt;
&lt;p&gt;
Il y a certaines choses que je ne sauvegarde pas car elles sont générées sur ma machine avant d&amp;#039;être envoyées sur le serveur.
J&amp;#039;utilise directement la version qui est déjà disponible sur ma machine.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sauvegarde de mon espace personnel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sauvegarde_de_mon_espace_personnel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1846-4598&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;mise_a_disposition_localement&quot;&gt;Mise à disposition localement&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Il y a plusieurs systèmes à mettre en place pour que tout fonctionne correctement.
Nous allons faire tourner chaque système dans un conteneur pour ne pas avoir à configurer le poste local.
Pour cela, nous allons utiliser Docker &lt;sup&gt;&lt;a href=&quot;#fn__15&quot; id=&quot;fnt__15&quot; class=&quot;fn_top&quot;&gt;15)&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit13&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt;                            &lt;/th&gt;&lt;th class=&quot;col1 centeralign&quot;&gt;  Blog &lt;sup&gt;&lt;a href=&quot;#fn__16&quot; id=&quot;fnt__16&quot; class=&quot;fn_top&quot;&gt;16)&lt;/a&gt;&lt;/sup&gt;  &lt;/th&gt;&lt;th class=&quot;col2 centeralign&quot;&gt;  Galerie &lt;sup&gt;&lt;a href=&quot;#fn__17&quot; id=&quot;fnt__17&quot; class=&quot;fn_top&quot;&gt;17)&lt;/a&gt;&lt;/sup&gt;  &lt;/th&gt;&lt;th class=&quot;col3 centeralign&quot;&gt;  Wiki &lt;sup&gt;&lt;a href=&quot;#fn__18&quot; id=&quot;fnt__18&quot; class=&quot;fn_top&quot;&gt;18)&lt;/a&gt;&lt;/sup&gt;  &lt;/th&gt;&lt;th class=&quot;col4 centeralign&quot;&gt;  Shaarli &lt;sup&gt;&lt;a href=&quot;#fn__19&quot; id=&quot;fnt__19&quot; class=&quot;fn_top&quot;&gt;19)&lt;/a&gt;&lt;/sup&gt;  &lt;/th&gt;&lt;th class=&quot;col5 centeralign&quot;&gt;  Agrégateur RSS  &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Serveur web                &lt;/th&gt;&lt;td class=&quot;col1 centeralign&quot;&gt;  ✔                       &lt;/td&gt;&lt;td class=&quot;col2 centeralign&quot;&gt;  ✔                          &lt;/td&gt;&lt;td class=&quot;col3 centeralign&quot;&gt;  ✔            &lt;/td&gt;&lt;td class=&quot;col4 centeralign&quot;&gt;  ✔               &lt;/td&gt;&lt;td class=&quot;col5 centeralign&quot;&gt;  ✔               &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Service PHP                &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;                          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;                             &lt;/td&gt;&lt;td class=&quot;col3 centeralign&quot;&gt;  ✔            &lt;/td&gt;&lt;td class=&quot;col4 centeralign&quot;&gt;  ✔               &lt;/td&gt;&lt;td class=&quot;col5 centeralign&quot;&gt;  ✔               &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Base de données &lt;sup&gt;&lt;a href=&quot;#fn__20&quot; id=&quot;fnt__20&quot; class=&quot;fn_top&quot;&gt;20)&lt;/a&gt;&lt;/sup&gt;  &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;                          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;                             &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt;               &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt;                  &lt;/td&gt;&lt;td class=&quot;col5 centeralign&quot;&gt;  ✔               &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;4957-5544&amp;quot;} --&gt;
&lt;/div&gt;

&lt;h4 id=&quot;configuration_de_la_resolution_d_ip&quot;&gt;Configuration de la résolution d&amp;#039;IP&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Pour éviter d&amp;#039;utiliser des adresses IP et des numéros de port pour accéder aux différents services mis à disposition, il va falloir définir des noms de domaine locaux.
La configuration se passe dans le fichier &lt;code&gt;/etc/hosts&lt;/code&gt; dans lequel on va ajouter les lignes suivantes :
&lt;/p&gt;
&lt;pre class=&quot;code conf&quot;&gt;127.0.0.1       ainw.org.local
127.0.0.1       rss.local&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;mise_a_disposition_du_blog_et_de_la_galerie&quot;&gt;Mise à disposition du blog et de la galerie&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Pour cela, nous allons utiliser une image de &lt;code&gt;nginx&lt;/code&gt; et la configurer pour que les contenus statiques soient servis directement.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?do=export_code&amp;amp;id=informatique:projets:mise_en_place_d_une_copie_hors-ligne_de_mon_espace_personnel&amp;amp;codeblock=2&quot; title=&quot;Télécharger cet extrait&quot; class=&quot;mediafile mf_conf&quot;&gt;ainw.org.conf&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code nginx&quot;&gt;&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt;.html&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server_name&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server_name&lt;/span&gt;&lt;/a&gt; ainw.org.local&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/CoreModule#error_log&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;error_log&lt;/span&gt;&lt;/a&gt; /var/log/nginx/error.log&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpLogModule#access_log&quot;&gt;&lt;span class=&quot;kw20&quot;&gt;access_log&lt;/span&gt;&lt;/a&gt; /var/log/nginx/access.log&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#root&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;root&lt;/span&gt;&lt;/a&gt; /var/www/html&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?do=export_code&amp;amp;id=informatique:projets:mise_en_place_d_une_copie_hors-ligne_de_mon_espace_personnel&amp;amp;codeblock=3&quot; title=&quot;Télécharger cet extrait&quot; class=&quot;mediafile mf_yml&quot;&gt;docker-compose.yml&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code yaml&quot;&gt;&lt;span class=&quot;co4&quot;&gt;services&lt;/span&gt;:&lt;span class=&quot;co4&quot;&gt;
  web&lt;/span&gt;:&lt;span class=&quot;co3&quot;&gt;
    image&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;: &lt;/span&gt;nginx:latest&lt;span class=&quot;co4&quot;&gt;
    ports&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - &#039;80:80&#039;&lt;span class=&quot;co4&quot;&gt;
    volumes&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - /chemin/du/blog/local:/var/www/html:ro
      - /chemin/de/la/galerie/locale:/var/www/html/photos:ro
      - ./.docker/ainw.org.conf:/etc/nginx/conf.d/default.conf:ro&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Il ne reste plus qu&amp;#039;à lancer la commande &lt;code&gt;docker compose up --detach&lt;/code&gt; et accéder au blog ou à la galerie directement dans le navigateur.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_tip plugin_wrap&quot;&gt;
&lt;p&gt;
Il faut faire attention lors de la configuration des volumes.
Si plusieurs d&amp;#039;entre-eux ont la même cible, c&amp;#039;est le dernier défini qui sera réellement chargé.
C&amp;#039;est tout à fait normal, mais cela peut porter à confusion si on ne fait pas attention.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;

&lt;h4 id=&quot;mise_a_disposition_des_wikis_et_des_shaarlis&quot;&gt;Mise à disposition des wikis et des shaarlis&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Pour cela, nous allons utiliser une image de &lt;code&gt;PHP&lt;/code&gt; et modifier la configuration de &lt;code&gt;nginx&lt;/code&gt; pour interpréter les contenus dynamiques avant de les servir.
Les contenus statiques vont continuer à être servis directement.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?do=export_code&amp;amp;id=informatique:projets:mise_en_place_d_une_copie_hors-ligne_de_mon_espace_personnel&amp;amp;codeblock=4&quot; title=&quot;Télécharger cet extrait&quot; class=&quot;mediafile mf_conf&quot;&gt;ainw.org.conf&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code nginx&quot;&gt;&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt;.html &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt;.php&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server_name&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server_name&lt;/span&gt;&lt;/a&gt; ainw.org.local&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/CoreModule#error_log&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;error_log&lt;/span&gt;&lt;/a&gt; /var/log/nginx/error.log&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpLogModule#access_log&quot;&gt;&lt;span class=&quot;kw20&quot;&gt;access_log&lt;/span&gt;&lt;/a&gt; /var/log/nginx/access.log&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#root&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;root&lt;/span&gt;&lt;/a&gt; /var/www/html&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt; \.php$ &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#try_files&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;try_files&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;re0&quot;&gt;$uri&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;404&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_split_path_info&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_split_path_info&lt;/span&gt;&lt;/a&gt; ^&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.+\.php&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;/.+&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;$&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_pass&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_pass&lt;/span&gt;&lt;/a&gt; php-fpm:9000&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_index&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_index&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt;.php&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/CoreModule#include&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;include&lt;/span&gt;&lt;/a&gt; fastcgi_params&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt; SCRIPT_FILENAME &lt;span class=&quot;re0&quot;&gt;$document_root&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fastcgi_script_name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt; PATH_INFO &lt;span class=&quot;re0&quot;&gt;$fastcgi_path_info&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; 
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?do=export_code&amp;amp;id=informatique:projets:mise_en_place_d_une_copie_hors-ligne_de_mon_espace_personnel&amp;amp;codeblock=5&quot; title=&quot;Télécharger cet extrait&quot; class=&quot;mediafile mf_yml&quot;&gt;docker-compose.yml&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code yaml&quot;&gt;&lt;span class=&quot;co4&quot;&gt;services&lt;/span&gt;:&lt;span class=&quot;co4&quot;&gt;
  web&lt;/span&gt;:&lt;span class=&quot;co3&quot;&gt;
    image&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;: &lt;/span&gt;nginx:latest&lt;span class=&quot;co4&quot;&gt;
    ports&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - &#039;80:80&#039;&lt;span class=&quot;co4&quot;&gt;
    volumes&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - /chemin/du/blog/local:/var/www/html:ro
      - /chemin/de/la/galerie/locale:/var/www/html/photos:ro
      - ./src/shaarlis:/var/www/html/links
      - ./src/wiki1:/var/www/html/wiki1
      - ./src/wiki2:/var/www/html/wiki2
      - ./.docker/ainw.org.conf:/etc/nginx/conf.d/default.conf:ro&lt;span class=&quot;co4&quot;&gt;
    links&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - php-fpm
&lt;span class=&quot;co4&quot;&gt;
  php-fpm&lt;/span&gt;:&lt;span class=&quot;co3&quot;&gt;
    image&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;: &lt;/span&gt;php:8.3-fpm&lt;span class=&quot;co3&quot;&gt;
    user&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;: &lt;/span&gt;1000:1000&lt;span class=&quot;co4&quot;&gt;
    volumes&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - ./src:/var/www/html&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Il ne reste plus qu&amp;#039;à lancer la commande &lt;code&gt;docker compose up --detach&lt;/code&gt; et accéder aux wikis ou aux shaarlis directement dans le navigateur.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_tip plugin_wrap&quot;&gt;
&lt;p&gt;
La version de PHP à utiliser ici est 8.3.
Dokuwiki n&amp;#039;étant pas compatible avec la version 8.4.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;

&lt;h4 id=&quot;mise_a_disposition_de_l_agregateur_de_rss&quot;&gt;Mise à disposition de l&amp;#039;agrégateur de RSS&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Pour la cela, il va falloir configurer plusieurs choses.
Nous avons besoin :
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; d&amp;#039;une base de donnée – pour stocker les données de l&amp;#039;agrégateur.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; d&amp;#039;un serveur web – la configuration est différente de celle configurée précédemment.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; de PHP – la configuration est différente de celle configurée précédemment.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; d&amp;#039;un routeur de requête HTTP – pour diriger les requêtes reçues dur le serveur web approprié.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?do=export_code&amp;amp;id=informatique:projets:mise_en_place_d_une_copie_hors-ligne_de_mon_espace_personnel&amp;amp;codeblock=6&quot; title=&quot;Télécharger cet extrait&quot; class=&quot;mediafile mf_conf&quot;&gt;rss.conf&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code nginx&quot;&gt;&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt;.php &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt;.html &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt;.htm&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server_name&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server_name&lt;/span&gt;&lt;/a&gt; rss.local&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/CoreModule#error_log&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;error_log&lt;/span&gt;&lt;/a&gt; /var/log/nginx/rss.error.log&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpLogModule#access_log&quot;&gt;&lt;span class=&quot;kw20&quot;&gt;access_log&lt;/span&gt;&lt;/a&gt; /var/log/nginx/rss.access.log&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#root&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;root&lt;/span&gt;&lt;/a&gt; /var/www/html/p/&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt; ^.+?\.php&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;/.*&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;?$ &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_split_path_info&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_split_path_info&lt;/span&gt;&lt;/a&gt; ^&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.+\.php&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;/.+&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;$&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_pass&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_pass&lt;/span&gt;&lt;/a&gt; rss-php:9000&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/CoreModule#include&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;include&lt;/span&gt;&lt;/a&gt; fastcgi_params&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt; SCRIPT_FILENAME &lt;span class=&quot;re0&quot;&gt;$document_root&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fastcgi_script_name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt; PATH_INFO &lt;span class=&quot;re0&quot;&gt;$fastcgi_path_info&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; / &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#try_files&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;try_files&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;re0&quot;&gt;$uri&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$uri&lt;/span&gt;/ &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt;.php&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?do=export_code&amp;amp;id=informatique:projets:mise_en_place_d_une_copie_hors-ligne_de_mon_espace_personnel&amp;amp;codeblock=7&quot; title=&quot;Télécharger cet extrait&quot; class=&quot;mediafile mf_yml&quot;&gt;docker-compose.yml&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code yaml&quot;&gt;&lt;span class=&quot;co4&quot;&gt;services&lt;/span&gt;:&lt;span class=&quot;co4&quot;&gt;
  traefik&lt;/span&gt;:&lt;span class=&quot;co3&quot;&gt;
    image&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;: &lt;/span&gt;traefik:latest&lt;span class=&quot;co4&quot;&gt;
    command&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - &lt;span class=&quot;st0&quot;&gt;&amp;quot;--entryPoints.web.address=:80&amp;quot;&lt;/span&gt;
      - &lt;span class=&quot;st0&quot;&gt;&amp;quot;--api.insecure=true&amp;quot;&lt;/span&gt;
      - &lt;span class=&quot;st0&quot;&gt;&amp;quot;--providers.docker=true&amp;quot;&lt;/span&gt;
      - &lt;span class=&quot;st0&quot;&gt;&amp;quot;--providers.docker.exposedbydefault=false&amp;quot;&lt;/span&gt;&lt;span class=&quot;co4&quot;&gt;
    ports&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - &lt;span class=&quot;st0&quot;&gt;&amp;quot;80:80&amp;quot;&lt;/span&gt;
      - &lt;span class=&quot;st0&quot;&gt;&amp;quot;8888:8080&amp;quot;&lt;/span&gt;&lt;span class=&quot;co4&quot;&gt;
    volumes&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - &lt;span class=&quot;st0&quot;&gt;&amp;quot;/var/run/docker.sock:/var/run/docker.sock:ro&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;
  web&lt;/span&gt;:&lt;span class=&quot;co3&quot;&gt;
    image&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;: &lt;/span&gt;nginx:latest&lt;span class=&quot;co4&quot;&gt;
    labels&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - &lt;span class=&quot;st0&quot;&gt;&amp;quot;traefik.enable=true&amp;quot;&lt;/span&gt;
      - &lt;span class=&quot;st0&quot;&gt;&amp;quot;traefik.http.routers.ainw.rule=Host(`ainw.org.local`)&amp;quot;&lt;/span&gt;&lt;span class=&quot;co4&quot;&gt;
    volumes&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - ~/Workspace/ainw.org/output:/var/www/html:ro
      - ~/Workspace/photos.ainw.org/_build:/var/www/html/photos:ro
      - ./src/links:/var/www/html/links
      - ./src/j8c2v3:/var/www/html/j8c2v3
      - ./src/wiki:/var/www/html/wiki
      - ./.docker/ainw.org.conf:/etc/nginx/conf.d/default.conf:ro&lt;span class=&quot;co4&quot;&gt;
    links&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - web-php
&lt;span class=&quot;co4&quot;&gt;
  web-php&lt;/span&gt;:&lt;span class=&quot;co3&quot;&gt;
    image&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;: &lt;/span&gt;php:8.3-fpm&lt;span class=&quot;co3&quot;&gt;
    user&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;: &lt;/span&gt;1000:1000&lt;span class=&quot;co4&quot;&gt;
    volumes&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - ./src/links:/var/www/html/links
      - ./src/j8c2v3:/var/www/html/j8c2v3
      - ./src/wiki:/var/www/html/wiki
&lt;span class=&quot;co4&quot;&gt;
  rss&lt;/span&gt;:&lt;span class=&quot;co3&quot;&gt;
    image&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;: &lt;/span&gt;nginx:latest&lt;span class=&quot;co4&quot;&gt;
    labels&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - &lt;span class=&quot;st0&quot;&gt;&amp;quot;traefik.enable=true&amp;quot;&lt;/span&gt;
      - &lt;span class=&quot;st0&quot;&gt;&amp;quot;traefik.http.routers.rss.rule=Host(`rss.local`)&amp;quot;&lt;/span&gt;&lt;span class=&quot;co4&quot;&gt;
    volumes&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - ./src/freshrss:/var/www/html
      - ./.docker/rss.conf:/etc/nginx/conf.d/default.conf:ro&lt;span class=&quot;co4&quot;&gt;
    links&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - rss-php
      - db
&lt;span class=&quot;co4&quot;&gt;
  rss-php&lt;/span&gt;:&lt;span class=&quot;co3&quot;&gt;
    build&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;: &lt;/span&gt;./.docker/rss-php&lt;span class=&quot;co3&quot;&gt;
    user&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;: &lt;/span&gt;1000:1000&lt;span class=&quot;co4&quot;&gt;
    volumes&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - ./src/freshrss:/var/www/html&lt;span class=&quot;co4&quot;&gt;
    links&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - db
&lt;span class=&quot;co4&quot;&gt;
  db&lt;/span&gt;:&lt;span class=&quot;co3&quot;&gt;
    image&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;: &lt;/span&gt;mysql:latest&lt;span class=&quot;co3&quot;&gt;
    container_name&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;: &lt;/span&gt;mysql.ainw.org&lt;span class=&quot;co4&quot;&gt;
    ports&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - &lt;span class=&quot;st0&quot;&gt;&amp;quot;3306:3306&amp;quot;&lt;/span&gt;&lt;span class=&quot;co4&quot;&gt;
    environment&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - MYSQL_ALLOW_EMPTY_PASSWORD=true
      - MYSQL_DATABASE=ainw_rss
      - MYSQL_USER=&amp;lt;user&lt;span class=&quot;sy2&quot;&gt;&amp;gt;
&lt;/span&gt;      - MYSQL_PASSWORD=&amp;lt;pwd&amp;gt;&lt;span class=&quot;co4&quot;&gt;
    volumes&lt;/span&gt;&lt;span class=&quot;sy2&quot;&gt;:
&lt;/span&gt;      - ./src/db:/var/lib/mysql:rw&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?do=export_code&amp;amp;id=informatique:projets:mise_en_place_d_une_copie_hors-ligne_de_mon_espace_personnel&amp;amp;codeblock=8&quot; title=&quot;Télécharger cet extrait&quot; class=&quot;mediafile mf_&quot;&gt;Dockerfile&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code&quot;&gt;FROM php:8.3-fpm
RUN apt-get update &amp;amp;&amp;amp; apt-get install --yes --no-install-recommends \
    libcurl4-openssl-dev \
    libgmp-dev \
    libicu-dev \
    libonig-dev \
    libxml2-dev \
    libzip-dev \
    &amp;amp;&amp;amp; docker-php-ext-install curl gmp intl mbstring pdo pdo_mysql xml zip \
    &amp;amp;&amp;amp; docker-php-ext-enable curl gmp intl mbstring pdo pdo_mysql xml zip&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Il ne reste plus qu&amp;#039;à lancer la commande &lt;code&gt;docker compose up --detach&lt;/code&gt; et accéder à l&amp;#039;agrégateur directement dans le navigateur.
&lt;/p&gt;

&lt;p&gt;
À cette étape, cela fonctionne mais il manque encore quelque chose, les données.
Il reste donc à les importer pour que l&amp;#039;ensemble soit fonctionnel.
Pour cela, il suffit de lancer la commande suivante :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;docker compose exec --no-tty db mysql -u root &amp;lt; mysqldump.sql&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mise \u00e0 disposition localement&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mise_a_disposition_localement&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;4599-12299&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit18&quot; id=&quot;automatisation&quot;&gt;Automatisation&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
C&amp;#039;est plus un regroupement des commandes dans un fichier &lt;code&gt;Makefile&lt;/code&gt; pour ne pas avoir à me souvenir de chaque commande pour refaire mon environnement hors-ligne.
&lt;/p&gt;
&lt;pre class=&quot;code make&quot;&gt;&lt;span class=&quot;co1&quot;&gt;##@ General&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;.PHONY&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; help
help&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;## Display this help.&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;awk &lt;span class=&quot;st0&quot;&gt;&#039;BEGIN {FS = &amp;quot;:.*##&amp;quot;; printf &amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;Usage:&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;  make &lt;span class=&quot;es0&quot;&gt;\0&lt;/span&gt;33[36m&amp;lt;target&amp;gt;&lt;span class=&quot;es0&quot;&gt;\0&lt;/span&gt;33[0m&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;} /^[a-zA-Z_0-9-]+:.*?##/ { printf &amp;quot;  &lt;span class=&quot;es0&quot;&gt;\0&lt;/span&gt;33[36m%-15s&lt;span class=&quot;es0&quot;&gt;\0&lt;/span&gt;33[0m %s&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;, $$1, $$2 } /^##@/ { printf &amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\0&lt;/span&gt;33[1m%s&lt;span class=&quot;es0&quot;&gt;\0&lt;/span&gt;33[0m&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;, substr($$0, 5) } &#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;MAKEFILE_LIST&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;##@ Container actions&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;.PHONY&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; build
build&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;## Build containers&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;docker compose build
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;.PHONY&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; load
load&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;## Load database dump&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;docker compose exec &lt;span class=&quot;sy0&quot;&gt;--&lt;/span&gt;no&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;tty db mysql &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;u root &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;./&lt;/span&gt;src&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mysqldump&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;sql
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;.PHONY&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; serve
serve&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;## Serve offline content locally&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;docker compose up &lt;span class=&quot;sy0&quot;&gt;--&lt;/span&gt;detach &lt;span class=&quot;sy0&quot;&gt;--&lt;/span&gt;remove&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;orphans&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Automatisation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;automatisation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;12300-13126&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;lectures_utiles&quot;&gt;Lectures utiles&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://doc.traefik.io/traefik/expose/docker/&quot; class=&quot;urlextern&quot; title=&quot;https://doc.traefik.io/traefik/expose/docker/&quot; rel=&quot;ugc nofollow&quot;&gt;Docker - Traefik&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://marc.it/dockerize-application-with-nginx-and-php8/&quot; class=&quot;urlextern&quot; title=&quot;https://marc.it/dockerize-application-with-nginx-and-php8/&quot; rel=&quot;ugc nofollow&quot;&gt;Dockerize your PHP application with Nginx and PHP8-FPM — marc.IT Digital Solutions&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/docker/compose/issues/3352#issuecomment-221526576&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/docker/compose/issues/3352#issuecomment-221526576&quot; rel=&quot;ugc nofollow&quot;&gt;error on launching docker-compose by piping to sh ( echo &amp;#039;docker-compose ... &amp;#039; | sh ) · Issue #3352 · docker/compose&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://community.caribbean.dev/t/how-can-i-import-a-sql-file-once-i-start-up-my-docker-compose-file/295&quot; class=&quot;urlextern&quot; title=&quot;https://community.caribbean.dev/t/how-can-i-import-a-sql-file-once-i-start-up-my-docker-compose-file/295&quot; rel=&quot;ugc nofollow&quot;&gt;How can I import a .sql file once I start up my docker-compose file? - CTC Community Forum&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.serverlab.ca/tutorials/linux/database-servers/how-to-create-a-credential-file-for-mysql/&quot; class=&quot;urlextern&quot; title=&quot;https://www.serverlab.ca/tutorials/linux/database-servers/how-to-create-a-credential-file-for-mysql/&quot; rel=&quot;ugc nofollow&quot;&gt;How to create a credential file for MySQL - Serverlab&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_no-tablespaces&quot; class=&quot;urlextern&quot; title=&quot;https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_no-tablespaces&quot; rel=&quot;ugc nofollow&quot;&gt;MySQL :: MySQL 8.0 Reference Manual :: 6.5.4 mysqldump — A Database Backup Program&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://dev.mysql.com/doc/refman/8.4/en/grant.html&quot; class=&quot;urlextern&quot; title=&quot;https://dev.mysql.com/doc/refman/8.4/en/grant.html&quot; rel=&quot;ugc nofollow&quot;&gt;MySQL :: MySQL 8.4 Reference Manual :: 15.7.1.6 GRANT Statement&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.patreon.com/posts/42961375&quot; class=&quot;urlextern&quot; title=&quot;https://www.patreon.com/posts/42961375&quot; rel=&quot;ugc nofollow&quot;&gt;Running DokuWiki on Docker | Patreon&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://help.dreamhost.com/hc/en-us/articles/221686207-SSH-Backing-up-your-database&quot; class=&quot;urlextern&quot; title=&quot;https://help.dreamhost.com/hc/en-us/articles/221686207-SSH-Backing-up-your-database&quot; rel=&quot;ugc nofollow&quot;&gt;SSH — Backing up your database – DreamHost Knowledge Base&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://doc.traefik.io/traefik/reference/routing-configuration/http/load-balancing/service/&quot; class=&quot;urlextern&quot; title=&quot;https://doc.traefik.io/traefik/reference/routing-configuration/http/load-balancing/service/&quot; rel=&quot;ugc nofollow&quot;&gt;Traefik HTTP Services Documentation - Traefik&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://doc.traefik.io/traefik/routing/routers/&quot; class=&quot;urlextern&quot; title=&quot;https://doc.traefik.io/traefik/routing/routers/&quot; rel=&quot;ugc nofollow&quot;&gt;Traefik Routers Documentation - Traefik&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lectures utiles&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lectures_utiles&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;13127-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__12&quot; id=&quot;fn__12&quot; class=&quot;fn_bot&quot;&gt;12)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;blog, wiki, etc.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__13&quot; id=&quot;fn__13&quot; class=&quot;fn_bot&quot;&gt;13)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;fermeture de l&amp;#039;hébergeur, coupure d&amp;#039;internet, etc.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__14&quot; id=&quot;fn__14&quot; class=&quot;fn_bot&quot;&gt;14)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?id=obsolete:informatique:projets:sauvegarde_donnees&quot; class=&quot;wikilink1&quot; title=&quot;obsolete:informatique:projets:sauvegarde_donnees&quot; data-wiki-id=&quot;obsolete:informatique:projets:sauvegarde_donnees&quot;&gt;Mise en place de sauvegardes&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__15&quot; id=&quot;fn__15&quot; class=&quot;fn_bot&quot;&gt;15)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;J&amp;#039;aurais pu choisir un autre moyen, mais c&amp;#039;est celui que je connais le mieux.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__16&quot; id=&quot;fn__16&quot; class=&quot;fn_bot&quot;&gt;16)&lt;/a&gt;&lt;/sup&gt; 
, &lt;sup&gt;&lt;a href=&quot;#fnt__17&quot; id=&quot;fn__17&quot; class=&quot;fn_bot&quot;&gt;17)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;site statique&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__18&quot; id=&quot;fn__18&quot; class=&quot;fn_bot&quot;&gt;18)&lt;/a&gt;&lt;/sup&gt; 
, &lt;sup&gt;&lt;a href=&quot;#fnt__19&quot; id=&quot;fn__19&quot; class=&quot;fn_bot&quot;&gt;19)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;x2&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__20&quot; id=&quot;fn__20&quot; class=&quot;fn_bot&quot;&gt;20)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;mysql&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 13 Oct 2025 12:50:51 +0000</pubDate>
        </item>
        <item>
            <title>mise_en_place_de_sauvegardes</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:projets:mise_en_place_de_sauvegardes&amp;rev=1754171912&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;mise_en_place_de_sauvegardes&quot;&gt;Mise en place de sauvegardes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mise en place de sauvegardes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mise_en_place_de_sauvegardes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-44&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;mise_en_contexte&quot;&gt;Mise en contexte&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Avec les ordinateurs, il y a 2 types d&amp;#039;utilisateurs. Ceux qui ont déjà perdu des données et ceux qui vont en perdre. Généralement, les premiers mettent en place des systèmes pour parer à cet évènement, tandis que les autres vivent dans l&amp;#039;insouciance la plus totale. Je fais partie de la première catégorie depuis de nombreuses années et voici ce que j&amp;#039;ai fait pour ne plus avoir à vivre avec la peur de perdre mon travail, mes photos et autres documents importants.
&lt;/p&gt;

&lt;p&gt;
Pour avoir un système de sauvegardes efficaces, il faut respecter la règle &lt;code&gt;3-2-1&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;#fn__21&quot; id=&quot;fnt__21&quot; class=&quot;fn_top&quot;&gt;21)&lt;/a&gt;&lt;/sup&gt;:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;span class=&quot;wrap_hi &quot;&gt;Avoir 3 sauvegardes différentes&lt;/span&gt;,&lt;br/&gt;
des copies dans des répertoires différents ne compte pas. Il faut avoir 3 copies sur des supports différents.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;span class=&quot;wrap_hi &quot;&gt;Avoir 2 types de support différents pour les sauvegardes&lt;/span&gt;,&lt;br/&gt;
utiliser 3 disques dur ne fonctionne pas car les mêmes types de supports sont sujet aux mêmes défaillances.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;span class=&quot;wrap_hi &quot;&gt;Avoir 1 supports à un emplacement différent&lt;/span&gt;,&lt;br/&gt;
car nul n&amp;#039;est à l&amp;#039;abri d&amp;#039;un vol, d&amp;#039;un incendie ou tout autre évènement qui pourrait détruire les données.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
À cela, j&amp;#039;ajouterai les règles suivantes :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Il faut tester ses sauvegardes régulièrement car des sauvegardes desquelles on ne peut pas récupérer de données sont des sauvegardes inutiles.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Il faut sauvegarder régulièrement pour perdre le moins possible de choses en cas de défaillance.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mise en contexte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mise_en_contexte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;45-1694&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;identification_des_donnees_importantes&quot;&gt;Identification des données importantes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Toutes les données n&amp;#039;ont pas le même niveau d&amp;#039;importance.
Certaines sont inestimables (ex : photos d&amp;#039;un enfant, fiche de paie, …), d&amp;#039;autres sont très facilement remplaçables (ex : vidéo téléchargée, fichier de cache, …).
Avant de mettre en place une stratégie de sauvegarde, il faut donc identifier les données qu&amp;#039;il faut conserver ainsi que le niveau de sécurité souhaité.
&lt;/p&gt;

&lt;p&gt;
J&amp;#039;ai identifié plusieurs catégories de données à sauvegarder :
&lt;/p&gt;
&lt;div class=&quot;table sectionedit4&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Type de donnée  &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Fichiers concernés                                                  &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Stratégie de sauvegarde                                  &lt;/th&gt;&lt;th class=&quot;col3 leftalign&quot;&gt; Volume de données  &lt;/th&gt;&lt;th class=&quot;col4 leftalign&quot;&gt; Emplacement                                                                                                                                             &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot; rowspan=&quot;4&quot;&gt; Critique        &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Fichiers de gestion de mots de passe                                &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot; rowspan=&quot;4&quot;&gt; Sauvegarde sur un minimum de 5 supports + export papier  &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; 1 Mo               &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot; rowspan=&quot;4&quot;&gt; En ligne &lt;sup&gt;&lt;a href=&quot;#fn__22&quot; id=&quot;fnt__22&quot; class=&quot;fn_top&quot;&gt;22)&lt;/a&gt;&lt;/sup&gt; + 2 disques dur externes + 2 clés USB + 1 carte mémoire flash + export papier &lt;sup&gt;&lt;a href=&quot;#fn__23&quot; id=&quot;fnt__23&quot; class=&quot;fn_top&quot;&gt;23)&lt;/a&gt;&lt;/sup&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Clés SSH                                                            &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; 10 Ko              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Fichiers de récupération d&amp;#039;accès                                    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; 1 Ko               &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Fichiers de génération de ma liste de contacts                      &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; 1 Mo               &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot; rowspan=&quot;4&quot;&gt; Irremplaçable   &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Photos personnelles                                                 &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot; rowspan=&quot;7&quot;&gt; Sauvegarde normale de type &lt;code&gt;3-2-1&lt;/code&gt;                     &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; ≈ 50 Mo            &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot; rowspan=&quot;7&quot;&gt; En ligne &lt;sup&gt;&lt;a href=&quot;#fn__24&quot; id=&quot;fnt__24&quot; class=&quot;fn_top&quot;&gt;24)&lt;/a&gt;&lt;/sup&gt; + 2 disques dur externes                                                                                    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Vidéos personnelles                                                 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; ≈ 500 Mo           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Projets personnels                                                  &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; ≈ 25 Go            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Documents administratifs &lt;sup&gt;&lt;a href=&quot;#fn__25&quot; id=&quot;fnt__25&quot; class=&quot;fn_top&quot;&gt;25)&lt;/a&gt;&lt;/sup&gt;  &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; ≈ 1 Go             &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot; rowspan=&quot;4&quot;&gt; Confort         &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Fichiers de configuration &lt;sup&gt;&lt;a href=&quot;#fn__26&quot; id=&quot;fnt__26&quot; class=&quot;fn_top&quot;&gt;26)&lt;/a&gt;&lt;/sup&gt;        &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; ≈ 150 Mo           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Fichiers achetés &lt;sup&gt;&lt;a href=&quot;#fn__27&quot; id=&quot;fnt__27&quot; class=&quot;fn_top&quot;&gt;27)&lt;/a&gt;&lt;/sup&gt;     &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; ≈ 14 Go            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Fichiers glanés &lt;sup&gt;&lt;a href=&quot;#fn__28&quot; id=&quot;fnt__28&quot; class=&quot;fn_top&quot;&gt;28)&lt;/a&gt;&lt;/sup&gt;   &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; ≈ 8 Go             &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row12&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Musique                                                             &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Sauvegarde allégée                                       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; ≈ 90 Go            &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; 2 disques dur externes                                                                                                                                  &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2206-6456&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Identification des donn\u00e9es importantes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;identification_des_donnees_importantes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1695-6457&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;mise_en_place&quot;&gt;Mise en place&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mise en place&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mise_en_place&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;6458-6484&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;sauvegarde_allegee&quot;&gt;Sauvegarde allégée&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Pour cela, j&amp;#039;utilise &lt;a href=&quot;https://wiki.archlinux.org/title/Borg_backup&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.archlinux.org/title/Borg_backup&quot; rel=&quot;ugc nofollow&quot;&gt;Borg backup&lt;/a&gt;.
Et pour me faciliter la tâche, je ne l&amp;#039;utilise pas directement mais à travers &lt;a href=&quot;https://wiki.archlinux.org/title/Borgmatic&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.archlinux.org/title/Borgmatic&quot; rel=&quot;ugc nofollow&quot;&gt;Borgmatic&lt;/a&gt;.
Il n&amp;#039;y a pas grand chose à ajouter à cela, étant donné que les documentations existantes sont très bien fournies.
&lt;/p&gt;

&lt;p&gt;
La seule chose un peu particulière que j&amp;#039;ai faite est de mettre plusieurs &lt;em&gt;repository&lt;/em&gt; &lt;sup&gt;&lt;a href=&quot;#fn__29&quot; id=&quot;fnt__29&quot; class=&quot;fn_top&quot;&gt;29)&lt;/a&gt;&lt;/sup&gt; dans le fichier de configuration afin d&amp;#039;avoir la même configuration pour chacun de mes supports.
J&amp;#039;ai aussi ajouté 1 règles dans mon fichier &lt;code&gt;Makefile&lt;/code&gt; pour lancer facilement la sauvegarde.
&lt;/p&gt;

&lt;p&gt;
Documentations utiles :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.borgbase.com/&quot; class=&quot;urlextern&quot; title=&quot;https://www.borgbase.com/&quot; rel=&quot;ugc nofollow&quot;&gt;BorgBase - Simple and Secure Offsite Backups&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://projects.torsion.org/borgmatic-collective/borgmatic&quot; class=&quot;urlextern&quot; title=&quot;https://projects.torsion.org/borgmatic-collective/borgmatic&quot; rel=&quot;ugc nofollow&quot;&gt;Code repository&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://torsion.org/borgmatic/docs/reference/configuration/&quot; class=&quot;urlextern&quot; title=&quot;https://torsion.org/borgmatic/docs/reference/configuration/&quot; rel=&quot;ugc nofollow&quot;&gt;Configuration reference&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://torsion.org/borgmatic/docs/how-to/make-backups-redundant/&quot; class=&quot;urlextern&quot; title=&quot;https://torsion.org/borgmatic/docs/how-to/make-backups-redundant/&quot; rel=&quot;ugc nofollow&quot;&gt;How to make backups redundant&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://torsion.org/borgmatic/docs/how-to/provide-your-passwords/&quot; class=&quot;urlextern&quot; title=&quot;https://torsion.org/borgmatic/docs/how-to/provide-your-passwords/&quot; rel=&quot;ugc nofollow&quot;&gt;How to provide your passwords&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_info plugin_wrap&quot;&gt;
&lt;p&gt;
Par le passé, j&amp;#039;avais des scripts similaires &lt;sup&gt;&lt;a href=&quot;#fn__30&quot; id=&quot;fnt__30&quot; class=&quot;fn_top&quot;&gt;30)&lt;/a&gt;&lt;/sup&gt; qui étaient tous déclenchés par &lt;code&gt;systemd&lt;/code&gt;.
J&amp;#039;ai décidé de simplifier ça en ayant un seul script qui sera lancé manuellement.
Je me dis que si je fais l&amp;#039;effort d&amp;#039;insérer mes supports amovibles sur mon ordinateur, je peux aussi lancer un simple script.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sauvegarde all\u00e9g\u00e9e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sauvegarde_allegee&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;6485-8020&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;sauvegarde_normale&quot;&gt;Sauvegarde normale&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
La sauvegarde normale reprend ce qui a été fait dans la sauvegarde allégée et ajoute la sauvegarde en ligne.
&lt;/p&gt;

&lt;p&gt;
Pour la sauvegarde en ligne, j&amp;#039;utilise le service &lt;a href=&quot;https://www.borgbase.com/&quot; class=&quot;urlextern&quot; title=&quot;https://www.borgbase.com/&quot; rel=&quot;ugc nofollow&quot;&gt;BorgBase&lt;/a&gt; qui permet de faire des sauvegardes chiffrées localement &lt;sup&gt;&lt;a href=&quot;#fn__31&quot; id=&quot;fnt__31&quot; class=&quot;fn_top&quot;&gt;31)&lt;/a&gt;&lt;/sup&gt; et de les envoyer par incréments.
&lt;/p&gt;

&lt;p&gt;
J&amp;#039;ai utilisé les mêmes outils que pour la sauvegarde allégée, à savoir Borg et borgmatic.
J&amp;#039;ai configuré borgmatic pour que les mots de passe d&amp;#039;accès au service soit récupérés automatiquement dans mon gestionnaire de mot de passe.
Il faut que j&amp;#039;ajoute &lt;sup&gt;&lt;a href=&quot;#fn__32&quot; id=&quot;fnt__32&quot; class=&quot;fn_top&quot;&gt;32)&lt;/a&gt;&lt;/sup&gt; les clés SSH à l&amp;#039;agent de gestion des clés car il n&amp;#039;y a pas d&amp;#039;outils disponible nativement dans borgmatic pour le faire.
C&amp;#039;est un petit inconvénient mineur et j&amp;#039;essayerai de régler ça quand j&amp;#039;aurai le goût.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sauvegarde normale&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sauvegarde_normale&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;8021-8914&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;sauvegarde_critique&quot;&gt;Sauvegarde critique&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
La sauvegarde critique reprend ce qui a été fait dans la sauvegarde normale et ajoute la sauvegarde sur petits supports amovibles &lt;sup&gt;&lt;a href=&quot;#fn__33&quot; id=&quot;fnt__33&quot; class=&quot;fn_top&quot;&gt;33)&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;

&lt;p&gt;
Ici, je n&amp;#039;utilise pas de sauvegarde incrémentale car la volumétrie est très faible &lt;sup&gt;&lt;a href=&quot;#fn__34&quot; id=&quot;fnt__34&quot; class=&quot;fn_top&quot;&gt;34)&lt;/a&gt;&lt;/sup&gt;.
J&amp;#039;ai écrit un script tout simple qui valide la présence du support et qui fait une copie des fichiers critiques avec &lt;code&gt;rsync&lt;/code&gt;.
La commande utilisée est la suivante :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;rsync &lt;span class=&quot;re5&quot;&gt;--archive&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--quiet&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--compress&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--exclude&lt;/span&gt;=build &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;fichier1&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;fichier2&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; ... &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;fichiern&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;destination&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
J&amp;#039;ai également ajouté une règle dans mon fichier &lt;code&gt;Makefile&lt;/code&gt; pour me simplifier la vie.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_info plugin_wrap&quot;&gt;
&lt;p&gt;
Par le passé, j&amp;#039;avais des scripts similaires &lt;sup&gt;&lt;a href=&quot;#fn__35&quot; id=&quot;fnt__35&quot; class=&quot;fn_top&quot;&gt;35)&lt;/a&gt;&lt;/sup&gt; qui étaient tous déclenchés par &lt;code&gt;systemd&lt;/code&gt;.
J&amp;#039;ai décidé de simplifier ça en ayant un seul script qui sera lancé manuellement.
Je me dis que si je fais l&amp;#039;effort d&amp;#039;insérer mes supports amovibles sur mon ordinateur, je peux aussi lancer un simple script.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_help plugin_wrap&quot;&gt;
&lt;p&gt;
Je suis encore en train de me questionner sur la pertinence de faire une sauvegarde de mes données critiques sur papier.
C&amp;#039;est facile à mettre en place mais il a tellement de vecteurs d&amp;#039;attaque possibles que je me demande si je vais le faire ou pas.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sauvegarde critique&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sauvegarde_critique&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;8915-10309&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;recuperation_de_fichiers&quot;&gt;Récupération de fichiers&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;R\u00e9cup\u00e9ration de fichiers&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;recuperation_de_fichiers&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;10310-10349&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;sauvegarde_geree_par_rsync&quot;&gt;Sauvegarde gérée par rsync&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Ici, c&amp;#039;est trivial.
Il suffit de brancher le support et de récupérer les fichiers désirés.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sauvegarde g\u00e9r\u00e9e par rsync&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sauvegarde_geree_par_rsync&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;10350-10485&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;sauvegarde_geree_par_borg_borgmatic&quot;&gt;Sauvegarde gérée par borg/borgmatic&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Ici, ce n&amp;#039;est pas beaucoup plus compliqué.
Il existe plusieurs méthodes mais la plus simple est de monter la sauvegarde dans le système de fichiers et de naviguer dans l&amp;#039;arborescence.
&lt;/p&gt;

&lt;p&gt;
Tout est décrit dans &lt;a href=&quot;https://torsion.org/borgmatic/docs/how-to/extract-a-backup/&quot; class=&quot;urlextern&quot; title=&quot;https://torsion.org/borgmatic/docs/how-to/extract-a-backup/&quot; rel=&quot;ugc nofollow&quot;&gt;cette documentation&lt;/a&gt;.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_tip plugin_wrap&quot;&gt;
&lt;p&gt;
Il faudra installer la bibliothèque &lt;a href=&quot;https://archlinux.org/packages/extra/x86_64/python-llfuse/&quot; class=&quot;urlextern&quot; title=&quot;https://archlinux.org/packages/extra/x86_64/python-llfuse/&quot; rel=&quot;ugc nofollow&quot;&gt;python-llfuse&lt;/a&gt; pour pouvoir monter les sauvegardes dans le système de fichiers avec borgmatic.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sauvegarde g\u00e9r\u00e9e par borg\/borgmatic&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sauvegarde_geree_par_borg_borgmatic&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;10486-11045&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;lectures_utiles&quot;&gt;Lectures utiles&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.borgbackup.org/&quot; class=&quot;urlextern&quot; title=&quot;https://www.borgbackup.org/&quot; rel=&quot;ugc nofollow&quot;&gt;BorgBackup – Deduplicating archiver with compression and authenticated encryption&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://sebsauvage.net/wiki/doku.php?id=borgbackup&quot; class=&quot;urlextern&quot; title=&quot;https://sebsauvage.net/wiki/doku.php?id=borgbackup&quot; rel=&quot;ugc nofollow&quot;&gt;BorgBackup [Wiki de sebsauvage.net]&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://web.archive.org/web/20210122104057/https://www.blog-libre.org/2016/08/21/borgbackup-borg-pour-les-intimes/&quot; class=&quot;urlextern&quot; title=&quot;https://web.archive.org/web/20210122104057/https://www.blog-libre.org/2016/08/21/borgbackup-borg-pour-les-intimes/&quot; rel=&quot;ugc nofollow&quot;&gt;BorgBackup, borg pour les intimes – Blog Libre&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://blog.genma.fr/?Des-interfaces-graphiques-a-Borg&quot; class=&quot;urlextern&quot; title=&quot;https://blog.genma.fr/?Des-interfaces-graphiques-a-Borg&quot; rel=&quot;ugc nofollow&quot;&gt;Des interfaces graphiques à Borg ? - Le blog de Genma&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://linuxfr.org/news/installer-borgbackup-sur-un-nas&quot; class=&quot;urlextern&quot; title=&quot;https://linuxfr.org/news/installer-borgbackup-sur-un-nas&quot; rel=&quot;ugc nofollow&quot;&gt;Installer BorgBackup sur un NAS - LinuxFr.org&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://blog.genma.fr/?Retour-d-experience-avec-Borg-comme-outil-de-sauvegarde&quot; class=&quot;urlextern&quot; title=&quot;https://blog.genma.fr/?Retour-d-experience-avec-Borg-comme-outil-de-sauvegarde&quot; rel=&quot;ugc nofollow&quot;&gt;Retour d&amp;#039;expérience avec Borg comme outil de sauvegarde - Le blog de Genma&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lectures utiles&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lectures_utiles&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;11046-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__21&quot; id=&quot;fn__21&quot; class=&quot;fn_bot&quot;&gt;21)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;a href=&quot;https://www.sauvegardedefichiers.fr/respecter-la-regle-de-sauvegarde-3-2-1-pour-ne-pas-perdre-ses-donnees00733&quot; class=&quot;urlextern&quot; title=&quot;https://www.sauvegardedefichiers.fr/respecter-la-regle-de-sauvegarde-3-2-1-pour-ne-pas-perdre-ses-donnees00733&quot; rel=&quot;ugc nofollow&quot;&gt;Règle de sauvegarde 3-2-1 : Protégez vos données efficacement - Sauvegarde de fichiers&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__22&quot; id=&quot;fn__22&quot; class=&quot;fn_bot&quot;&gt;22)&lt;/a&gt;&lt;/sup&gt; 
, &lt;sup&gt;&lt;a href=&quot;#fnt__24&quot; id=&quot;fn__24&quot; class=&quot;fn_bot&quot;&gt;24)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;sauvegarde chiffrée localement&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__23&quot; id=&quot;fn__23&quot; class=&quot;fn_bot&quot;&gt;23)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;dans un endroit sécurisé&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__25&quot; id=&quot;fn__25&quot; class=&quot;fn_bot&quot;&gt;25)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;fiches de paie, relevés bancaire, …&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__26&quot; id=&quot;fn__26&quot; class=&quot;fn_bot&quot;&gt;26)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;code&gt;Makefile&lt;/code&gt;, &lt;code&gt;.config&lt;/code&gt;, …&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__27&quot; id=&quot;fn__27&quot; class=&quot;fn_bot&quot;&gt;27)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;patrons de couture, patrons de tricot, …&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__28&quot; id=&quot;fn__28&quot; class=&quot;fn_bot&quot;&gt;28)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;recettes de cuisine, diagramme d&amp;#039;origami, …&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__29&quot; id=&quot;fn__29&quot; class=&quot;fn_bot&quot;&gt;29)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;1 par disque dur de sauvegarde&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__30&quot; id=&quot;fn__30&quot; class=&quot;fn_bot&quot;&gt;30)&lt;/a&gt;&lt;/sup&gt; 
, &lt;sup&gt;&lt;a href=&quot;#fnt__35&quot; id=&quot;fn__35&quot; class=&quot;fn_bot&quot;&gt;35)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;un pour chaque support&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__31&quot; id=&quot;fn__31&quot; class=&quot;fn_bot&quot;&gt;31)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;le service n&amp;#039;a pas accès à la clé de chiffrement&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__32&quot; id=&quot;fn__32&quot; class=&quot;fn_bot&quot;&gt;32)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;manuellement ou par KeepassXC&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__33&quot; id=&quot;fn__33&quot; class=&quot;fn_bot&quot;&gt;33)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;clés USB et carte mémoire Flash&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__34&quot; id=&quot;fn__34&quot; class=&quot;fn_bot&quot;&gt;34)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;j&amp;#039;utilise encore une clé d&amp;#039;une autre époque, sa capacité est de &lt;em class=&quot;u&quot;&gt;64 Mo&lt;/em&gt; uniquement&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 02 Aug 2025 21:58:32 +0000</pubDate>
        </item>
        <item>
            <title>recuperation_notes</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:projets:recuperation_notes&amp;rev=1732469300&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;recuperation_de_notes_depuis_un_telephone_lg&quot;&gt;Récupération de notes depuis un téléphone LG&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Sur mon vieux téléphone LG, j&amp;#039;utilise QuickMemo+ &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; pour prendre des notes quand je ne suis pas connecté à un réseau car je n&amp;#039;ai pas de données.
Le problème est qu&amp;#039;il n&amp;#039;est pas aisé d&amp;#039;extraire les informations textuelles pour les partager.
Il a fallu que je trouve un moyen pour y accéder.
&lt;/p&gt;

&lt;p&gt;
La récupération s&amp;#039;effectue selon le principe &lt;em&gt;ETL&lt;/em&gt; (&lt;em&gt;&lt;strong&gt;E&lt;/strong&gt;xtraction, &lt;strong&gt;T&lt;/strong&gt;ransfert, &lt;strong&gt;L&lt;/strong&gt;ecture&lt;/em&gt;) :
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Extraction&lt;/strong&gt;&lt;br/&gt;

C&amp;#039;est la partie simple de la récupération.
Il suffit d&amp;#039;aller dans le menu de la note à récupérer et de sélectionner l&amp;#039;action d&amp;#039;export. Cela génèrera un fichier avec une extension &lt;em&gt;lqm&lt;/em&gt;.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_tip plugin_wrap&quot;&gt;
&lt;p&gt;
Attention à bien noter le chemin d&amp;#039;accès au fichier.
Dans mon cas, il s&amp;#039;agit de &lt;code&gt;/storage/emulated/0/QuickMemo+&lt;/code&gt;.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
&lt;strong&gt;Transfert&lt;/strong&gt;&lt;br/&gt;

Pour le transfert du fichier nouvellement généré, j&amp;#039;ai utilisé le site &lt;a href=&quot;https://www.filepastebin.com/&quot; class=&quot;urlextern&quot; title=&quot;https://www.filepastebin.com/&quot; rel=&quot;ugc nofollow&quot;&gt;FilePastebin&lt;/a&gt; qui permet de transférer des fichiers en utilisant une connexion WebRTC entre le navigateur du téléphone source et le navigateur de la machine cible.
Il n&amp;#039;y a qu&amp;#039;à suivre les instructions pour que cela fonctionne.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_box plugin_wrap&quot;&gt;
&lt;p&gt;
Ça pourrait être intéressant d&amp;#039;installer ça (ou quelque chose de similaire) sur un serveur que je contrôle.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
&lt;strong&gt;Lecture&lt;/strong&gt;&lt;br/&gt;

Le fichier récupéré est une archive &lt;em&gt;zip&lt;/em&gt; dont l&amp;#039;extension a été modifiée.
Cette archive contient plusieurs répertoires &lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; et fichiers.
Il faut commencer par extraire de l&amp;#039;archive le fichier qui nous intéresse afin de pouvoir l&amp;#039;exploiter :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;unzip&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;fichier_lqm&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; memoinfo.jlqm&lt;/pre&gt;

&lt;p&gt;
Ce fichier à l&amp;#039;extension &lt;code&gt;jlqm&lt;/code&gt; est un fichier au format JSON.
Nous pouvons donc en extraire le contenu grace à &lt;a href=&quot;https://stedolan.github.io/jq/&quot; class=&quot;urlextern&quot; title=&quot;https://stedolan.github.io/jq/&quot; rel=&quot;ugc nofollow&quot;&gt;jq&lt;/a&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;jq &lt;span class=&quot;re5&quot;&gt;--raw-output&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;.MemoObjectList[].DescRaw&#039;&lt;/span&gt; memoinfo.jlqm&lt;/pre&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_tip plugin_wrap&quot;&gt;
&lt;p&gt;
Si le fichier n&amp;#039;a pas besoin d&amp;#039;être stocké localement, il est possible de faire l&amp;#039;ensemble des opérations en une fois :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;unzip&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-qc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;fichier_lqm&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; memoinfo.jlqm &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; jq &lt;span class=&quot;re5&quot;&gt;--raw-output&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;.MemoObjectList[].DescRaw&#039;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;version 4.70.13&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;tous vides&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 24 Nov 2024 17:28:20 +0000</pubDate>
        </item>
        <item>
            <title>sauvegarde_blog_pdf</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:projets:sauvegarde_blog_pdf&amp;rev=1732449719&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;sauvegarde_d_un_blog_en_pdf&quot;&gt;Sauvegarde d&amp;#039;un blog en PDF&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Il y a quelques années, j&amp;#039;ai arrêté d&amp;#039;alimenter un de mes blogs. Je ne voulais pas en perdre le contenu donc j&amp;#039;ai continuer à l&amp;#039;héberger en attendant de trouver une solution pour le sauvegarder de manière efficace. Mon idée était de pouvoir le sauvegarder en PDF.
&lt;/p&gt;

&lt;p&gt;
Le blog étant propulsé par &lt;a href=&quot;https://fr.dotclear.org/&quot; class=&quot;urlextern&quot; title=&quot;https://fr.dotclear.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Dotclear&lt;/a&gt;, ma première idée fut d&amp;#039;installer une extension qui génère directement du &lt;a href=&quot;http://idpf.org/epub&quot; class=&quot;urlextern&quot; title=&quot;http://idpf.org/epub&quot; rel=&quot;ugc nofollow&quot;&gt;ePub&lt;/a&gt; depuis l&amp;#039;interface de navigation. Malheureusement, je n&amp;#039;ai jamais réussi à le faire fonctionner correctement.&lt;br/&gt;

De plus, je n&amp;#039;étais pas sur de pouvoir faire autrement que de générer un fichier par message. Ce n&amp;#039;était pas un blog très fourni, mais ça aurait quand même fait pas loin de 200 fichiers, ce qui n&amp;#039;est pas franchement utilisable. Surtout si la chronologie des messages a son importance.
&lt;/p&gt;

&lt;p&gt;
Ce projet est resté longtemps au stade de l&amp;#039;idée jusqu&amp;#039;au jour où je me suis dit que je pouvais utiliser &lt;a href=&quot;http://pandoc.org/&quot; class=&quot;urlextern&quot; title=&quot;http://pandoc.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Pandoc&lt;/a&gt;. C&amp;#039;est un logiciel de conversion de document numérique. La liste des types de fichier qu&amp;#039;il supporte aussi bien en entrée qu&amp;#039;en sortie est impressionnante. Mais le point le plus intéressant dans mon cas, est le support du &lt;a href=&quot;https://www.w3.org/html/&quot; class=&quot;urlextern&quot; title=&quot;https://www.w3.org/html/&quot; rel=&quot;ugc nofollow&quot;&gt;HTML&lt;/a&gt; en entrée et du &lt;a href=&quot;https://acrobat.adobe.com/us/en/why-adobe/about-adobe-pdf.html&quot; class=&quot;urlextern&quot; title=&quot;https://acrobat.adobe.com/us/en/why-adobe/about-adobe-pdf.html&quot; rel=&quot;ugc nofollow&quot;&gt;PDF&lt;/a&gt; en sortie.
&lt;/p&gt;

&lt;p&gt;
J&amp;#039;ai fait un premier test assez concluant sur une page malgré la quantité d&amp;#039;information superflue récupérée. Il fallait que je nettoie l&amp;#039;information pour ne garder que ce qui était pertinent. Ma première idée fut de convertir plutôt en &lt;a href=&quot;https://www.tug.org/&quot; class=&quot;urlextern&quot; title=&quot;https://www.tug.org/&quot; rel=&quot;ugc nofollow&quot;&gt;TeX&lt;/a&gt; et d&amp;#039;écrire un script de nettoyage. Idée rapidement abandonnée après avoir vu la complexité du document TeX généré. Après avoir lu la documentation de Pandoc, ma seconde idée fut d&amp;#039;utiliser un filtre qui ferait du nettoyage entre la conversion d&amp;#039;entrée et la conversion de sortie. Idée également abandonnée après avoir vu la complexité du format de travail de Pandoc. Ma troisième idée fut de modifier le modèle d&amp;#039;affichage du blog directement dans Dotclear pour avoir des données nettoyées avant même de les utiliser avec Pandoc.&lt;br/&gt;

Je suis resté sur cette idée car elle est facile à mettre en place et très souple. Ça ne fonctionne que parce que j&amp;#039;ai la main sur le blog que je voulais sauvegarder. Dans un cas où ce n&amp;#039;est pas possible, il faudrait trouver un autre moyen.
&lt;/p&gt;

&lt;p&gt;
Ensuite il a fallu récupérer les &lt;a href=&quot;https://en.wikipedia.org/wiki/URL&quot; class=&quot;urlextern&quot; title=&quot;https://en.wikipedia.org/wiki/URL&quot; rel=&quot;ugc nofollow&quot;&gt;URLs&lt;/a&gt; de chaque message pour pouvoir les télécharger. Ma première idée fut d&amp;#039;utiliser &lt;a href=&quot;https://www.gnu.org/software/wget/&quot; class=&quot;urlextern&quot; title=&quot;https://www.gnu.org/software/wget/&quot; rel=&quot;ugc nofollow&quot;&gt;wget&lt;/a&gt; pour naviguer à travers le blog et faire l&amp;#039;extraction. Cette solution est faisable mais pas la plus pratique. Ma seconde idée fut d&amp;#039;utiliser le &lt;a href=&quot;https://en.wikipedia.org/wiki/Site_map&quot; class=&quot;urlextern&quot; title=&quot;https://en.wikipedia.org/wiki/Site_map&quot; rel=&quot;ugc nofollow&quot;&gt;plan du site&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt;.&lt;br/&gt;

Je suis resté sur cette idée car elle est très facile à mettre en place grâce à l&amp;#039;extension de Dotclear. Par contre, le fichier généré étant du &lt;a href=&quot;https://www.w3.org/XML/&quot; class=&quot;urlextern&quot; title=&quot;https://www.w3.org/XML/&quot; rel=&quot;ugc nofollow&quot;&gt;XML&lt;/a&gt;, il aurait fallu écrire un bout de code pour en extraire les URLs. Mais comme ce fichier est aussi généré avec un modèle, je l&amp;#039;ai également modifié pour ne conserver que la partie intéressante.
&lt;/p&gt;

&lt;p&gt;
Il a fallu retravailler certains messages directement dans l&amp;#039;interface d&amp;#039;administration du blog pour que le contenu généré corresponde à ce que je voulais. Ça a pris un peu de temps, mais beaucoup moins que de modifier la sortie ou d&amp;#039;écrire un filtre.
&lt;/p&gt;

&lt;p&gt;
Voici les quelques commandes utilisées lors de ce projet :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Récupération des URLs&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;# Version courte&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;wget&lt;/span&gt; http:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;www.blog.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;index.php&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sitemap.xml &lt;span class=&quot;re5&quot;&gt;-O&lt;/span&gt; URL.List
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Version longue&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;wget&lt;/span&gt; http:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;www.blog.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;index.php&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sitemap.xml &lt;span class=&quot;re5&quot;&gt;--output-document&lt;/span&gt; URL.List&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Récupération du contenu&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;# Version courte&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;wget&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-i&lt;/span&gt; URL.List &lt;span class=&quot;re5&quot;&gt;-k&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-p&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-E&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Version longue&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;wget&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--input-file&lt;/span&gt; URL.List &lt;span class=&quot;re5&quot;&gt;--convert-links&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--page-requisites&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--adjust-extension&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Concaténation du contenu&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;find&lt;/span&gt; www.blog.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-name&lt;/span&gt; \&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;html &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;sort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;xargs&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;cat&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; blog.html&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Conversion du contenu&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;# Version courte&lt;/span&gt;
pandoc blog.html &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; html &lt;span class=&quot;re5&quot;&gt;-t&lt;/span&gt; latex &lt;span class=&quot;re5&quot;&gt;--toc&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-V&lt;/span&gt; geometry:&lt;span class=&quot;re2&quot;&gt;margin&lt;/span&gt;=2cm &lt;span class=&quot;re5&quot;&gt;-V&lt;/span&gt; papersize:A4 &lt;span class=&quot;re5&quot;&gt;-o&lt;/span&gt; blog.pdf
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Version longue&lt;/span&gt;
pandoc blog.html &lt;span class=&quot;re5&quot;&gt;--from&lt;/span&gt; html &lt;span class=&quot;re5&quot;&gt;--to&lt;/span&gt; latex &lt;span class=&quot;re5&quot;&gt;--table-of-contents&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--variable&lt;/span&gt; geometry:&lt;span class=&quot;re2&quot;&gt;margin&lt;/span&gt;=2cm &lt;span class=&quot;re5&quot;&gt;--variable&lt;/span&gt; papersize:A4 &lt;span class=&quot;re5&quot;&gt;--output&lt;/span&gt; blog.pdf&lt;/pre&gt;

&lt;p&gt;
Le résultat obtenu est bon, même s&amp;#039;il reste perfectible. Par exemple, la table des matière n&amp;#039;est pas en français et les photos prennent trop de place à mon goût.
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;ou sitemap dans la langue de Shakespeare&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 24 Nov 2024 12:01:59 +0000</pubDate>
        </item>
        <item>
            <title>sauvegarde_de_pages</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:projets:sauvegarde_de_pages&amp;rev=1732470408&amp;do=diff</link>
            <description>&lt;div class=&quot;tagstop&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?id=tag:todo&amp;amp;do=showtag&amp;amp;tag=todo&quot; class=&quot;wikilink1&quot; title=&quot;tag:todo&quot; rel=&quot;tag&quot;&gt;todo&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;sauvegarde_de_pages&quot;&gt;Sauvegarde de pages&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Le World Wide Web (ou web) est un organisme vivant. Des pages apparaissent tandis que d&amp;#039;autres disparaissent. C&amp;#039;est pourquoi, il peut être utile d&amp;#039;en sauvegarder certaines afin de conserver certaines connaissances ou idées. Il y a quelques temps, j&amp;#039;utilisais l&amp;#039;extension Firefox &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/scrapbook/&quot; class=&quot;urlextern&quot; title=&quot;https://addons.mozilla.org/en-US/firefox/addon/scrapbook/&quot; rel=&quot;ugc nofollow&quot;&gt;Scrapbook&lt;/a&gt; mais celle-ci n&amp;#039;a pas été mise à jour depuis le passage aux WebExtensions &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt;. Cette extension permettait de faire une copie locale d&amp;#039;un site. Je me suis dit qu&amp;#039;il fallait aller plus loin et fournir une copie en ligne du contenu.
&lt;/p&gt;

&lt;p&gt;
Étonnament, ça a été plus facile et plus rapide que ce que j&amp;#039;avais anticipé.
&lt;/p&gt;

&lt;p&gt;
Ma première idée fut de me tourner vers des services de conservation du patrimoine numérique. Je connais deux services qui font ce genre de chose :
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://loc.gov/&quot; class=&quot;urlextern&quot; title=&quot;https://loc.gov/&quot; rel=&quot;ugc nofollow&quot;&gt;Home | Library of Congress&lt;/a&gt;,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://archive.org/&quot; class=&quot;urlextern&quot; title=&quot;https://archive.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Internet Archive: Digital Library of Free &amp;amp; Borrowable Books, Movies, Music &amp;amp; Wayback Machine&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Ces services fonctionnent très bien, mais il faut que les pages soient indexées et que le service soit pérenne. Je me suis dit que j&amp;#039;allais l&amp;#039;héberger moi même.
&lt;/p&gt;

&lt;p&gt;
J&amp;#039;ai essayé de trouver une extension pour remplacer &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/scrapbook/&quot; class=&quot;urlextern&quot; title=&quot;https://addons.mozilla.org/en-US/firefox/addon/scrapbook/&quot; rel=&quot;ugc nofollow&quot;&gt;Scrapbook&lt;/a&gt;. Je suis tombé sur les extensions &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/scrapbee/?src=search&quot; class=&quot;urlextern&quot; title=&quot;https://addons.mozilla.org/en-US/firefox/addon/scrapbee/?src=search&quot; rel=&quot;ugc nofollow&quot;&gt;ScrapBee&lt;/a&gt; et &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/scrapbookq/?src=search&quot; class=&quot;urlextern&quot; title=&quot;https://addons.mozilla.org/en-US/firefox/addon/scrapbookq/?src=search&quot; rel=&quot;ugc nofollow&quot;&gt;ScrapbookQ&lt;/a&gt; mais je me suis vite arrêté car elles demandent d&amp;#039;installer un module en dehors du navigateur. Je me suis souvenu de l&amp;#039;existence de l&amp;#039;extension &lt;a href=&quot;https://addons.mozilla.org/fr/firefox/addon/save-page-we/&quot; class=&quot;urlextern&quot; title=&quot;https://addons.mozilla.org/fr/firefox/addon/save-page-we/&quot; rel=&quot;ugc nofollow&quot;&gt;Save Page WE&lt;/a&gt; qui permet de sauvegarder une page complète en 1 seul fichier &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;. Après tests, il s&amp;#039;avère qu&amp;#039;avec quelques manipulations, je peux faire ce que j&amp;#039;avais imaginé.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sauvegarde de pages&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sauvegarde_de_pages&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;14-1968&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;etapes&quot;&gt;Étapes&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ouvrir la console de Firefox (&lt;code&gt;Tools &amp;gt; Web Developer &amp;gt; Inspector&lt;/code&gt; ou &lt;kbd class=&quot;__keyboard&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd class=&quot;__keyboard&quot;&gt;⇧ Shift&lt;/kbd&gt;+&lt;kbd class=&quot;__keyboard&quot;&gt;Ctrl&lt;/kbd&gt;),&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Supprimer tout ce que l&amp;#039;on ne veut pas conserver dans la copie,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Sauvegarder la page avec l&amp;#039;extension &lt;a href=&quot;https://addons.mozilla.org/fr/firefox/addon/save-page-we/&quot; class=&quot;urlextern&quot; title=&quot;https://addons.mozilla.org/fr/firefox/addon/save-page-we/&quot; rel=&quot;ugc nofollow&quot;&gt;Save Page WE&lt;/a&gt;,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Faire une capture d&amp;#039;écran de la page sauvegardée,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ajouter la page sauvegardée sur mon site.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_info plugin_wrap&quot;&gt;
&lt;p&gt;
J&amp;#039;ai du supprimer certains éléments de la page. J&amp;#039;ai pu le faire avec cette commande lancée dans la console.
&lt;/p&gt;
&lt;pre class=&quot;code javascript&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// Pour supprimer les scripts&lt;/span&gt;
document.&lt;span class=&quot;me1&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;script&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;element &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; element.&lt;span class=&quot;me1&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Pour supprimer les éléments ayant la classe CSS .xc_pin&lt;/span&gt;
document.&lt;span class=&quot;me1&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;.xc_pin&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;element &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; element.&lt;span class=&quot;me1&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_todo plugin_wrap&quot;&gt;
&lt;p&gt;
Regarder si cette extension pourrait fonctionner : &lt;a href=&quot;https://addons.mozilla.org/fr/firefox/addon/single-file/&quot; class=&quot;urlextern&quot; title=&quot;https://addons.mozilla.org/fr/firefox/addon/single-file/&quot; rel=&quot;ugc nofollow&quot;&gt;SingleFile&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u00c9tapes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etapes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1969-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Et je pense qu&amp;#039;elle ne le sera jamais.&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 24 Nov 2024 17:46:48 +0000</pubDate>
        </item>
        <item>
            <title>transcription_automatique</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:projets:transcription_automatique&amp;rev=1735838748&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;transcription_automatique_d_entretiens&quot;&gt;Transcription automatique d&amp;#039;entretiens&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Pour son mémoire, ma dame fait passer des entretiens pour collecter des données à exploiter pour sa réflexion. Elle doit les retranscrire pour pouvoir les analyser, puis les inclure dans son rapport. Ça lui demande beaucoup de temps et d&amp;#039;énergie. Elle était démoralisée jusqu&amp;#039;à ce que je lui trouve une solution un peu plus automatique. 
&lt;/p&gt;

&lt;p&gt;
J&amp;#039;ai eu l&amp;#039;idée d&amp;#039;utiliser la puissance de calcul de Google et de la traduction automatique de vidéos de Youtube. Une vidéo chargée sur la plate-forme est traduite automatiquement dans la langue choisie comme langue par défaut. Le résultat n&amp;#039;est pas parfait mais il permet de faire beaucoup de chose automatiquement. Voici le détail des étapes pour obtenir un fichier texte utilisable.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Transcription automatique d&amp;#039;entretiens&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;transcription_automatique_d_entretiens&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-797&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;convertir_le_fichier_audio_en_fichier_video&quot;&gt;Convertir le fichier audio en fichier vidéo&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Youtube n&amp;#039;autorise que le chargement de fichiers vidéos. Il faut donc convertir les fichiers audio en fichiers vidéo. Pour cela, on va ajouter une image fixe à l&amp;#039;audio en utilisant &lt;a href=&quot;https://trac.ffmpeg.org/wiki/Slideshow&quot; class=&quot;urlextern&quot; title=&quot;https://trac.ffmpeg.org/wiki/Slideshow&quot; rel=&quot;ugc nofollow&quot;&gt;FFmpeg&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;ffmpeg&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-loop&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-i&lt;/span&gt; bg.png &lt;span class=&quot;re5&quot;&gt;-i&lt;/span&gt; record.m4a -c:v libx264 -c:a copy &lt;span class=&quot;re5&quot;&gt;-shortest&lt;/span&gt; record.mp4&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;-loop&lt;/code&gt; indique le nombre de boucle à effectuer pour les entrées le supportant.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;-i&lt;/code&gt; indique le fichier à utiliser.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;-c:v&lt;/code&gt; indique le codec vidéo à utiliser, ici &lt;code&gt;libx264&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;-c:a&lt;/code&gt; indique le codec audio à utiliser, ici &lt;code&gt;copy&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;-shortest&lt;/code&gt; indique que la conversion doit se terminer dès que le plus petit flux est converti.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;group plugin_wrap&quot;&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_half wrap_column plugin_wrap&quot;&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_alert plugin_wrap&quot;&gt;
&lt;p&gt;
Il faut faire attention aux images utilisées. Il faut choisir des images dont les dimensions sont divisibles par 2, sinon &lt;code&gt;ffmpeg&lt;/code&gt; ne voudra pas générer le fichier.
&lt;/p&gt;

&lt;p&gt;
Il est également conseillé de prendre des images de petite dimension pour limiter la taille de la vidéo générée. Je trouve que la taille &lt;code&gt;320&amp;times;240&lt;/code&gt; est un bon compromis.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_half wrap_column plugin_wrap&quot;&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_tip plugin_wrap&quot;&gt;
&lt;p&gt;
Pour ne pas modifier la qualité de l&amp;#039;audio, on utilise le codec &lt;code&gt;copy&lt;/code&gt; qui ne fait pas de conversion mais seulement une copie du flux. Ça ne fonctionne qu&amp;#039;avec un format de sortie qui supporte le format d&amp;#039;entrée.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Convertir le fichier audio en fichier vid\u00e9o&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;convertir_le_fichier_audio_en_fichier_video&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;798-2257&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;traiter_la_video_sur_youtube&quot;&gt;Traiter la vidéo sur Youtube&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Il faut téléverser la vidéo sur Youtube&lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt;, configurer la langue originale de la vidéo et laisser faire le service qui va s&amp;#039;occuper d&amp;#039;ajouter automatiquement des sous-titres à la vidéo. Je ne sais pas combien de temps ça prend mais après quelques heures, ça devrait être fait.&lt;br/&gt;

Il ne reste plus qu&amp;#039;à télécharger les sous-titres au format &lt;a href=&quot;https://fr.wikipedia.org/wiki/SubRip&quot; class=&quot;urlextern&quot; title=&quot;https://fr.wikipedia.org/wiki/SubRip&quot; rel=&quot;ugc nofollow&quot;&gt;SubRip&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;group plugin_wrap&quot;&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_half wrap_column plugin_wrap&quot;&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_info plugin_wrap&quot;&gt;
&lt;p&gt;
Il existe plusieurs format de sous-titres disponibles. J&amp;#039;ai choisi d&amp;#039;utiliser &lt;code&gt;SubRip&lt;/code&gt; mais il est tout à fait envisegeable d&amp;#039;utiliser un autre format de sous-titres. Il suffira d&amp;#039;ajuster la prochaine étape en conséquence.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_half wrap_column plugin_wrap&quot;&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_tip plugin_wrap&quot;&gt;
&lt;p&gt;
Il est recommandé de configurer les vidéos pour quelles ne soient visible que par le propriétaire de la chaîne.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Traiter la vid\u00e9o sur Youtube&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;traiter_la_video_sur_youtube&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;2258-3240&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit24&quot; id=&quot;convertir_les_sous-titres_en_fichier_texte&quot;&gt;Convertir les sous-titres en fichier texte&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Techniquement, les fichiers de sous-titres sont des fichiers textes, mais pour notre utilisation, nous n&amp;#039;avons besoin que des textes mais pas des informations de synchronisation avec la vidéo. J&amp;#039;ai utilisé le site &lt;a href=&quot;https://subtitletools.com/convert-subtitles-to-plain-text-online&quot; class=&quot;urlextern&quot; title=&quot;https://subtitletools.com/convert-subtitles-to-plain-text-online&quot; rel=&quot;ugc nofollow&quot;&gt;Subtitle Tools&lt;/a&gt; pour faire ça. Je n&amp;#039;explique pas tellement le fonctionnement est évident.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Convertir les sous-titres en fichier texte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;convertir_les_sous-titres_en_fichier_texte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;3241-3670&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit25&quot; id=&quot;nettoyer_le_fichier&quot;&gt;Nettoyer le fichier&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Maintenant que nous avons un fichier sans les informations de synchronization, il nous reste quelques opérations pour avoir un fichier utilisable :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Suppression des lignes vides&lt;sup&gt;&lt;a href=&quot;#fn__3&quot; id=&quot;fnt__3&quot; class=&quot;fn_top&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sed&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;/^[[:space:]]*$/d&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;fichier&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Mise sur une ligne de la totalité du texte&lt;sup&gt;&lt;a href=&quot;#fn__4&quot; id=&quot;fnt__4&quot; class=&quot;fn_top&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;paste &lt;span class=&quot;re5&quot;&gt;-sd&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;fichier1&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;fichier2&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Suppression des caractères &lt;code&gt;^M&lt;/code&gt; du texte avec &lt;a href=&quot;https://www.ainw.org/wiki/doku.php?id=informatique:outils:vim#saisir_des_caracteres_de_controle&quot; class=&quot;wikilink1&quot; title=&quot;informatique:outils:vim&quot; data-wiki-id=&quot;informatique:outils:vim&quot;&gt;Vim&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
C&amp;#039;est loin d&amp;#039;être parfait mais ça permet de réduire un peu la charge de travail humaine en la reportant sur les machines.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_info plugin_wrap&quot;&gt;
&lt;p&gt;
Plusieurs années après avoir mis en place ça, je viens de découvrir le service &lt;a href=&quot;https://scribe.cemea.org/&quot; class=&quot;urlextern&quot; title=&quot;https://scribe.cemea.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Scribe&lt;/a&gt; qui permet la transcription de fichiers audio et vidéo.
Ça m&amp;#039;aurait épargné plusieurs étapes si je connaissais ça à l&amp;#039;époque.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Nettoyer le fichier&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nettoyer_le_fichier&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;3671-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Il faut avoir un compte et créer une chaîne au préalable&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;extension &lt;code&gt;.srt&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__3&quot; id=&quot;fn__3&quot; class=&quot;fn_bot&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/16414410/delete-empty-lines-using-sed&quot; class=&quot;urlextern&quot; title=&quot;https://stackoverflow.com/questions/16414410/delete-empty-lines-using-sed&quot; rel=&quot;ugc nofollow&quot;&gt;linux - Delete empty lines using sed - Stack Overflow&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__4&quot; id=&quot;fn__4&quot; class=&quot;fn_bot&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;a href=&quot;https://www.unix.com/shell-programming-and-scripting/126374-how-use-sed-join-multiple-lines.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.unix.com/shell-programming-and-scripting/126374-how-use-sed-join-multiple-lines.html&quot; rel=&quot;ugc nofollow&quot;&gt;How to use SED to join multiple lines?&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 02 Jan 2025 17:25:48 +0000</pubDate>
        </item>
    </channel>
</rss>
