{"id":7632,"date":"2022-06-04T17:45:59","date_gmt":"2022-06-04T15:45:59","guid":{"rendered":"https:\/\/www.mathweb.fr\/euclide\/?p=7632"},"modified":"2022-06-04T17:59:33","modified_gmt":"2022-06-04T15:59:33","slug":"creer-un-calendrier-a-laide-de-python-et-de-latex","status":"publish","type":"post","link":"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/","title":{"rendered":"Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et de LaTeX"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et de LaTeX (le langage de programmation) n&rsquo;est pas si compliqu\u00e9 que cela quand on se penche sur la question s\u00e9rieusement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C&rsquo;est un peu long, mais pas compliqu\u00e9.<\/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\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/#Creer_un_calendrier_a_laide_de_Python_et_LaTeX_quel_module_choisir\" >Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et LaTeX: quel module choisir ?<\/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\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/#Creer_un_calendrier_a_laide_de_Python_et_LaTeX_la_structure_du_fichier_tex\" >Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et LaTeX: la structure du fichier tex<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/#Creer_un_calendrier_a_laide_de_Python_et_LaTeX_la_fonction_Python\" >Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et LaTeX: la fonction Python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/#Un_exemple_customise\" >Un exemple customis\u00e9<\/a><\/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_quel_module_choisir\"><\/span>Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et LaTeX: quel module choisir ?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il existe un module Python d\u00e9di\u00e9 aux calendriers: le bien nomm\u00e9 <em><a href=\"https:\/\/docs.python.org\/fr\/3\/library\/calendar.html#calendar.Calendar\" target=\"_blank\" rel=\"noreferrer noopener\">calendar<\/a><\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La premi\u00e8re fois que je m&rsquo;y suis pench\u00e9, c&rsquo;est \u00e0 dire ce jour, j&rsquo;ai trouv\u00e9 la documentation bien merdique&#8230; Aucun exemple n&rsquo;est donn\u00e9, et je n&rsquo;aime pas \u00e7a car je suis oblig\u00e9 de lire tout ce qui est \u00e9crit, et j&rsquo;\u00e9tais press\u00e9! Donc \u00e7a, c&rsquo;est un mauvais point, mais peu importe! <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Comme je suis motiv\u00e9, je me mets \u00e0 lire et m&rsquo;aper\u00e7ois au final que je n&rsquo;ai pas \u00e0 lire beaucoup. En effet, <em><code>itermonthdates<\/code><\/em> semble convenir \u00e0 mes attentes. C&rsquo;est un it\u00e9rateur que l&rsquo;on peut parcourir.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Creer_un_calendrier_a_laide_de_Python_et_LaTeX_la_structure_du_fichier_tex\"><\/span>Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et LaTeX: la structure du fichier tex<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il fallait avant tout que je r\u00e9fl\u00e9chisse \u00e0 l&rsquo;apparence du calendrier que je voulais. Un truc tout simple: une grille avec le mois affich\u00e9 dessous (par exemple) et les dates dans chaque coin de case, en bas \u00e0 droite (par exemple).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-1.png\" data-fancybox=\"gallery\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-1-1024x588.png\" alt=\"calendrier python latex\" class=\"wp-image-7634\" srcset=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-1-1024x588.png 1024w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-1-300x172.png 300w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-1-600x344.png 600w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-1-768x441.png 768w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-1.png 1293w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">C&rsquo;est assez rudimentaire, mais c&rsquo;est suffisant pour avoir une base sur laquelle travailler.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Creer_un_calendrier_a_laide_de_Python_et_LaTeX_la_fonction_Python\"><\/span>Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et LaTeX: la fonction Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Je vais g\u00e9n\u00e9rer un fichier \\(\\LaTeX\\) puis le compiler pour obtenir un PDF.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Je vais utiliser TiKZ pour la solution graphique car je suis plus \u00e0 l&rsquo;aise avec celle-ci qu&rsquo;avec PSTricks par exemple.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Je voudrais une fonction de la forme:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; calendarTEX(6,2022)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bien entendu, il faudra inclure des options pour customiser ce calendrier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alors voil\u00e0 ce que cela donne:<\/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=\"\">from calendar import Calendar\nimport os.path\n\ndef calendarTEX( current_month , current_year , \n                        hauteur     = '2cm' , \n                        largeur     = '3cm' ,\n                        calendarGridStyle = 'line width = 0.5pt , draw = black',\n                        calendarBgStyle = 'fill = white',\n                        monthStyle  = 'text = black , font = \\\\Huge\\\\bfseries', \n                        dayStyle    = 'text = black , font = \\\\Large\\\\bfseries', \n                        dayInStyle  = 'text = black , above left', \n                        dayOutStyle = 'text = gray , above left',\n                        preambuleTEX= '',\n                        out        = True, \n                        name        = None):\n    \"\"\"\n    current_month : mois souhait\u00e9\n    current_year  : ann\u00e9e souhait\u00e9e\n    options : dictionnaire contenant :\n                            ....... (hauteur)     la hauteur des cases (par d\u00e9faut : 2cm)\n                            ....... (largeur)     la largeur des cases (par d\u00e9faut : 3cm)\n                            ....... (calendarGridStyle) le style TiKZ de la grille (traits)\n                            ....... (calendarBgStyle)   le style TiKZ du fond\n                            ....... (monthStyle)  le style TiKZ du mois \u00e9cris en bas\n                            ....... (dayStyle)    le style TiKZ dans lequel doivent \u00eatre \u00e9cris les jours en en-t\u00eate des colonnes\n                            ....... (dayInStyle)  le style TiKZ de la date du jour\n                            ....... (dayOutStyle) le style TiKZ de la date du jour si le jour est en-dehors du mois (gris par d\u00e9faut)\n                            ....... (preambuleTEX) l'\u00e9ventuel pr\u00e9ambule au fichier LaTeX\n                            ....... (out)         (True|False) pour savoir s'il faut g\u00e9n\u00e9rer un PDF\/fichier TEX\n                            ....... (name)        le nom du fichier s'il faut en g\u00e9n\u00e9rer un\n    \"\"\"\n    C = Calendar()\n    nb_lines = sum(1 for _ in C.itermonthdates(current_year,current_month) ) \/\/ 7\n    days = [ 'Lundi' , 'Mardi' , 'Mercredi' , 'Jeudi' , 'Vendredi' , 'Samedi' , 'Dimanche' ]\n    months = [ 'janvier' , 'f\u00e9vrier' , 'mars' , 'avril' , 'mai' , 'juin' , 'juillet', 'ao\u00fbt' , 'septembre' , 'octobre' , 'novembre' , 'd\u00e9cembre' ]\n    \n    tex =  \"\\\\documentclass{standalone}\\n\"\n    tex += \"\\\\usepackage{tikz}\\n\"\n    tex += \"\\\\usetikzlibrary{calc}\\n\"\n    tex += \"\\\\newlength{\\\\hauteur}\\n\"\n    tex += preambuleTEX\n    tex += \"\\\\newlength{\\\\largeur}\\n\"\n    tex += \"\\\\setlength{\\\\hauteur}{\"+hauteur+\"}\\n\"\n    tex += \"\\\\setlength{\\\\largeur}{\"+largeur+\"}\\n\"\n    tex += \"\\\\begin{document}\\n\"\n    tex += \"\\\\tikzset{month\/.style = { \"+monthStyle+\"}}%\\n\"\n    tex += \"\\\\tikzset{day\/.style   = { \"+dayStyle+\"}}%\\n\"\n    tex += \"\\\\tikzset{calendarGrid\/.style   = { \"+calendarGridStyle+\"}}%\\n\"\n    tex += \"\\\\tikzset{calendarBG\/.style   = { \"+calendarBgStyle+\"}}%\\n\"\n    tex += \"\\\\begin{tikzpicture}\\n\"\n    tex += \"\\\\node[month] at (10.5,-1) {\"+months[current_month-1].upper()+\" \"+ str(current_year) +\"};\\n\"\n    tex += f\"\\\\filldraw[calendarBG] (0,0) rectangle (7*\\\\largeur,{nb_lines}*\\\\hauteur);\\n\"\n    tex += f\"\\\\filldraw[calendarGrid] (0,0) grid[xstep = \\\\largeur , ystep = \\\\hauteur] (7*\\\\largeur,{nb_lines}*\\\\hauteur);\\n\"\n    for d in days:\n        tex += \"\\\\node[day] at ({\\\\largeur\/2+\\\\largeur*\"+str(days.index(d))+\"},{\"+str(nb_lines)+\"*\\\\hauteur+0.5cm}) {\"+d+\"};\\n\"\n\n    column , line = 1, nb_lines-1\n\n    for d in C.itermonthdates(current_year,current_month):\n        if d.month != current_month:\n            styleday = dayOutStyle\n        else:\n            styleday = dayInStyle\n            \n        tex += \"\\\\node[\"+styleday+\"] at (\\\\largeur*\" + str(column) + \" , \\\\hauteur*\" + str(line) + \" ) {\"+str(d.day)+\"};\\n\"\n        \n        column += 1\n        if column == 8:\n            column = 1\n            line -= 1\n\n    tex += \"\\\\end{tikzpicture}\\n\"\n    tex += \"\\\\end{document}\"\n    \n    if out:\n        if name == None:\n            file = \"calendar-\"+str(current_year)+str(current_month)+\".tex\"\n        else:\n            file = name + \".tex\"\n            \n        if os.path.exists(file):\n            os.remove(file)\n\n        fichier = open(file , \"x\") # \"x\" pour la cr\u00e9ation et l'\u00e9criture\n        fichier.write(tex)\n        fichier.close()\n        \n        instructions = \"pdflatex \" + file\n        os.system(instructions)\n\n        readpdf = \"START \" + file[:-4] + \".pdf\"\n        os.system(readpdf)\n    else:\n        return tex<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Les options de la fonction sont:<\/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=\"\">def calendarTEX( current_month , current_year , \n                        hauteur     = '2cm' , \n                        largeur     = '3cm' ,\n                        calendarGridStyle = 'line width = 0.5pt , draw = black',\n                        calendarBgStyle = 'fill = white',\n                        monthStyle  = 'text = black , font = \\\\Huge\\\\bfseries', \n                        dayStyle    = 'text = black , font = \\\\Large\\\\bfseries', \n                        dayInStyle  = 'text = black , above left', \n                        dayOutStyle = 'text = gray , above left',\n                        preambuleTEX= '',\n                        out        = True, \n                        name        = None):\n    \"\"\"\n    current_month : mois souhait\u00e9\n    current_year  : ann\u00e9e souhait\u00e9e\n    options : dictionnaire contenant :\n                            ....... (hauteur)     la hauteur des cases (par d\u00e9faut : 2cm)\n                            ....... (largeur)     la largeur des cases (par d\u00e9faut : 3cm)\n                            ....... (calendarGridStyle) le style TiKZ de la grille (traits)\n                            ....... (calendarBgStyle)   le style TiKZ du fond\n                            ....... (monthStyle)  le style TiKZ du mois \u00e9cris en bas\n                            ....... (dayStyle)    le style TiKZ dans lequel doivent \u00eatre \u00e9cris les jours en en-t\u00eate des colonnes\n                            ....... (dayInStyle)  le style TiKZ de la date du jour\n                            ....... (dayOutStyle) le style TiKZ de la date du jour si le jour est en-dehors du mois (gris par d\u00e9faut)\n                            ....... (preambuleTEX) l'\u00e9ventuel pr\u00e9ambule au fichier LaTeX\n                            ....... (out)         (True|False) pour savoir s'il faut g\u00e9n\u00e9rer un PDF\/fichier TEX\n                            ....... (name)        le nom du fichier s'il faut en g\u00e9n\u00e9rer un\n    \"\"\"<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Un_exemple_customise\"><\/span>Un exemple customis\u00e9<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>calendarTEX(7 , 2022 ,\n            preambuleTEX = \"\\\\usepackage{emerald}\\\\usetikzlibrary{fadings}\\n\",\n            calendarGridStyle = 'line width=1pt, draw = blue, path fading = south',\n            calendarBgStyle = 'line width=0pt,fill=white,draw=white',\n            monthStyle  = 'text = blue!50!black , font = \\\\ECFJD\\\\Huge\\\\bfseries, rounded corners = 3mm, draw = blue!50!black , line width = 3pt, fill = blue!20',\n            dayStyle    = 'text = green!50!black , font = \\\\ECFJD\\\\Large , rounded corners = 2mm , draw = green!50!black , fill = green!20',\n            dayInStyle  = 'text = orange , above left , font = \\\\ECFJD',\n            dayOutStyle = 'text = gray!50!orange , above left , opacity = 0.5 , font = \\\\ECFJD')<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"610\" src=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-6-1024x610.png\" alt=\"calendrier python tikz latex\" class=\"wp-image-7643\" srcset=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-6-1024x610.png 1024w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-6-300x179.png 300w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-6-600x358.png 600w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-6-768x458.png 768w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-6.png 1262w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>calendarTEX(7 , 2022 ,\n            preambuleTEX = \"\\\\usepackage{emerald}\\\\usetikzlibrary{fadings}\\n\\\\tikzfading&#91;name=fade right, left color=transparent!0, right color=transparent!100]\",\n            calendarBgStyle = 'blue!20, path fading = fade right',\n            calendarGridStyle = 'blue!50!black, line width=1pt',\n            monthStyle  = 'text = blue!50!black , font = \\\\ECFJD\\\\Huge\\\\bfseries, rounded corners = 3mm, draw = blue!50!black , line width = 3pt, fill = blue!20, inner sep = 3mm',\n            dayStyle    = 'text = green!50!black , font = \\\\ECFJD\\\\Large , rounded corners = 2mm , draw = green!50!black , fill = green!20',\n            dayInStyle  = 'text = orange , above left , font = \\\\ECFJD',\n            dayOutStyle = 'text = gray!50!orange , above left , opacity = 0.5 , font = \\\\ECFJD')<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"614\" src=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-7-1024x614.png\" alt=\"calendrier python latex tikz\" class=\"wp-image-7645\" srcset=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-7-1024x614.png 1024w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-7-300x180.png 300w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-7-600x360.png 600w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-7-768x461.png 768w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/image-7.png 1244w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Cr\u00e9er un calendrier \u00e0 l&rsquo;aide de Python et de LaTeX (le langage de programmation) n&rsquo;est pas si compliqu\u00e9 que cela quand on se penche sur la question s\u00e9rieusement. C&rsquo;est un peu long, mais pas compliqu\u00e9.<\/p>\n","protected":false},"author":1,"featured_media":7637,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,5],"tags":[347,88,101,224],"class_list":["post-7632","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-informatique","category-python","tag-calendrier","tag-latex","tag-python","tag-tikz"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Cr\u00e9er un calendrier \u00e0 l&#039;aide de Python et de LaTeX - Mathweb.fr<\/title>\n<meta name=\"description\" content=\"Cr\u00e9er un calendrier \u00e0 l&#039;aide de Python et de LaTeX n&#039;est pas si compliqu\u00e9 que cela quand on se penche sur la question s\u00e9rieusement.\" \/>\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\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-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 de LaTeX - Mathweb.fr\" \/>\n<meta property=\"og:description\" content=\"Cr\u00e9er un calendrier \u00e0 l&#039;aide de Python et de LaTeX n&#039;est pas si compliqu\u00e9 que cela quand on se penche sur la question s\u00e9rieusement.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/\" \/>\n<meta property=\"og:site_name\" content=\"Mathweb.fr\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-04T15:45:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-06-04T15:59:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/head-articles-python-latex-calendrier.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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2022\\\/06\\\/04\\\/creer-un-calendrier-a-laide-de-python-et-de-latex\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2022\\\/06\\\/04\\\/creer-un-calendrier-a-laide-de-python-et-de-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 de LaTeX\",\"datePublished\":\"2022-06-04T15:45:59+00:00\",\"dateModified\":\"2022-06-04T15:59:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2022\\\/06\\\/04\\\/creer-un-calendrier-a-laide-de-python-et-de-latex\\\/\"},\"wordCount\":325,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2022\\\/06\\\/04\\\/creer-un-calendrier-a-laide-de-python-et-de-latex\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/head-articles-python-latex-calendrier.jpg\",\"keywords\":[\"calendrier\",\"latex\",\"python\",\"tikz\"],\"articleSection\":[\"Informatique\",\"Python\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2022\\\/06\\\/04\\\/creer-un-calendrier-a-laide-de-python-et-de-latex\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2022\\\/06\\\/04\\\/creer-un-calendrier-a-laide-de-python-et-de-latex\\\/\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2022\\\/06\\\/04\\\/creer-un-calendrier-a-laide-de-python-et-de-latex\\\/\",\"name\":\"Cr\u00e9er un calendrier \u00e0 l'aide de Python et de LaTeX - Mathweb.fr\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2022\\\/06\\\/04\\\/creer-un-calendrier-a-laide-de-python-et-de-latex\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2022\\\/06\\\/04\\\/creer-un-calendrier-a-laide-de-python-et-de-latex\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/head-articles-python-latex-calendrier.jpg\",\"datePublished\":\"2022-06-04T15:45:59+00:00\",\"dateModified\":\"2022-06-04T15:59:33+00:00\",\"description\":\"Cr\u00e9er un calendrier \u00e0 l'aide de Python et de LaTeX n'est pas si compliqu\u00e9 que cela quand on se penche sur la question s\u00e9rieusement.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2022\\\/06\\\/04\\\/creer-un-calendrier-a-laide-de-python-et-de-latex\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2022\\\/06\\\/04\\\/creer-un-calendrier-a-laide-de-python-et-de-latex\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2022\\\/06\\\/04\\\/creer-un-calendrier-a-laide-de-python-et-de-latex\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/head-articles-python-latex-calendrier.jpg\",\"contentUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/head-articles-python-latex-calendrier.jpg\",\"width\":740,\"height\":198,\"caption\":\"calendrier python latex\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2022\\\/06\\\/04\\\/creer-un-calendrier-a-laide-de-python-et-de-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&rsquo;aide de Python et de 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 de LaTeX - Mathweb.fr","description":"Cr\u00e9er un calendrier \u00e0 l'aide de Python et de LaTeX n'est pas si compliqu\u00e9 que cela quand on se penche sur la question s\u00e9rieusement.","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\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/","og_locale":"fr_FR","og_type":"article","og_title":"Cr\u00e9er un calendrier \u00e0 l'aide de Python et de LaTeX - Mathweb.fr","og_description":"Cr\u00e9er un calendrier \u00e0 l'aide de Python et de LaTeX n'est pas si compliqu\u00e9 que cela quand on se penche sur la question s\u00e9rieusement.","og_url":"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/","og_site_name":"Mathweb.fr","article_published_time":"2022-06-04T15:45:59+00:00","article_modified_time":"2022-06-04T15:59:33+00:00","og_image":[{"width":740,"height":198,"url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/head-articles-python-latex-calendrier.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":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/#article","isPartOf":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-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 de LaTeX","datePublished":"2022-06-04T15:45:59+00:00","dateModified":"2022-06-04T15:59:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/"},"wordCount":325,"commentCount":0,"publisher":{"@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69"},"image":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/head-articles-python-latex-calendrier.jpg","keywords":["calendrier","latex","python","tikz"],"articleSection":["Informatique","Python"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/","url":"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/","name":"Cr\u00e9er un calendrier \u00e0 l'aide de Python et de LaTeX - Mathweb.fr","isPartOf":{"@id":"https:\/\/www.mathweb.fr\/euclide\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/#primaryimage"},"image":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/head-articles-python-latex-calendrier.jpg","datePublished":"2022-06-04T15:45:59+00:00","dateModified":"2022-06-04T15:59:33+00:00","description":"Cr\u00e9er un calendrier \u00e0 l'aide de Python et de LaTeX n'est pas si compliqu\u00e9 que cela quand on se penche sur la question s\u00e9rieusement.","breadcrumb":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-latex\/#primaryimage","url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/head-articles-python-latex-calendrier.jpg","contentUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2022\/06\/head-articles-python-latex-calendrier.jpg","width":740,"height":198,"caption":"calendrier python latex"},{"@type":"BreadcrumbList","@id":"https:\/\/www.mathweb.fr\/euclide\/2022\/06\/04\/creer-un-calendrier-a-laide-de-python-et-de-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&rsquo;aide de Python et de 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\/7632","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=7632"}],"version-history":[{"count":0,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/posts\/7632\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/media\/7637"}],"wp:attachment":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/media?parent=7632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/categories?post=7632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/tags?post=7632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}