{"id":8618,"date":"2023-07-05T09:32:40","date_gmt":"2023-07-05T07:32:40","guid":{"rendered":"https:\/\/www.mathweb.fr\/euclide\/?p=8618"},"modified":"2024-06-09T16:52:02","modified_gmt":"2024-06-09T14:52:02","slug":"creer-un-calendrier-a-laide-de-python-et-latex","status":"publish","type":"post","link":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/","title":{"rendered":"Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et LaTeX"},"content":{"rendered":"\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">L&rsquo;objectif de cet article est de voir une mani\u00e8re de cr\u00e9er un calendrier d&rsquo;une ann\u00e9e donn\u00e9e \u00e0 l&rsquo;aide de Python et de LaTeX (pour l&rsquo;export en PDF).<\/p>\n\n\n\n<!--more-->\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Au menu sur cette page...<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#Creer_un_calendrier_a_laide_de_Python_et_LaTeX_preliminaires\" >Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et LaTeX: pr\u00e9liminaires<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#Calendrier_a_laide_de_Python_et_LaTeX_le_programme\" >Calendrier \u00e0 l&rsquo;aide de Python et LaTeX: le programme<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#Cahier_des_charges\" >Cahier des charges<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#Limplementation_en_Python\" >L&rsquo;impl\u00e9mentation en Python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#Lexportation_du_calendrier_a_laide_de_Python_et_LaTeX\" >L&rsquo;exportation du calendrier \u00e0 l&rsquo;aide de Python et LaTeX<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#Les_attributs_de_la_classe_et_les_arguments_de_la_methode_dexportation\" >Les attributs de la classe et les arguments de la m\u00e9thode d&rsquo;exportation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#Les_images\" >Les images<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#Le_programme\" >Le programme<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Creer_un_calendrier_a_laide_de_Python_et_LaTeX_preliminaires\"><\/span>Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et LaTeX: pr\u00e9liminaires<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Ce n&rsquo;est pas la premi\u00e8re chose que j&rsquo;ai faite (pour \u00eatre honn\u00eate, c&rsquo;est m\u00eame la derni\u00e8re chose), mais ce que l&rsquo;on peut faire avant tout, si l&rsquo;on n&rsquo;aime pas r\u00e9fl\u00e9chir, c&rsquo;est de demander \u00e0 une IA de faire le job&#8230; Mais il faut tout de m\u00eame un bon prompt!<\/p>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Comme je suis flemmard sur la recherche de prompts, j&rsquo;ai juste demand\u00e9 \u00e0 <a href=\"https:\/\/chat.openai.com\" target=\"_blank\" rel=\"noreferrer noopener\">chatGPT<\/a>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Ecrit un programme en langage python permettant d'exporter au format pdf un calendrier d'une ann\u00e9e donn\u00e9e<\/pre>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Le prompt n&rsquo;est pas d&rsquo;une grande rigueur par rapport \u00e0 ce que je veux faire, mais c&rsquo;est un premier test. Voici ce qu&rsquo;il propose:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import calendar\nfrom reportlab.lib.pagesizes import letter\nfrom reportlab.pdfgen import canvas\n\ndef export_calendar(year):\n    # Cr\u00e9er un nouveau fichier PDF\n    filename = f\"calendrier_{year}.pdf\"\n    c = canvas.Canvas(filename, pagesize=letter)\n\n    # D\u00e9finir les marges et la taille de la page\n    margin_x = 50\n    margin_y = 50\n    page_width, page_height = letter\n    usable_width = page_width - 2 * margin_x\n    usable_height = page_height - 2 * margin_y\n\n    # Obtenir le calendrier pour l'ann\u00e9e donn\u00e9e\n    cal = calendar.calendar(year)\n\n    # Calculer la hauteur de chaque mois\n    month_height = usable_height \/ 4\n\n    # Diviser le calendrier en 4 colonnes\n    col_width = usable_width \/ 4\n\n    # Coordonn\u00e9es de d\u00e9part pour le premier mois\n    x = margin_x\n    y = page_height - margin_y\n\n    # Parcourir tous les mois de l'ann\u00e9e\n    for month in cal.split(\"\\n\"):\n        # Rendre les mois centr\u00e9s horizontalement dans leur colonne\n        month_width = c.stringWidth(month, \"Helvetica\", 12)\n        x_offset = (col_width - month_width) \/ 2\n\n        # Dessiner le mois sur le canvas\n        c.setFont(\"Helvetica\", 12)\n        c.drawString(x + x_offset, y - 20, month)\n\n        # Descendre d'une hauteur \u00e9quivalente \u00e0 celle d'un mois\n        y -= month_height\n\n        # Si la hauteur atteint la limite de la page, passer \u00e0 la colonne suivante\n        if y &lt;= margin_y:\n            y = page_height - margin_y - month_height\n            x += col_width\n\n    # Enregistrer le canvas au format PDF\n    c.save()\n\n    print(f\"Calendrier pour l'ann\u00e9e {year} export\u00e9 au format PDF dans le fichier '{filename}'.\")\n\n# Exemple d'utilisation\nexport_calendar(2023)<\/pre>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Ce programme est loin d&rsquo;\u00eatre satisfaisant. Voici ce que cela produit:<\/p>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file aligncenter\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2023\/07\/calendrier_2023.pdf\" type=\"application\/pdf\" style=\"width:100%;height:600px\" aria-label=\"Contenu embarqu\u00e9 calendrier_2023.\"><\/object><a id=\"wp-block-file--media-ccd92a97-dd2c-4560-901f-1f4413e1dcc7\"  href=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2023\/07\/calendrier_2023.pdf\" data-fancybox data-type=\"iframe\" data-width=\"90%\" data-height=\"100%\" data-preload=\"false\">calendrier_2023<\/a><a  href=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2023\/07\/calendrier_2023.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-ccd92a97-dd2c-4560-901f-1f4413e1dcc7\" data-fancybox data-type=\"iframe\" data-width=\"90%\" data-height=\"100%\" data-preload=\"false\">T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">C&rsquo;est bien pourri quand-m\u00eame&#8230; Et ce n&rsquo;est pas \u00e9tonnant vu la motivation que j&rsquo;ai eu pour \u00e9crire le prompt. Il est donc temps de mettre en route les m\u00e9ninges!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Calendrier_a_laide_de_Python_et_LaTeX_le_programme\"><\/span>Calendrier \u00e0 l&rsquo;aide de Python et LaTeX: le programme<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Pour cr\u00e9er un magnifique calendrier au format PDF, il nous faudra:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>avoir install\u00e9 une distribution \\(\\LaTeX\\) sur sa machine<\/li>\n\n\n\n<li>avoir install\u00e9 Python (of course!)<\/li>\n\n\n\n<li>\u00e9ventuellement, Stable Diffusion (pur g\u00e9n\u00e9rer des en-t\u00eates de mois par IA)<\/li>\n<\/ul>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Tout ceci est gratuit (car je suis un gros radin).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Cahier_des_charges\"><\/span>Cahier des charges<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Il faudra que chaque mois tienne sur une page.<\/p>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Sur chaque page, il faudra qu&rsquo;il y ait une en-t\u00eate (une image repr\u00e9sentant le mois) sur laquelle sont \u00e9crits le mois et l&rsquo;ann\u00e9e.<\/p>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Je veux que les jours soient \u00e9crits sous l&rsquo;en-t\u00eate, et que le calendrier sus sous la forme d&rsquo;une grille. Dans chaque case de cette grille, il faut qu&rsquo;il y ait la date (le num\u00e9ro du jour).<\/p>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Je veux aussi que l&rsquo;utilisateur ou l&rsquo;utilisatrice ait la possibilit\u00e9 de choisir des options: position de la date dans la case, couleur, taille, couleur des trait de la grille, jours \u00e9crits en entier, ou en abr\u00e9g\u00e9, ou uniquement avec les initiales.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Limplementation_en_Python\"><\/span>L&rsquo;impl\u00e9mentation en Python<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Je d\u00e9cide d&rsquo;utiliser la <a href=\"https:\/\/www.mathweb.fr\/euclide\/2019\/09\/06\/les-classes-en-python\/\">Programmation Orient\u00e9e Objet (POO)<\/a> pour ce projet.<\/p>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Je veux une classe <em>Calendrier<\/em> qui admet l&rsquo;ann\u00e9e en attribut. Par exemple,<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; Calendrier(2023)<\/code><\/pre>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">devra d\u00e9signer l&rsquo;ensemble du calendrier de l&rsquo;ann\u00e9e 2023.<\/p>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Comme mentionn\u00e9 plus haut, il faut aussi d&rsquo;autres attributs \u00e0 la classe pour l&rsquo;export au format PDF.<\/p>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Il faut aussi une m\u00e9thode pour exporter au format PDF. Cette m\u00e9thode va avoir des arguments (nom du fichier, bool\u00e9en pour supprimer ou non les fichiers auxiliaires pour g\u00e9n\u00e9rer le PDF et liste des mois qui nous int\u00e9ressent).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Lexportation_du_calendrier_a_laide_de_Python_et_LaTeX\"><\/span>L&rsquo;exportation du calendrier \u00e0 l&rsquo;aide de Python et LaTeX<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Je souhaite donc passer par \\(\\LaTeX\\), et utiliser plus particuli\u00e8rement TiKZ: c&rsquo;est une solution graphique avec laquelle je me sens \u00e0 l&rsquo;aise.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Les_attributs_de_la_classe_et_les_arguments_de_la_methode_dexportation\"><\/span>Les attributs de la classe et les arguments de la m\u00e9thode d&rsquo;exportation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>Attributs de la classe:\n---------------------\n* year \t\t\t\t\t\t\t: ann\u00e9e du calendrier\n\n* dayname \t\t\t\t\t\t: style d'\u00e9criture des jours\n--&gt; trois valeurs possibles :\n----- 'long' (par d\u00e9faut),\n----- 'short' (Initiales des jours)\n----- 'abr' (trois premi\u00e8res lettres des jours)\n\n* colorday \t\t\t\t\t\t: couleur avec laquelle les jours sont \u00e9crits\n---&gt; Valeur par d\u00e9faut : 'black'\n\n* position \t\t\t\t\t\t: position du nombre indiquant le jour dans les cases\n---&gt; Valeurs possibles :\n----- 'center' (par d\u00e9faut),\n----- 'bottom left',\n----- 'bottom right',\n----- 'top left',\n----- 'top right'\n\n* scale \t\t\t\t\t\t: \u00e9chelle du nombre\n---&gt; Si position = 'center', scale=4 par d\u00e9faut\n---&gt; Sinon scale=2 par d\u00e9faut\n\n* opacity \t\t\t\t\t\t: opacit\u00e9 avec laquelle est \u00e9crit le nombre du jour dans les cases\n---&gt; Valeur par d\u00e9faut : 0.2\n\n* textcolor \t\t\t\t\t: couleur TiKZ avec laquelle est \u00e9crite le jour dans les cases\n---&gt; Valeur par d\u00e9faut : 'gray'\n\n* linecolor \t\t\t\t\t: couleur des traits du calendrier\n---&gt; Valeur par d\u00e9faut : 'black'\n\n* linewidth \t\t\t\t\t: \u00e9paisseur des traits de la grille\n---&gt; Valeur par d\u00e9faut : '1pt'\n\n\nArguments de la m\u00e9thode 'export()':\n---------------------------------\n* L : liste des mois \u00e0 exporter.\n---&gt; Par exemple, L = &#91;7,8] pour juillet et ao\u00fbt.\n---&gt; Valeur par d\u00e9faut : L = range(1,13)\n\n* erase : bool\u00e9en qui indique si les fichiers auxiliaires, y compris le fichier '.tex', doivent \u00eatre supprim\u00e9s.\n---&gt; Valeur par d\u00e9faut : False\n\n* filename : nom du calendrier\n---&gt; Valeur par d\u00e9faut : filename = 'calendrier-&lt;ann\u00e9e&gt;'<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Les_images\"><\/span>Les images<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">Je suis pass\u00e9 par <em>Stable Diffusion<\/em> pour g\u00e9n\u00e9rer douze en-t\u00eates au format 175 mm x 50mm, mais \u00e7a, c&rsquo;est un choix personnel. En plus, pour l&rsquo;exemple que je vais mettre ici, je en me suis pas trop cass\u00e9 la t\u00eate et n&rsquo;ai pas cherch\u00e9 \u00e0 avoir les plus belles images du monde&#8230; loin de l\u00e0!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Le_programme\"><\/span>Le programme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from calendar import monthcalendar, day_name, month_name\n# Pour afficher les jours et les mois en fran\u00e7ais\nimport locale\nlocale.setlocale(locale.LC_TIME,'')\nimport os\n\n\"\"\"\nAttributs de la classe:\n---------------------\n* year \t\t\t\t\t\t\t: ann\u00e9e du calendrier\n\n* dayname \t\t\t\t\t\t: style d'\u00e9criture des jours\n--> trois valeurs possibles :\n----- 'long' (par d\u00e9faut),\n----- 'short' (Initiales des jours)\n----- 'abr' (trois premi\u00e8res lettres des jours)\n\n* colorday \t\t\t\t\t\t: couleur avec laquelle les jours sont \u00e9crits\n---> Valeur par d\u00e9faut : 'black'\n\n* position \t\t\t\t\t\t: position du nombre indiquant le jour dans les cases\n---> Valeurs possibles :\n----- 'center' (par d\u00e9faut),\n----- 'bottom left',\n----- 'bottom right',\n----- 'top left',\n----- 'top right'\n\n* scale \t\t\t\t\t\t: \u00e9chelle du nombre\n---> Si position = 'center', scale=4 par d\u00e9faut\n---> Sinon scale=2 par d\u00e9faut\n\n* opacity \t\t\t\t\t\t: opacit\u00e9 avec laquelle est \u00e9crit le nombre du jour dans les cases\n---> Valeur par d\u00e9faut : 0.2\n\n* textcolor \t\t\t\t\t: couleur TiKZ avec laquelle est \u00e9crite le jour dans les cases\n---> Valeur par d\u00e9faut : 'gray'\n\n* linecolor \t\t\t\t\t: couleur des traits du calendrier\n---> Valeur par d\u00e9faut : 'black'\n\n* linewidth \t\t\t\t\t: \u00e9paisseur des traits de la grille\n---> Valeur par d\u00e9faut : '1pt'\n\n\nArguments de la m\u00e9thode 'export()':\n---------------------------------\n* L : liste des mois \u00e0 exporter.\n---> Par exemple, L = [7,8] pour juillet et ao\u00fbt.\n---> Valeur par d\u00e9faut : L = range(1,13)\n\n* erase : bool\u00e9en qui indique si les fichiers auxiliaires, y compris le fichier '.tex', doivent \u00eatre supprim\u00e9s.\n---> Valeur par d\u00e9faut : False\n\n* filename : nom du calendrier\n---> Valeur par d\u00e9faut : filename = 'calendrier-&lt;ann\u00e9e>'\n\n\"\"\"\n\nclass Calendrier:\n    def __init__(self, year, dayname = 'long', colorday = 'black', position = 'center', scale = None, opacity = 0.2 , textcolor = 'gray', linecolor = 'black', linewidth = '1pt'):\n        self.year = year\n        self.colorday = colorday\n        self.position = position\n        self.scale = scale\n        self.opacity = opacity\n        self.textcolor = textcolor\n        self.linecolor = linecolor\n        self.linewidth = linewidth\n                \n        if dayname == 'long':\n            self.days = [ i[0].upper() + i[1:] for i in day_name ]\n        elif dayname == 'short':\n            self.days = [ i[0].upper() for i in day_name ] # jours sous la forme 'L', 'M', ...\n        elif dayname == 'abr':\n            self.days = [ i[0].upper()+i[1:3] for i in day_name ] # jours sous la forme abr\u00e9g\u00e9e : 'Lun', 'Mar', ...\n        \n    def export_month(self, month):\n        self.matrix = monthcalendar(self.year,month)\n        \n        self.tex_month = '\\\\begin{tikzpicture}[line width='+self.linewidth+',color='+self.linecolor+']\\n\\\\node[below right] (head) at (0,0) { \\\\includegraphics[width=175mm, height=50mm]{images\/\"' + month_name[month] +'.png\"} };\\n\\\\node[scale=5, text=gray] at ($(head.center)+(0.1,-0.1)$) {\\\\bfseries ' + month_name[month] + ' ' + str(self.year) + '};\\n\\\\node[scale=5, text=white] at (head.center) {\\\\bfseries ' + month_name[month] + ' ' + str(self.year) + '};\\n'\n        for j in range(7):\n            self.tex_month += '\\\\node[below,outer sep=5mm, text='+self.colorday+'] at ($(head.south)+(' + str((j-3)*2.5-0.125) + ',0)$) {' + self.days[j] +'};\\n'\n            \n            \n        self.tex_month += '\\\\begin{scope}[shift={(0,-7)}]\\n\\\\draw (0,0) grid[xstep = 25mm, ystep = 30mm] (7*2.5cm,-' + str(len(self.matrix)) + '*3cm);\\n\\\\end{scope}\\n'\n            \n        if self.position == 'center':\n            if self.scale == None:\n                self.scale = 4\n            for line in self.matrix:\n                y = -self.matrix.index( line )*3 - 8.5\n                for col in line:\n                    if col != 0:\n                        self.tex_month += '\\\\node['+self.textcolor+',opacity='+str(self.opacity)+',scale='+str(self.scale)+'] at (' + str(1.25 + line.index(col)*2.5) + ',' + str(y) + ') {' + str(col) + '};\\n'\n                        \n        elif self.position == 'top right':\n            if self.scale == None:\n                self.scale = 2\n            for line in self.matrix:\n                y = -7 - self.matrix.index( line )*3\n                for col in line:\n                    if col != 0:\n                        self.tex_month += '\\\\node[below left,'+self.textcolor+',opacity='+str(self.opacity)+',scale='+str(self.scale)+'] at (' + str(2.5 + line.index(col)*2.5) + ',' + str(y) + ') {' + str(col) + '};\\n'\n        \n        elif self.position == 'top left':\n            if self.scale == None:\n                self.scale = 2\n            for line in self.matrix:\n                y = -7 - self.matrix.index( line )*3\n                for col in line:\n                    if col != 0:\n                        self.tex_month += '\\\\node[below right,'+self.textcolor+',opacity='+str(self.opacity)+',scale='+str(self.scale)+'] at (' + str(line.index(col)*2.5) + ',' + str(y) + ') {' + str(col) + '};\\n'\n                        \n        elif self.position == 'bottom right':\n            if self.scale == None:\n                self.scale = 2\n            for line in self.matrix:\n                y = -10 - self.matrix.index( line )*3\n                for col in line:\n                    if col != 0:\n                        self.tex_month += '\\\\node[above left,'+self.textcolor+',opacity='+str(self.opacity)+',scale='+str(self.scale)+'] at (' + str(2.5 + line.index(col)*2.5) + ',' + str(y) + ') {' + str(col) + '};\\n'\n        \n        elif self.position == 'bottom left':\n            if self.scale == None:\n                self.scale = 2\n            for line in self.matrix:\n                y = -10 - self.matrix.index( line )*3\n                for col in line:\n                    if col != 0:\n                        self.tex_month += '\\\\node[above right,'+self.textcolor+',opacity='+str(self.opacity)+',scale='+str(self.scale)+'] at (' + str(line.index(col)*2.5) + ',' + str(y) + ') {' + str(col) + '};\\n'\n        \n        self.tex_month += '\\\\end{tikzpicture}'\n        \n        return self.tex_month\n    \n   def export(self, L = range(1,13), filename = 'calendrier-', erase = False):\n        filename = filename+str(self.year)\n        tex = '\\\\documentclass[12pt,a4paper]{article}\\n\\\\usepackage{nopageno}\\n\\\\usepackage[hmargin=1.75cm, vmargin=1cm]{geometry}\\n\\\\setlength{\\\\parindent}{0pt}\\n\\\\usepackage{tikz}\\n\\\\usetikzlibrary{calc}\\n'\n        tex += '\\\\begin{document}\\n'\n        for month in L:\n            tex += self.export_month(month)\n            if month != L[-1]:\n                tex += '\\n\\\\newpage\\n'\n                \n        tex += '\\n\\\\end{document}'\n        \n        if os.path.isfile(filename+\".tex\"):\n            os.remove(filename+\".tex\")\n            \n        fichier = open(filename+\".tex\",\"x\" , encoding='utf-8')\n        fichier.write(tex)\n        fichier.close()\n        cmd = \"pdflatex  --shell-escape -synctex=1 -interaction=nonstopmode \"+filename+\".tex\"\n        os.system(cmd)\n        \n        if erase:\n            os.remove(filename+\".tex\")\n            os.remove(filename+\".aux\")\n            os.remove(filename+\".log\")\n            os.remove(filename+\".synctex.gz\")\n        \n        cmd = \"START \"+filename+\".pdf\"\n        os.system(cmd)\n        \n\nC = Calendrier(2023)\n\"\"\"\nC.export([7]) # exporte le mois de juillet\nC.export([7,8]) # exporte les mois de juillet et ao\u00fbt\n\"\"\"\nC.export(erase=True) # exporte le calendrier entier de l'ann\u00e9e<\/pre>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">La commande suivante:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; C = Calendrier(2023)\n&gt;&gt;&gt; C.export(erase=True)<\/code><\/pre>\n\n\n\n<p class=\"is-style-Paragraph-paragraph wp-block-paragraph\">donne le r\u00e9sultat ci-dessous:<\/p>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2023\/07\/calendrier-2023.pdf\" type=\"application\/pdf\" style=\"width:100%;height:600px\" aria-label=\"Contenu embarqu\u00e9 calendrier-2023.\"><\/object><a id=\"wp-block-file--media-0ee3cfec-6e87-47c9-942a-c6f57772416c\"  href=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2023\/07\/calendrier-2023.pdf\" data-fancybox data-type=\"iframe\" data-width=\"90%\" data-height=\"100%\" data-preload=\"false\">calendrier-2023<\/a><a  href=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2023\/07\/calendrier-2023.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-0ee3cfec-6e87-47c9-942a-c6f57772416c\" data-fancybox data-type=\"iframe\" data-width=\"90%\" data-height=\"100%\" data-preload=\"false\">T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;objectif de cet article est de voir une mani\u00e8re de cr\u00e9er un calendrier d&rsquo;une ann\u00e9e donn\u00e9e \u00e0 l&rsquo;aide de Python et de LaTeX (pour l&rsquo;export en PDF).<\/p>\n","protected":false},"author":1,"featured_media":8621,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,5],"tags":[],"class_list":["post-8618","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-latex","category-python"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Cr\u00e9er un calendrier \u00e0 l&#039;aide de Python et LaTeX - Mathweb.fr<\/title>\n<meta name=\"description\" content=\"L&#039;objectif de cet article est de voir une mani\u00e8re de cr\u00e9er un calendrier d&#039;une ann\u00e9e donn\u00e9e \u00e0 l&#039;aide de Python et de LaTeX.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cr\u00e9er un calendrier \u00e0 l&#039;aide de Python et LaTeX - Mathweb.fr\" \/>\n<meta property=\"og:description\" content=\"L&#039;objectif de cet article est de voir une mani\u00e8re de cr\u00e9er un calendrier d&#039;une ann\u00e9e donn\u00e9e \u00e0 l&#039;aide de Python et de LaTeX.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/\" \/>\n<meta property=\"og:site_name\" content=\"Mathweb.fr\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-05T07:32:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-09T14:52:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2023\/07\/head-articles-python-calendrier-latex.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"740\" \/>\n\t<meta property=\"og:image:height\" content=\"198\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"St\u00e9phane Pasquet\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"St\u00e9phane Pasquet\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2023\\\/07\\\/05\\\/creer-un-calendrier-a-laide-de-python-et-latex\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2023\\\/07\\\/05\\\/creer-un-calendrier-a-laide-de-python-et-latex\\\/\"},\"author\":{\"name\":\"St\u00e9phane Pasquet\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\"},\"headline\":\"Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et LaTeX\",\"datePublished\":\"2023-07-05T07:32:40+00:00\",\"dateModified\":\"2024-06-09T14:52:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2023\\\/07\\\/05\\\/creer-un-calendrier-a-laide-de-python-et-latex\\\/\"},\"wordCount\":622,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2023\\\/07\\\/05\\\/creer-un-calendrier-a-laide-de-python-et-latex\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/head-articles-python-calendrier-latex.jpg\",\"articleSection\":[\"LaTeX\",\"Python\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2023\\\/07\\\/05\\\/creer-un-calendrier-a-laide-de-python-et-latex\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2023\\\/07\\\/05\\\/creer-un-calendrier-a-laide-de-python-et-latex\\\/\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2023\\\/07\\\/05\\\/creer-un-calendrier-a-laide-de-python-et-latex\\\/\",\"name\":\"Cr\u00e9er un calendrier \u00e0 l'aide de Python et LaTeX - Mathweb.fr\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2023\\\/07\\\/05\\\/creer-un-calendrier-a-laide-de-python-et-latex\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2023\\\/07\\\/05\\\/creer-un-calendrier-a-laide-de-python-et-latex\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/head-articles-python-calendrier-latex.jpg\",\"datePublished\":\"2023-07-05T07:32:40+00:00\",\"dateModified\":\"2024-06-09T14:52:02+00:00\",\"description\":\"L'objectif de cet article est de voir une mani\u00e8re de cr\u00e9er un calendrier d'une ann\u00e9e donn\u00e9e \u00e0 l'aide de Python et de LaTeX.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2023\\\/07\\\/05\\\/creer-un-calendrier-a-laide-de-python-et-latex\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2023\\\/07\\\/05\\\/creer-un-calendrier-a-laide-de-python-et-latex\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2023\\\/07\\\/05\\\/creer-un-calendrier-a-laide-de-python-et-latex\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/head-articles-python-calendrier-latex.jpg\",\"contentUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/head-articles-python-calendrier-latex.jpg\",\"width\":740,\"height\":198,\"caption\":\"calendrier latex python\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2023\\\/07\\\/05\\\/creer-un-calendrier-a-laide-de-python-et-latex\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cr\u00e9er un calendrier \u00e0 l&#8217;aide de Python et LaTeX\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#website\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/\",\"name\":\"Mathweb.fr\",\"description\":\"Math\u00e9matiques, LaTeX et Python\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\",\"name\":\"St\u00e9phane Pasquet\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\",\"contentUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\",\"width\":74,\"height\":77,\"caption\":\"St\u00e9phane Pasquet\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cr\u00e9er un calendrier \u00e0 l'aide de Python et LaTeX - Mathweb.fr","description":"L'objectif de cet article est de voir une mani\u00e8re de cr\u00e9er un calendrier d'une ann\u00e9e donn\u00e9e \u00e0 l'aide de Python et de LaTeX.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/","og_locale":"fr_FR","og_type":"article","og_title":"Cr\u00e9er un calendrier \u00e0 l'aide de Python et LaTeX - Mathweb.fr","og_description":"L'objectif de cet article est de voir une mani\u00e8re de cr\u00e9er un calendrier d'une ann\u00e9e donn\u00e9e \u00e0 l'aide de Python et de LaTeX.","og_url":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/","og_site_name":"Mathweb.fr","article_published_time":"2023-07-05T07:32:40+00:00","article_modified_time":"2024-06-09T14:52:02+00:00","og_image":[{"width":740,"height":198,"url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2023\/07\/head-articles-python-calendrier-latex.jpg","type":"image\/jpeg"}],"author":"St\u00e9phane Pasquet","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"St\u00e9phane Pasquet","Dur\u00e9e de lecture estim\u00e9e":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#article","isPartOf":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/"},"author":{"name":"St\u00e9phane Pasquet","@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69"},"headline":"Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et LaTeX","datePublished":"2023-07-05T07:32:40+00:00","dateModified":"2024-06-09T14:52:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/"},"wordCount":622,"commentCount":2,"publisher":{"@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69"},"image":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2023\/07\/head-articles-python-calendrier-latex.jpg","articleSection":["LaTeX","Python"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/","url":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/","name":"Cr\u00e9er un calendrier \u00e0 l'aide de Python et LaTeX - Mathweb.fr","isPartOf":{"@id":"https:\/\/www.mathweb.fr\/euclide\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#primaryimage"},"image":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2023\/07\/head-articles-python-calendrier-latex.jpg","datePublished":"2023-07-05T07:32:40+00:00","dateModified":"2024-06-09T14:52:02+00:00","description":"L'objectif de cet article est de voir une mani\u00e8re de cr\u00e9er un calendrier d'une ann\u00e9e donn\u00e9e \u00e0 l'aide de Python et de LaTeX.","breadcrumb":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#primaryimage","url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2023\/07\/head-articles-python-calendrier-latex.jpg","contentUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2023\/07\/head-articles-python-calendrier-latex.jpg","width":740,"height":198,"caption":"calendrier latex python"},{"@type":"BreadcrumbList","@id":"https:\/\/www.mathweb.fr\/euclide\/2023\/07\/05\/creer-un-calendrier-a-laide-de-python-et-latex\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.mathweb.fr\/euclide\/"},{"@type":"ListItem","position":2,"name":"Cr\u00e9er un calendrier \u00e0 l&#8217;aide de Python et LaTeX"}]},{"@type":"WebSite","@id":"https:\/\/www.mathweb.fr\/euclide\/#website","url":"https:\/\/www.mathweb.fr\/euclide\/","name":"Mathweb.fr","description":"Math\u00e9matiques, LaTeX et Python","publisher":{"@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mathweb.fr\/euclide\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":["Person","Organization"],"@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69","name":"St\u00e9phane Pasquet","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp","url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp","contentUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp","width":74,"height":77,"caption":"St\u00e9phane Pasquet"},"logo":{"@id":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp"}}]}},"_links":{"self":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/posts\/8618","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/comments?post=8618"}],"version-history":[{"count":0,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/posts\/8618\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/media\/8621"}],"wp:attachment":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/media?parent=8618"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/categories?post=8618"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/tags?post=8618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}