Org-mode: Dupliquer une note

Un petit article pour vous montrer comment, avec Org-mode, vous pouvez dupliquer des notes tout en adaptant leurs dates.

Avant-propos: Les raccourcis clavier

Dans cette article, je vais parler de raccourcis clavier. Si je note le raccourcis C-c C-s, cela veut dire "Contrôle + c, relâcher, puis Contrôle + s". M-x voulant dire "Meta + x". "Meta" correspondant à "Alt".

Revenons au sujet de l'article

Exemple de répétition

Prenons un exemple simple: Toutes les semaines, pendant 15 semaines, vous suivez un cours à la même heure.

Vous souhaitez que chaque session de cours soit visible dans l'agenda et, pour chacune d'entre elles, vous souhaitez prendre des notes.

Première approche: Une tâche planifiée avec répétition

Une première façon de faire, c'est de:

  • Créer une tâche Org-mode
  • Lui ajouter une planification (Un champ SCHEDULED)
  • Ajouter une répétition dans la planification
  • Ajouter le document Org-mode à Org-agenda, si pas déjà fait

Ainsi, le cours sera visible dans l'agenda, chaque semaine.

Nous pouvons maintenant, chaque semaine, créer une nouvelle note pour chaque session. Et dans chacune de ces notes, écrire les points importants.

Mais c'est un peut redondant de recréer une note pour chaque session. Et pour la tâche qu'on vient de créer, on doit aussi gérer la date de fin. Et qu'en est-il des vacances ?

C'est pour cela qu'il existe une autre approche.

Deuxième approche: Duplication de notes

Pour cette approche, nous allons faire ceci:

  • Créer une note pour la première session, avec une date et une heure dans le titre
  • Demander à Emacs de dupliquer cette note et d'adapter la date
  • Supprimer les notes correspondant à des jours de vacance

Pour commencer, je crée la note pour la première session:

* <2023-07-07 ven 17:30-19:00> Session cours de programmation

La date et l'heure peuvent être insérées avec la fonction org-time-stamp (raccourcis clavier C-c .).

Maintenant, je place le curseur d'écriture sur la note et j'appelle la fonction org-clone-subrtee-with-time-shift avec le raccourcis M-x.

Emacs va demander combien de copie je souhaite et quel décalage pour la date. Pour cette exemple, j'indique 15 copies avec un décalage de +1w (plus une semaine). Voici le résultat:

* <2023-07-07 ven 17:30-19:00> Session cours de programmation
* <2023-07-14 ven 17:30-19:00> Session cours de programmation
* <2023-07-21 ven 17:30-19:00> Session cours de programmation
* <2023-07-28 ven 17:30-19:00> Session cours de programmation
* <2023-08-04 ven 17:30-19:00> Session cours de programmation
* <2023-08-11 ven 17:30-19:00> Session cours de programmation
* …

Ensuite, je peux supprimer les notes correspondantes aux jours de vacances.

Si ce n'est pas déjà fait, j'ajoute le document Org-mode à Org-agenda avec la fonction org-agenda-file-to-front (raccourcis clavier C-c [).

Et voilà, chacune des sessions sera visible dans mon agenda Org-mode. Et dans chacune d'entre elles, je peux prendre des notes:

* <2023-07-07 ven 17:30-19:00> Session cours de programmation

- Présentation du cours et de ses modalités
- Plan du cours
- Introduction et histoire de la programmation
  - …

* <2023-07-14 ven 17:30-19:00> Session cours de programmation

- Suite de l'histoire de la programmation

* <2023-07-21 ven 17:30-19:00> Session cours de programmation
* <2023-07-28 ven 17:30-19:00> Session cours de programmation
* <2023-08-04 ven 17:30-19:00> Session cours de programmation
* <2023-08-11 ven 17:30-19:00> Session cours de programmation
* …

Flexibilité

Vois pouvez bien-sûr adapter la façon d'organiser ces notes.

Par exemple, créer simplement une section pour chaque cours et y regrouper toutes vos notes.

Personnellement, je crée un document Org-mode par cours. Le document possède un tag unique qui représente le cours. Dans chaque document, j'ai les sections suivantes:

  • Informations pratiques (Nom et e-mail du ou de la prof, numéro de salle, etc)
  • Projets et tâches (Les travaux pratiques notés, les devoirs, etc)
  • Sessions (regroupe toutes les sessions de cours)
  • Documents distribués (PDF, présentations, etc)
  • Labos (Notes sur les exercices pratiques)
  • Synthèse (Ré-écriture de mes notes, regroupant toutes les autres)
  • Remarques

Dans "Sessions", je crée une note pour chaque session de cours, comme décrit dans cet article.

Dans "Documents distribués", je crée une note pour chaque document, que je vais attacher avec la fonction org-attach. J'utilise ensuite Org-noter pour prendre les notes sur les documents eux-mêmes.

"Synthèse" me sert à ré-écrire toutes mes notes, à partir des notes de cours, de documents distribués et de labo. J'essaye de les écrire comme-ci j'expliquais le sujet du cours à une personne qui le verrai pour la première fois.

Conclusion

org-clone-subtree-with-time-shift est une fonction simple mais que s'avère assez pratique. Si vous voulez en savoir plus à son sujet, je vois invite à lise sa documentation avec le raccourcis clavier C-h f org-clone-subtree-with-time-shift.