Créer un calendrier à l’aide de Python et de LaTeX (le langage de programmation) n’est pas si compliqué que cela quand on se penche sur la question sérieusement.
Créer un calendrier à l’aide de Python et LaTeX: quel module choisir ?
Il existe un module Python dédié aux calendriers: le bien nommé calendar.
La première fois que je m’y suis penché, c’est à dire ce jour, j’ai trouvé la documentation bien merdique… Aucun exemple n’est donné, et je n’aime pas ça car je suis obligé de lire tout ce qui est écrit, et j’étais pressé! Donc ça, c’est un mauvais point, mais peu importe!
Comme je suis motivé, je me mets à lire et m’aperçois au final que je n’ai pas à lire beaucoup. En effet, itermonthdates semble convenir à mes attentes. C’est un itérateur que l’on peut parcourir.
Créer un calendrier à l’aide de Python et LaTeX: la structure du fichier tex
Il fallait avant tout que je réfléchisse à l’apparence du calendrier que je voulais. Un truc tout simple: une grille avec le mois affiché dessous (par exemple) et les dates dans chaque coin de case, en bas à droite (par exemple).
C’est assez rudimentaire, mais c’est suffisant pour avoir une base sur laquelle travailler.
Créer un calendrier à l’aide de Python et LaTeX: la fonction Python
Je vais générer un fichier LATEX puis le compiler pour obtenir un PDF.
Je vais utiliser TiKZ pour la solution graphique car je suis plus à l’aise avec celle-ci qu’avec PSTricks par exemple.
Je voudrais une fonction de la forme:
>>> calendarTEX(6,2022)
Bien entendu, il faudra inclure des options pour customiser ce calendrier.
monthStyle = 'text = black , font = \\Huge\\bfseries',
dayStyle = 'text = black , font = \\Large\\bfseries',
dayInStyle = 'text = black , above left',
dayOutStyle = 'text = gray , above left',
preambuleTEX= '',
out = True,
name = None):
"""
current_month : mois souhaité
current_year : année souhaitée
options : dictionnaire contenant :
....... (hauteur) la hauteur des cases (par défaut : 2cm)
....... (largeur) la largeur des cases (par défaut : 3cm)
....... (calendarGridStyle) le style TiKZ de la grille (traits)
....... (calendarBgStyle) le style TiKZ du fond
....... (monthStyle) le style TiKZ du mois écris en bas
....... (dayStyle) le style TiKZ dans lequel doivent être écris les jours en en-tête des colonnes
....... (dayInStyle) le style TiKZ de la date du jour
....... (dayOutStyle) le style TiKZ de la date du jour si le jour est en-dehors du mois (gris par défaut)
....... (preambuleTEX) l'éventuel préambule au fichier LaTeX
....... (out) (True|False) pour savoir s'il faut générer un PDF/fichier TEX
....... (name) le nom du fichier s'il faut en générer un
"""
def calendarTEX( current_month , current_year ,
hauteur = '2cm' ,
largeur = '3cm' ,
calendarGridStyle = 'line width = 0.5pt , draw = black',
calendarBgStyle = 'fill = white',
monthStyle = 'text = black , font = \\Huge\\bfseries',
dayStyle = 'text = black , font = \\Large\\bfseries',
dayInStyle = 'text = black , above left',
dayOutStyle = 'text = gray , above left',
preambuleTEX= '',
out = True,
name = None):
"""
current_month : mois souhaité
current_year : année souhaitée
options : dictionnaire contenant :
....... (hauteur) la hauteur des cases (par défaut : 2cm)
....... (largeur) la largeur des cases (par défaut : 3cm)
....... (calendarGridStyle) le style TiKZ de la grille (traits)
....... (calendarBgStyle) le style TiKZ du fond
....... (monthStyle) le style TiKZ du mois écris en bas
....... (dayStyle) le style TiKZ dans lequel doivent être écris les jours en en-tête des colonnes
....... (dayInStyle) le style TiKZ de la date du jour
....... (dayOutStyle) le style TiKZ de la date du jour si le jour est en-dehors du mois (gris par défaut)
....... (preambuleTEX) l'éventuel préambule au fichier LaTeX
....... (out) (True|False) pour savoir s'il faut générer un PDF/fichier TEX
....... (name) le nom du fichier s'il faut en générer un
"""
def calendarTEX( current_month , current_year ,
hauteur = '2cm' ,
largeur = '3cm' ,
calendarGridStyle = 'line width = 0.5pt , draw = black',
calendarBgStyle = 'fill = white',
monthStyle = 'text = black , font = \\Huge\\bfseries',
dayStyle = 'text = black , font = \\Large\\bfseries',
dayInStyle = 'text = black , above left',
dayOutStyle = 'text = gray , above left',
preambuleTEX= '',
out = True,
name = None):
"""
current_month : mois souhaité
current_year : année souhaitée
options : dictionnaire contenant :
....... (hauteur) la hauteur des cases (par défaut : 2cm)
....... (largeur) la largeur des cases (par défaut : 3cm)
....... (calendarGridStyle) le style TiKZ de la grille (traits)
....... (calendarBgStyle) le style TiKZ du fond
....... (monthStyle) le style TiKZ du mois écris en bas
....... (dayStyle) le style TiKZ dans lequel doivent être écris les jours en en-tête des colonnes
....... (dayInStyle) le style TiKZ de la date du jour
....... (dayOutStyle) le style TiKZ de la date du jour si le jour est en-dehors du mois (gris par défaut)
....... (preambuleTEX) l'éventuel préambule au fichier LaTeX
....... (out) (True|False) pour savoir s'il faut générer un PDF/fichier TEX
....... (name) le nom du fichier s'il faut en générer un
"""
Je vous présente ici une méthode de chiffrement personnel d’images avec Python. Pour se faire, nous allons prendre une image quelconque, par exemple celle-ci: Découvrez les chansons que j'écris. Cliquez ici
Nous allons nous pencher dans cet article sur une manière d’utiliser la POO en Python afin d’ajouter des durées. Oui, j’aime ce paradigme de programmation… Découvrez les chansons que j'écris. Cliquez ici
Il existe plusieurs manières de créer un nuage de mots en Python. Tout dépend de se que l’on veut. Nous allons en discuter ici. Découvrez les chansons que j'écris. Cliquez ici
wpDiscuz
0
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x