Vous êtes sur la page 1sur 507

Le manuel

d'organisation Version 9.6

Les développeurs du mode Org


Ce manuel concerne la version 9.6 d'Org.
Copyright ⃝c 2004-2023 Free Software Foundation, Inc.
Il est permis de copier, distribuer et/ou modifier ce document selon les
termes de la licence de documentation libre GNU, version 1.3 ou toute
version ultérieure publiée par la Free Software Foundation ; sans sections
invariantes, avec les textes de la première de couverture étant "Un manuel
GNU", et avec les textes de la quatrième de couverture comme indiqué au
point (a) ci-dessous. Une copie de la licence est incluse dans la section
intitulée "Licence de documentation libre GNU".
(a) Le texte de la FSF en quatrième de couverture est le suivant : "Vous
avez la liberté de copier et de modifier ce manuel GNU".
i

Table des matières

1 Introduction....................................................................1
1.1 Résumé ..................................................................................................1
1.2 Installation ..............................................................................................2
1.3 Activation ................................................................................................3
1.4 Retour d'expérience ..............................................................................3
1.5 Conventions de composition utilisées dans ce manuel...................5

2 Structure du document...............................................6
2.1 A la une...................................................................................................6
2.2 Visibilité Cyclisme .................................................................................6
2.2.1 Cyclisme mondial et local ............................................................6
2.2.2 Visibilité initiale..............................................................................8
2.2.3 Rattraper les modifications invisibles.........................................8
2.3 Mouvement ............................................................................................8
2.4 Édition de la structure ...........................................................................9
2.5 Arbres épars .........................................................................................11
2.6 Listes simples ......................................................................................12
2.7 Tiroirs....................................................................................................15
2.8 Blocs .....................................................................................................15

3 Tables .............................................................................17
3.1 Éditeur de tableaux intégré................................................................17
3.2 Largeur et alignement des colonnes ................................................21
3.3 Groupes de colonnes .........................................................................22
3.4 Le mode mineur Orgtbl ......................................................................22
3.5 La feuille de calcul...............................................................................23
3.5.1 Références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
........
3.5.2 Syntaxe de la formule pour Calc . . . . . . . . . . . . . . . . . . . . . . 25
............
3.5.3 Formes Emacs Lisp en tant que formules . . . . . . . . . . . . . . 27
..............
3.5.4 Durées et valeurs temporelles . . . . . . . . . . . . . . . . . . . . . . . 28
.........
3.5.5 Formules de champ et de plage . . . . . . . . . . . . . . . . . . . . . . 28
...........
3.5.6 Formules des colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
............
3.5.7 Fonctions de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
............
3.5.8 Édition et débogage des formules . . . . . . . . . . . . . . . . . . . . 30
......
3.5.9 Mise à jour du tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
. . . . . . . . . . . . . . . . . . . . . . . . ...........................
..
3.5.10 Caractéristiques avancées . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
...........
3.6 Org Tracé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..........
ii
...........
iii

4 Hyperliens .....................................................................38
4.1 Format du lien......................................................................................38
4.2 Liens internes ......................................................................................39
4.3 Cibles radio ..........................................................................................40
4.4 Liens externes .....................................................................................40
4.5 Liens sur la manutention ....................................................................42
4.6 Utilisation de liens en dehors d'Org..................................................45
4.7 Abréviations des liens.........................................................................45
4.8 Options de recherche dans les liens de fichiers.............................46
4.9 Recherches personnalisées ..............................................................47

5 Articles TODO .............................................................48


5.1 Fonctionnalité de base de l'ODD ......................................................48
5.2 Utilisation étendue des mots-clés TODO ........................................49
5.2.1 Les mots-clés TODO en tant qu'états du flux de travail .......49
5.2.2 TODO mots-clés comme types ................................................49
5.2.3 Plusieurs séries de mots-clés dans un seul fichier................50
5.2.4 Accès rapide aux états TODO...................................................51
5.2.5 Définition de mots-clés pour des fichiers individuels .............51
5.2.6 Visages pour les mots-clés TODO...........................................51
5.2.7 Dépendances TODO..................................................................52
5.3 Enregistrement des progrès................................................................53
5.3.1 Postes de clôture.........................................................................53
5.3.2 Suivi des changements d'état TODO ......................................53
5.3.3 Suivre ses habitudes..................................................................55
5.4 Priorités ................................................................................................56
5.5 Décomposer les tâches en sous-tâches..........................................57
5.6 Cases à cocher....................................................................................58

6 Tags.................................................................................61
6.1 Étiquette Héritage ...............................................................................61
6.2 Paramétrage des étiquettes...............................................................61
6.3 Hiérarchie des balises ........................................................................64
6.4 Recherches sur les étiquettes ...........................................................65

7 Propriétés et colonnes..............................................67
7.1 Syntaxe des propriétés ......................................................................67
7.2 Propriétés spéciales ............................................................................69
7.3 Recherche de biens............................................................................69
7.4 Héritage des biens ..............................................................................70
7.5 Vue des colonnes................................................................................71
7.5.1 Définition des colonnes .............................................................71
7.5.1.1 Champ d'application des définitions des colonnes...........71
7.5.1.2 Attributs des colonnes .......................................................71
7.5.2 Utilisation de la vue en colonnes..............................................73
7.5.3 Capturer la vue d'une colonne ..................................................74
iv
8 Dates et heures ...........................................................76
8.1 Horodatage ..........................................................................................76
8.2 Création d'horodatages......................................................................77
8.2.1 L'invite date/heure ......................................................................78
8.2.2 Format d'heure personnalisé ....................................................80
8.3 Délais et programmation .....................................................................80
8.3.1 Insertion de délais ou de calendriers........................................82
8.3.2 Tâches répétées ..........................................................................82
8.4 Horodatage du temps de travail ........................................................84
8.4.1 Commandes d'horloge...............................................................84
8.4.2 La table de l'horloge ...................................................................86
8.4.3 Résoudre les problèmes de temps mort et d'horloge continue89
8.5 Estimation de l'effort ...........................................................................91
8.6 Prendre des notes avec un chronomètre relatif..............................92

9 Remise en forme et archivage.............................94


9.1 Refaire et copier..................................................................................94
9.2 Archivage .............................................................................................95
9.2.1 Déplacer un arbre vers un fichier d'archive.............................95
9.2.2 Archivage interne........................................................................96

10 Capture et pièces jointes .......................................97


10.1 Capture...............................................................................................97
10.1.1 Mise en place de la capture ....................................................97
10.1.2 Utilisation de la capture ...........................................................97
10.1.3 Modèles de capture..................................................................98
10.1.3.1 Éléments du modèle ........................................................98
10.1.3.2 Extension du modèle .....................................................102
10.1.3.3 Modèles en contexte .....................................................104
10.2 Pièces jointes...................................................................................104
10.2.1 Défauts d'attachement et répartiteur ...................................104
10.2.2 Options de fixation..................................................................105
10.2.3 Liens vers les pièces jointes .................................................107
10.2.4 Contrôle de version automatique avec Git .........................107
10.2.5 Attachement à partir de Dired ..............................................107
10.3 Flux RSS...........................................................................................108

11 Vues de l'agenda ....................................................109


11.1 Dossiers de l'agenda .......................................................................109
11.2 Le répartiteur de l'agenda ..............................................................110
11.3 Les vues de l'agenda intégré ........................................................111
11.3.1 Agenda hebdomadaire/quotidien .........................................111
11.3.2 La liste globale TODO............................................................114
11.3.3 Correspondance entre les étiquettes et les propriétés .....115
11.3.4 Vue de la recherche .................................................................117
11.3.5 Projets bloqués .......................................................................117
11.4 Présentation et tri ............................................................................118
v
11.4.1 Catégories ...............................................................................118
11.4.2 Spécifications relatives à l'heure du jour .............................119
11.4.3 Tri des points de l'ordre du jour.............................................119
11.4.4 Filtrage/limitation des points de l'ordre du jour...................120
11.5 Commandes dans la mémoire tampon de l'agenda ...................123
11.6 Vues personnalisées de l'agenda .................................................130
11.6.1 Stockage des recherches......................................................131
11.6.2 Agenda en bloc.......................................................................132
11.6.3 Définition des options pour les commandes personnalisées132
11.7 Exportation des vues de l'agenda ................................................133
11.8 Utilisation de l'affichage en colonnes dans l'agenda .................135

12 Balisage pour les contenus enrichis.................137


12.1 Paragraphes ....................................................................................137
12.2 Accentuation et monospace ...........................................................137
12.3 Indices et indices supérieurs..........................................................138
12.4 Symboles spéciaux .........................................................................138
12.5 LATEX embarqué ............................................................................139
12.5.1 Fragments de LATEX...............................................................139
12.5.2 Prévisualisation des fragments LATEX.....................................140
12.5.3 Utiliser CDLATEX pour entrer des données mathématiques140
12.6 Exemples littéraux ..........................................................................141
12.7 Images..............................................................................................143
12.8 Légendes .........................................................................................144
12.9 Règles horizontales ........................................................................145
12.10 Création de notes de bas de page..............................................145

13 L'exportation ...........................................................147
13.1 Le répartiteur d'exportation............................................................147
13.2 Paramètres d'exportation...............................................................148
13.3 Table des matières .........................................................................151
13.4 Inclure les fichiers ...........................................................................152
13.5 Remplacement des macros ...........................................................153
13.6 Lignes de commentaires ................................................................155
13.7 Exportation ASCII/Latin-1/UTF-8 ..................................................155
13.8 Beamer Export.................................................................................157
13.8.1 Commandes d'exportation du Beamer ................................157
13.8.2 Paramètres d'exportation spécifiques au Beamer ..............157
13.8.3 Cadres et blocs dans Beamer...............................................158
13.8.4 Syntaxe spécifique au Beamer ..............................................159
13.8.5 Aide à l'édition.........................................................................160
13.8.6 Un exemple de Beamer.........................................................160
13.9 Exportation HTML ...........................................................................160
13.9.1 Commandes d'exportation HTML ........................................161
13.9.2 Paramètres d'exportation spécifiques à HTML ..................161
13.9.3 Doctypes HTML ......................................................................162
13.9.4 Préambule et postambule HTML .........................................163
13.9.5 Citation des balises HTML ....................................................163
vi
13.9.6 Titres dans l'exportation HTML.............................................163
13.9.7 Liens dans l'exportation HTML .............................................164
13.9.8 Tableaux dans l'exportation HTML ......................................164
13.9.9 Images dans l'exportation HTML..........................................165
13.9.10 Formatage mathématique dans l'exportation HTML .......165
13.9.11 Zones de texte dans l'exportation HTML ..........................166
13.9.12 Support CSS ..........................................................................166
13.9.13 Affichage de pages web en JavaScript ..............................167
13.10 LATEX Export ..................................................................................168
13.10.1 Commandes d'exportation LATEX/PDF ............................168
13.10.2 Paramètres d'exportation spécifiques à LATEX...................169
13.10.3 Structure de l'en-tête et du découpage LATEX......................170
13.10.4 Citation du code LATEX.........................................................172
13.10.5 Tableaux dans l'exportation LATEX........................................172
13.10.6 Images dans l'exportation LATEX ............................................174
13.10.7 Listes simples dans l'exportation LATEX ...........................175
13.10.8 Blocs sources dans l'exportation LATEX ...............................175
13.10.9 Exemples de blocs dans l'exportation LATEX......................176
13.10.10 Blocs spéciaux dans l'exportation LATEX............................176
13.10.11 Règles horizontales dans l'exportation LATEX .................177
13.10.12 Blocs de versets dans l'exportation LATEX...........................177
13.10.13 Blocs de citation dans l'exportation LATEX ........................178
13.11 Exportation Markdown..................................................................178
13.12 OpenDocument Text Export ........................................................179
13.12.1 Conditions préalables à l'exportation ODT .......................179
13.12.2 Commandes d'exportation ODT .........................................179
13.12.3 Paramètres d'exportation spécifiques à l'ODT .................179
13.12.4 Extension de l'exportation ODT..........................................180
13.12.5 Application de styles personnalisés...................................180
13.12.6 Liens dans l'exportation ODT..............................................181
13.12.7 Tableaux dans l'exportation ODT.......................................181
13.12.8 Images dans l'exportation ODT ..........................................182
13.12.9 Formatage mathématique dans l'exportation ODT..........183
13.12.9.1 Extraits mathématiques LATEX......................................183
13.12.9.2 Fichiers de formules MathML et OpenDocument....184
13.12.10 Étiquettes et légendes dans l'exportation ODT..............184
13.12.11 Exemples littéraux dans l'exportation ODT.....................185
13.12.12 Sujets avancés dans l'exportation ODT ..........................185
13.13 Org Export......................................................................................190
13.14 Texinfo Export ...............................................................................190
13.14.1 Commandes d'exportation de Texinfo...............................190
13.14.2 Paramètres d'exportation spécifiques à Texinfo ..............190
13.14.3 En-tête du fichier Texinfo ....................................................191
13.14.4 Page de titre et de copyright de Texinfo............................191
13.14.5 Fichier du répertoire d'informations ....................................192
13.14.6 Titres et structure des sections ............................................192
13.14.7 Indices....................................................................................192
13.14.8 Citation du code Texinfo......................................................193

13.14.9 Listes simples dans l'export Texinfo ..................................193


13.14.10 Tableaux dans l'exportation Texinfo.................................195
vii
13.14.11 Images dans l'exportation Texinfo ....................................195
13.14.12 Citations dans l'exportation de Texinfo ............................195
13.14.13 Key bindings dans l'exportation de Texinfo.....................196
13.14.14 Blocs spéciaux dans l'exportation Texinfo........................196
13.14.15 Un exemple de Texinfo ......................................................196
13.15 iCalendar Export ............................................................................198
13.16 Autres back-ends intégrés............................................................199
13.17 Configuration avancée de l'exportation ......................................199
13.18 Exportation dans les tampons étrangers ...................................202
13.18.1 Exportation vers un HTML minimal ....................................202

14 Édition........................................................................203
14.1 Configuration....................................................................................203
14.1.1 La variable org-publish-project-alist...........................203
14.1.2 Sources et destinations des fichiers.......................................203
14.1.3 Sélection des fichiers...............................................................204
14.1.4 Action de publication ..............................................................204
14.1.5 Options pour les exportateurs ...............................................205
14.1.6 Liens de publication ................................................................209
14.1.7 Générer un plan du site ..........................................................209
14.1.8 Générer un index.....................................................................211
14.2 Téléchargement de fichiers............................................................211
14.3 Exemple de configuration ................................................................211
14.3.1 Exemple : configuration simple de la publication................212
14.3.2 Exemple : configuration de publication complexe ..............212
14.4 Déclenchement de la publication ..................................................213

15 Traitement des citations......................................214


15.1 Citations............................................................................................214
15.2 Processeurs d'exportation de citations.........................................215
15.3 Bibliographie de l'imprimerie..........................................................215
15.3.1 Options de bibliographie dans les processeurs d'exportation
"biblatex" et "csl ............................................................................216

16 Travailler avec le code source............................217


16.1 Aperçu des caractéristiques ............................................................217
16.2 Structure des blocs de code ..........................................................218
16.3 Utilisation d'arguments d'en-tête .....................................................219
16.4 Environnement d'un bloc de code.................................................221
16.5 Évaluation des blocs de code........................................................228
16.6 Résultats de l'évaluation .................................................................231
16.7 Exporter des blocs de code ...........................................................236
16.8 Extraction du code source..............................................................237
16.9 Langues ............................................................................................239
16.10 Édition du code source .................................................................240

16.11 Syntaxe de référence de Noweb ......................................................241


16.12 Bibliothèque de Babel ..................................................................244
viii
16.13 Liaisons de touches et fonctions utiles ......................................245
16.14 Exécution par lots .........................................................................245

17 Divers..........................................................................247
17.1 Achèvement.....................................................................................247
17.2 Modèles de structure ......................................................................247
17.3 Touches rapides ...............................................................................248
17.4 Une vue d'ensemble plus propre ..................................................248
17.4.1 Mode d'indentation Org..........................................................249
17.4.2 Retrait dur................................................................................249
17.5 Exécuter des commandes dans la région active.........................250
17.6 Numérotation dynamique des titres ..............................................250
17.7 La clé C-c C-c très occupée........................................................250
17.8 Résumé des réglages dans le tampon ........................................251
17.9 Expressions régulières ...................................................................254
17.10 Syntaxe Org...................................................................................254
17.11 Documentation dépendante du contexte....................................255
17.12 Caractère d'échappement ..............................................................255
17.13 Évaluation du code et questions de sécurité ............................255
17.14 Interaction avec d'autres paquets...............................................256
17.14.1 Paquets avec lesquels Org coopère....................................256
17.14.2 Paquets en conflit avec le mode Org.................................257
17.15 Utiliser Org sur un ATS ................................................................259
17.16 Protocoles pour l'accès externe..................................................259
17.16.1 Le protocole store-link .....................................................260
17.16.2 Le protocole de capture .....................................................260
17.16.3 Le protocole open-source ...................................................261
17.17 Org Crypt........................................................................................262
17.18 Org Mobile .....................................................................................263
17.18.1 Mise en place de la zone de transit ...................................263
17.18.2 Pousser vers l'application mobile .......................................263
17.18.3 Extraction de l'application mobile .......................................264

Annexe A Piratage ...............................................265


A.1 Crochets ............................................................................................265
A.2 Paquets complémentaires ..............................................................265
A.3 Ajout de types de liens hypertextes...............................................265
A.4 Ajout de back-ends d'exportation...................................................267
A.5 Tableaux en syntaxe arbitraire ......................................................267
A.5.1 Tableaux radio .........................................................................267
A.5.2 Un exemple LATEX de tables radio .......................................268
A.5.3 Fonctions du traducteur ..........................................................270
A.6 Blocs dynamiques............................................................................270
A.7 Vues de l'agenda spécial .................................................................271
A.8 Accélérer vos agendas ....................................................................273
A.9 Extraction d'informations sur l'agenda ..........................................273
A.10 Utilisation de l'API des propriétés ................................................275
A.11 Utiliser l'API de cartographie ........................................................276
ix
Annexe B Historique et remerciements
. ....................................................................................278
B.1 De Carsten........................................................................................278
B.2 De Bastien.........................................................................................279
B.3 Liste des contributions.....................................................................279

Annexe C Licence de documentation libre GNU


. ....................................................................................283
C.1 ADDENDUM : Comment utiliser cette licence pour vos documents 290

18 Index principal.........................................................291

19 Index des clés.........................................................300

20 Index des commandes et des fonctions .........305

21 Index des variables ................................................309


Chapitre 1 : Introduction 1

1 Introduction

1.1 Résumé
Org Mode est un outil de création et un gestionnaire de listes TODO pour GNU Emacs.
Il s'appuie sur un langage de balisage léger en texte clair utilisé dans les fichiers portant
l'extension ".org".
En tant qu'outil de création, Org vous aide à rédiger des documents structurés et offre
des possibilités d'exportation. Les fichiers Org peuvent également être utilisés pour la
programmation alphabétique et la recherche reproductible. En tant que gestionnaire de
listes TODO, Org vous aide à organiser vos tâches de manière flexible, des besoins
quotidiens à la planification détaillée de projets, en permettant l'enregistrement, des vues
multiples sur vos tâches, l'exportation de vos agendas, etc.
Le mode Org est mis en œuvre au-dessus du mode Outline, ce qui permet de
conserver le contenu de fichiers volumineux bien structuré. Le cycle de visibilité et
l'édition de la structure aident à travailler avec l'arbre. Les tableaux sont facilement créés
à l'aide d'un éditeur de tableaux intégré. Des liens de type URL en texte brut renvoient à
des sites web, des courriels, des messages Usenet, des entrées BBDB et tout autre fichier
lié aux projets.
Org développe des tâches organisationnelles autour de fichiers de notes qui
contiennent des listes ou des informations sur des projets en texte brut. La planification
des projets et la gestion des tâches utilisent des métadonnées qui font partie d'un nœud
de contour. Sur la base de ces données, des entrées spécifiques peuvent être extraites
dans des requêtes et créer des vues d'agenda dynamiques qui intègrent également le
calendrier et l'agenda d'Emacs. Org peut être utilisé pour mettre en œuvre de nombreux
schémas de planification de projets, tels que le système GTD de David Allen.
Org peuvent servir de système de rédaction à source unique avec exportation vers
de nombreux formats différents tels que HTML, LATEX, Open Document et Markdown. De
nouveaux backends d'exportation peuvent être dérivés de ceux existants, ou définis à
partir de zéro.
Les fichiers Org peuvent inclure des blocs de code source, ce qui rend Org
particulièrement adapté à la rédaction de documents techniques contenant des exemples
de code. Les blocs de code source Org sont entièrement fonctionnels ; ils peuvent être
évalués sur place et leurs résultats peuvent être saisis dans le fichier. Il est ainsi possible
de créer un recueil de recherche reproductible à partir d'un seul fichier.
Org garde les choses simples. Lors de sa première utilisation, il devrait ressembler à
un gestionnaire de contenu simple et facile à utiliser. La complexité n'est pas imposée,
mais un grand nombre de fonctionnalités sont disponibles en cas de besoin. Org est une
boîte à outils. De nombreux utilisateurs n'utilisent en fait qu'une fraction très personnelle
des capacités d'Org, et savent qu'il y en a plus lorsqu'ils en ont besoin.
Tout cela est réalisé avec des fichiers texte simples, le format de fichier le plus
portable et le plus évolutif. Org fonctionne sous Emacs. Emacs est l'un des programmes
les plus largement portés, de sorte que le mode Org est disponible sur toutes les
principales plates-formes.
Il existe un site web pour Org qui fournit des liens vers la version la plus récente
d'Org, ainsi que des informations supplémentaires, des questions fréquemment posées
Chapitre 1 : Introduction 2
(FAQ), des liens vers des tutoriels, etc. Cette page se trouve à l'adresse suivante :
https://orgmode.org.
Une version antérieure (7.3) de ce manuel était disponible sous forme de livre de
poche auprès de la maison d'édition Network Theory Ltd., fermée en 2009.
Chapitre 1 : Introduction 3

1.2 Installation
Org est inclus dans les distributions de GNU Emacs, vous n'avez probablement pas
besoin de l'installer. La plupart des utilisateurs activeront simplement Org et
commenceront à explorer ses fonctionnalités.
Si, pour une raison ou une autre, vous souhaitez installer Org au-dessus de cette
version pré-packagée, vous pouvez utiliser le système de paquetage d'Emacs ou cloner
le dépôt git d'Org. Nous recommandons fortement de s'en tenir à une seule méthode
d'installation.
Lorsque vous installez Org en plus de la version pré-packagée, veuillez noter que les
versions stables d'Org sont censées être entièrement compatibles avec les trois
dernières versions stables d'Emacs, mais pas avec les anciennes versions d'Emacsen.

Utiliser le système d'empaquetage d'Emacs


Les distributions récentes d'Emacs incluent un système d'empaquetage qui vous permet
d'installer des bibliothèques Elisp. Vous pouvez installer Org à partir du "menu des
paquets", avec M-x list-packages. Voir la section "Pack- age Menu" dans emacs.
Important : vous devez effectuer cette opération dans une session où aucun
fichier '.org' n'a été visité, c'est-à-dire où aucune fonction intégrée d'Org n'a
été chargée. Sinon, les fonctions Org chargées automatiquement
perturberont l'installation.

Utiliser le dépôt git d'Org


Vous pouvez cloner le dépôt d'Org et installer Org comme suit :
$ cd ~/src/
$ git clone https://git.savannah.gnu.org/git/emacs/org-mode.git
$ cd org-mode/
make autoloads
Notez que dans ce cas, 'make autoloads' est obligatoire : il définit la version d'Org
dans 'org-version.el' et les autoloads d'Org dans 'org-loaddefs.el'.
Assurez-vous de définir correctement le chemin de chargement dans votre fichier init Emacs :
(add-to-list 'load-path "~/src/org-mode/lisp")
Vous pouvez également compiler avec 'make', générer la documentation avec 'make
doc', créer une configuration locale avec 'make config' et installer Org avec 'make
install'. Veuillez lancer 'make help' pour obtenir la liste des options de
compilation/installation.
Pour des explications plus détaillées sur le système de construction d'Org, veuillez
consulter la page du système de construction d'Org sur Worg.

Installer les paquets contribués par Org


Le dépôt d'Org contenait auparavant le répertoire 'contrib/' pour les modules
complémentaires fournis par d'autres. Depuis Org 9.5, ce répertoire a été déplacé dans
le dépôt dédié org-contrib, que vous pouvez installer séparément en tant que paquetage
de NonGNU ELPA.
Il y a suffisamment de paquets de valeur maintenus en dehors du dépôt Org. Worg a une
Chapitre 1 : Introduction 4
liste de paquets org-contrib et externes, mais elle n'est certainement pas exhaustive.
Chapitre 1 : Introduction 5

1.3 Activation
Les tampons en mode Org nécessitent que le verrouillage des polices soit activé : c'est le cas par défaut
dans Emacs1 .
Il existe des problèmes de compatibilité entre le mode Org et certains autres paquets
Elisp (voir Section 17.14.2 [Conflits], page 257). Veuillez prendre le temps de vérifier la
liste.
Pour une meilleure expérience, les trois commandes Org org-store-link, org-
capture et org-agenda devraient être accessibles partout dans Emacs, et pas
seulement dans les tampons Org. À cet effet, vous devez les lier à des clés globalement
disponibles, comme celles réservées aux utilisateurs (voir la section "Key Binding
Conventions" dans elisp). Voici des suggestions de liaisons, veuillez modifier les
touches à votre convenance.
(global-set-key (kbd "C-c l") #'org-store-
link) (global-set-key (kbd "C-c a") #'org-
agenda) (global-set-key (kbd "C-c c") #'org-
capture)
Les fichiers portant l'extension '.org' utilisent le mode Org par défaut. Pour activer le
mode Org dans un fichier qui n'a pas l'extension '.org', la première ligne du fichier doit
ressembler à ceci :
MES PROJETS-*- mode : org ; -*-
qui sélectionne le mode Org pour ce tampon, quel que soit le nom du fichier. Voir aussi
la variable org-insert-mode-line-in-empty-file.
De nombreuses commandes d'Org fonctionnent sur la région si celle-ci est active.
Pour utiliser cette fonction, vous devez activer le mode Marque transitoire, qui est le
mode par défaut. Si cela ne vous convient pas, vous pouvez créer une région active en
utilisant la souris pour sélectionner une région, ou en appuyant deux fois sur C-SPC avant
de déplacer le point.

1.4 Retour d'information


Si vous rencontrez des problèmes avec Org, ou si vous avez des questions, des
remarques ou des idées à son sujet, veuillez envoyer un courriel à la liste de diffusion
Org emacs-orgmode@gnu.org. Vous pouvez vous abonner à la liste à partir de cette
page web. Si vous n'êtes pas membre de la liste de diffusion, votre courrier sera
transmis à la liste après qu'un modérateur l'aura approuvé2 . Nous vous demandons de
lire et de respecter les directives de communication de GNU Kind lorsque vous envoyez
des messages sur cette liste de diffusion. Veuillez prévoir jusqu'à un mois pour la réponse
et le suivi si aucune réponse n'est reçue pour le rapport de bogue.
Pour les rapports de bogues, veuillez d'abord essayer de reproduire le bogue avec la
dernière version d'Org disponible - si vous utilisez une version dépassée, il est tout à fait
possible que le bogue ait déjà été corrigé. Si le bogue persiste, préparez un rapport et
fournissez autant d'informations que possible, y compris la version d'Emacs (M-x emacs-
version) et d'Org (M-x org-version), ainsi que la configuration liée à Org dans le fichier
Emacs init. La façon la plus simple de le faire est d'utiliser la commande
M-x org-submit-bug-report <RET>
qui place toutes ces informations dans un tampon de courrier électronique Emacs, de
sorte que vous n'avez plus qu'à ajouter votre description. Si vous n'envoyez pas l'e-mail
à partir d'Emacs, veuillez copier et coller le contenu dans votre programme d'e-mail.
Chapitre 1 : Introduction 6
1
Si vous n'utilisez pas globalement le verrouillage des polices, activez-le dans le tampon Org
avec '(add-hook 'org-mode-hook #'turn-on-font-lock)'.
2
Veuillez envisager de vous abonner à la liste de diffusion afin de minimiser le travail des modérateurs de
la liste de diffusion.
Chapitre 1 : Introduction 7

Il peut arriver que vous rencontriez un problème dû à une erreur dans votre
configuration d'Emacs ou du mode Org. Avant de signaler un bogue, il est très utile de
démarrer Emacs avec un minimum de personnalisation et de reproduire le problème.
Cela vous aidera souvent à déterminer si le problème vient de votre personnalisation ou
du mode Org lui-même. Vous pouvez démarrer une session minimale typique avec une
commande comme l'exemple ci-dessous.
$ emacs -Q -l /path/to/minimal-org.el
Cependant, si vous utilisez le mode Org tel qu'il est distribué avec Emacs, une
configuration minimale n'est pas nécessaire. Dans ce cas, il suffit de lancer Emacs avec
'emacs -Q'. Le fichier d'installation 'minimal-org.el' peut avoir le contenu suivant.
;; ; Configuration minimale pour charger la dernière version de `org-mode'.

; ; Activer le
débogage. (setq
debug-on-error t
debug-on-signal nil
debug-on-quit nil)

; ; Ajouter le dernier mode Org au chemin de chargement.


(add-to-list 'load-path (expand-file-name "/path/to/org-mode/lisp"))
Si vous utilisez la version Org mode du dépôt Git, vous pouvez démarrer une session
minimale en utilisant make.
# Bare Emacs
make repro
# ou passer des arguments supplémentaires
make repro REPRO_ARGS="-l /path/to/minimal/config.el /tmp/bug.org"
En cas d'erreur, un "backtrace" peut s'avérer très utile - voir ci-dessous comment en créer un.
Souvent, un petit fichier d'exemple est utile, ainsi que des informations claires :
1. Qu'avez-vous fait exactement ?
2. À quoi vous attendiez-vous ?
3. Que s'est-il passé au lieu de cela ?
Merci de contribuer à l'amélioration de ce programme.
Comment créer une trace utile
Si le travail avec Org produit une erreur avec un message que vous ne comprenez pas, il
se peut que vous ayez rencontré un bogue. La meilleure façon de le signaler est de
fournir, en plus de ce qui a été mentionné ci-dessus, une trace rétrospective. Il s'agit
d'informations provenant du débogueur intégré et indiquant où et comment l'erreur s'est
produite. Voici comment produire une trace utile :
1. Recharger les versions non compilées de tous les fichiers Lisp en mode Org. La
trace arrière contient beaucoup plus d'informations si elle est produite avec du code
non compilé. Pour ce faire, utilisez
C-u M-x org-reload <RET>
ou, à partir du menu : Org → Refresh/Reload → Reload Org uncompiled.
2. Activez ensuite le débogueur :
M-x toggle-debug-on-error <RET>
ou, à partir du menu : Options → Entrer dans le débogueur en cas d'erreur.
Chapitre 1 : Introduction 8

3. Faites tout ce qu'il faut pour corriger l'erreur. N'oubliez pas de documenter les
mesures que vous prenez.
4. Lorsque vous rencontrez l'erreur, un tampon "*Backtrace*" apparaît à l'écran.
Enregistrez ce tampon dans un fichier - par exemple en utilisant C-x C-w - et joignez-
le à votre rapport de bogue.

1.5 Conventions de composition utilisées dans ce manuel


TODO mots-clés, tags, propriétés, etc.
Org utilise divers éléments syntaxiques : mots-clés TODO, balises, noms de propriétés,
mots-clés, blocs, etc. Dans ce manuel, nous utilisons les conventions suivantes :
TODO
Les mots-clés TODO sont écrits en majuscules, même s'ils sont définis par l'utilisateur.
patron
Les balises 'ARCHIVE' sont sensibles à la casse. Les balises définies par l'utilisateur sont
généralement écrites en minuscules ; les balises intégrées ayant une
signification particulière sont écrites telles qu'elles devraient apparaître dans
le document, généralement en majuscules.
'Libérati
on'
'PRIORITÉ' Les propriétés définies par l'utilisateur sont en majuscules ; les propriétés
intégrées ayant une signification particulière sont écrites en majuscules.

TITRE
'BEGIN' . . . 'FIN'
Les mots-clés et les blocs sont écrits en majuscules pour améliorer leur
lisibilité, mais vous pouvez utiliser des minuscules dans vos fichiers Org.

Liaisons de touches et commandes


Le manuel énumère à la fois les touches et les commandes correspondantes pour
accéder à une fonctionnalité. Le mode Org utilise souvent la même touche pour
différentes fonctions, selon le contexte. La commande liée à ces touches a un nom
générique, comme org-metaright. Dans le manuel, nous donnerons, dans la mesure
du possible, la fonction qui est appelée en interne par la commande générique. Par
exemple, dans le chapitre sur la structure des documents, M-RIGHT sera listé pour
appeler org-do-demote, alors que dans le chapitre sur les tableaux, il sera listé pour
appeler org-table- move-column-right.
Chapitre 2 : Structure du 9
document

2 Structure du document
Org est un gestionnaire de plans. Les contours permettent d'organiser un document
selon une structure hiérarchique, ce qui, du moins pour moi, est la meilleure
représentation des notes et des pensées. Une vue d'ensemble de cette structure est
obtenue en pliant, c'est-à-dire en cachant de grandes parties du document pour ne
montrer que la structure générale du document et les parties sur lesquelles on est en
train de travailler. Org simplifie grandement l'utilisation des contours en comprimant
l'ensemble des fonctionnalités d'affichage et de masquage en une seule commande,
org-cycle, qui est liée à la touche TAB.

2.1 A la une
Les titres définissent la structure d'une arborescence. Les titres de l'Org commencent
sur la marge gauche1 avec une ou plusieurs étoiles suivies d'un espace. Par exemple :
* Titre de premier niveau
** Deuxième niveau
*** Troisième
niveau :
un peu de
texte
*** Troisième
niveau
plus de
texte
* Un autre titre de premier niveau
Le nom défini dans org-footnote-section est réservé. Ne l'utilisez pas comme titre
pour vos propres rubriques.
Certaines personnes trouvent que les nombreuses étoiles sont trop bruyantes et
préfèrent un contour comportant un espace blanc suivi d'une seule étoile en guise
d'amorce de titre. Ceci peut être réalisé en utilisant le mode mineur Org Indent. Voir
Section 17.4 [Vue claire], page 248 pour plus d'informations.
Les titres ne sont pas numérotés. Cependant, vous pouvez souhaiter numéroter
dynamiquement certains d'entre eux, voire tous. Voir Section 17.6 [Numérotation
dynamique des titres], page 250.
Une ligne vide après la fin d'une sous-arborescence est considérée comme faisant
partie de celle-ci et est cachée lorsque la sous-arborescence est repliée. Cependant, si
vous laissez au moins deux lignes vides, une ligne vide reste visible après le pliage de la
sous-arborescence, afin de structurer la vue réduite. Voir la variable org-cycle-
separator-lines pour modifier ce comportement.

2.2 Visibilité Cyclisme


2.2.1 Cyclisme mondial et local
Les contours permettent de masquer certaines parties du texte dans la mémoire tampon.
Org n'utilise que deux commandes, liées à TAB et S-TAB, pour modifier la visibilité dans la
mémoire tampon.
TAB (org-cycle)
Chapitre 2 : Structure du 10
document
Cyclage du sous-arbre : Faire tourner le sous-arbre actuel parmi les états
,-> PLIÉ -> ENFANTS -> SOUS-ARBRE --
. '--------------------------------------------------------'
1
Voir les variables org-special-ctrl-a/e, org-special-ctrl-k, et org-ctrl-k-protect-subtree pour
configurer le comportement spécial de C-a, C-e, et C-k dans les titres. Notez également que le
cadencement ne fonctionne qu'avec les titres indentés de moins de 30 étoiles.
Chapitre 2 : Structure du 11
document

Le point doit être sur un titre pour que cela fonctionne2 .


S-TAB (org-global-cycle)
C-u TABCyclisme global : Faire tourner l'ensemble de la mémoire tampon
entre les différents états
,-> VUE D'ENSEMBLE -> CONTENU ->
MONTRER TOUT --. '-----------------------------------'
Lorsque S-TAB est appelé avec un préfixe numérique N, le contenu n'est
affiché que jusqu'aux titres du niveau N.
Notez qu'à l'intérieur des tableaux (voir chapitre 3 [Tableaux], page 17), S-
TAB permet de passer à la rubrique précédente.
Vous pouvez exécuter un cycle global en utilisant TAB uniquement si le point
se trouve au tout début du tampon, mais pas sur un titre, et si org-cycle-
global-at-bob est défini à une valeur non nulle.
C-u C-u TAB (org-set-startup-visibility)
Revenir à la visibilité initiale de la mémoire tampon (voir section 2.2.2
[Visibilité initiale], page 8).
C-u C-u C-u TAB (org-show-all)
Tout afficher, y compris les tiroirs.
C-c C-r (org-révélation)
Révéler le contexte autour du point, en montrant l'entrée actuelle, l'en-tête
suivant et la hiérarchie au-dessus. Cette fonction est utile pour travailler à
proximité d'un emplacement qui a été exposé par une commande d'arbre
clairsemé (voir Section 2.5 [Arbres clairsemés], page 11) ou une commande
d'agenda (voir Section 11.5 [Commandes d'agenda], page 123). Avec un
argument de préfixe, afficher, à chaque niveau, toutes les rubriques
apparentées. Avec un double préfixe, afficher également le sous-arbre entier
du parent.
C-c C-k (org-show-branches)
Exposer tous les titres de la sous-arborescence, mais pas leurs corps.
C-c TAB (org-show-children)
Exposer tous les enfants directs de la sous-arborescence. Avec un préfixe
numérique N, exposer tous les enfants jusqu'au niveau N.
C-c C-x b (org-tree-to-indirect-buffer)
Affiche le sous-arbre actuel dans un tampon indirect3 . Avec un préfixe
numérique N, monter au niveau N et prendre l'arbre. Si N est négatif,
remonter d'autant de niveaux. Avec un préfixe C-u, ne pas supprimer le
tampon indirect précédemment utilisé.
C-c C-x v (org-copy-visible)
Copiez le texte visible dans la région dans le "kill ring".
2
Voir cependant l'option org-cycle-emulate-tab.
3
La mémoire tampon indirecte contient la totalité de la mémoire tampon, mais elle est réduite à
l'arbre actuel. La modification du tampon indirect modifie également le tampon original, mais sans
affecter la visibilité dans ce tampon. Pour plus d'informations sur les tampons indirects, voir la section
"Tampons indirects" dans emacs.
Chapitre 2 : Structure du 12
document

2.2.2 Visibilité initiale


Quand Emacs visite un fichier Org pour la première fois, l'état global est réglé sur
showeverything, c'est-à-dire que tout le contenu du fichier est visible4 . Ceci peut être
configuré par la variable org-startup-folded, ou pour chaque fichier en ajoutant une
des lignes suivantes n'importe où dans le tampon :
#+STARTUP : overview
#+STARTUP : content
#+STARTUP : showall
#+STARTUP : show2levels
#+STARTUP : show3levels
#+STARTUP : show4levels
#+STARTUP : show5levels
#+STARTUP :
showeverything
En outre, toutes les entrées dotées d'une propriété "VISIBILITÉ" (voir le chapitre 7
[Propriétés et colonnes], page 67) voient leur visibilité adaptée en conséquence. Les
valeurs autorisées pour cette propriété sont "folded", "children", "content" et "all".
C-u C-u TAB (org-set-startup-visibility)
Revenir à la visibilité de départ du tampon, c'est-à-dire à ce qui est demandé
par les options de démarrage et les propriétés "VISIBILITÉ" dans les
entrées individuelles.
2.2.3 Rattraper les modifications invisibles
Il peut arriver que vous modifiiez par inadvertance une partie invisible du tampon et que
vous ne sachiez pas ce qui a été modifié et comment annuler l'erreur. Définir org-fold-
catch-invisible- edits à non-nil permet d'éviter cela. Voir la docstring de cette
option sur la façon dont Org devrait attraper les éditions invisibles et les traiter.

2.3 Motion
Les commandes suivantes permettent de passer à d'autres titres dans la mémoire tampon.
C-c C-n (org-next-visible-heading)
Titre suivant.
C-c C-p (org-previous-visible-heading) Titre
précédent.
C-c C-f (org-forward-heading-same-level)
Rubrique suivante de même niveau.
C-c C-b (org-backward-heading-same-level)
Rubrique précédente de même
niveau.
C-c C-u (outline-up-heading)
Revenir au niveau supérieur.
C-c C-j (org-goto)
Sauter à un autre endroit sans modifier la visibilité du contour actuel. Affiche
la structure du document dans une mémoire tampon temporaire, où vous
pouvez utiliser les touches suivantes pour trouver votre destination :
4
Lorsque org-agenda-inhibit-startup est non-nil, Org n'honore pas l'état de visibilité par défaut lors
de la première ouverture d'un fichier pour l'agenda (voir Section A.8 [Accélérer vos agendas], page 273).
Chapitre 2 : Structure du 13
document

TAB Visibilité du cycle.


BAS / HAUT Titre visible suivant/précédent.
RET Sélectionner cet emplacement.
/ Effectuer une recherche dans l'arbre clair (Sparse-tree)
Les touches suivantes fonctionnent si vous désactivez org-goto-auto-isearch
n/ p Titre visible suivant/précédent.
f/ b Titre suivant/précédent même niveau.
u Un niveau au-dessus.
0...9 Argument de chiffre.
q Quitter.
Voir aussi la variable org-goto-interface.

2.4 Édition de la structure


M-RET (org-meta-return)
Insérer une nouvelle rubrique, un nouvel élément ou une nouvelle ligne.
Si la commande est utilisée au début d'une ligne, et s'il y a un titre ou un
élément de liste simple (voir Section 2.6 [Listes simples], page 12) à cet
endroit, le nouveau titre/élément est créé avant la ligne en cours. Lorsqu'il
est utilisé au début d'une ligne de texte normale, il transforme cette ligne en
titre.
Lorsque cette commande est utilisée au milieu d'une ligne, la ligne est
scindée et le reste de la ligne devient le nouvel élément ou le titre. Si vous
ne voulez pas que la ligne soit divisée, personnalisez org-M-RET-may-
split-line.
L'appel de la commande avec un préfixe C-u insère inconditionnellement une
nouvelle rubrique à la fin de la sous-arborescence courante, préservant ainsi
son contenu. Avec un double préfixe C-u C-u, la nouvelle rubrique est créée à
la fin de la sous-arborescence parente.
C-RET (org-insert-heading-respect-content)
Insérer une nouvelle rubrique à la fin de la sous-arborescence en cours.
M-S-RET (org-insert-todo-heading)
Insérer une nouvelle entrée TODO au même niveau que l'intitulé actuel. Voir
aussi la variante org-treat-insert-todo-heading-as-state-change.
C-S-RET (org-insert-todo-heading-respect-content)
Insérer une nouvelle entrée TODO au même niveau que le titre actuel.
Comme pour C-RET, le nouveau titre est inséré après le sous-arbre actuel.
TAB (org-cycle)
Dans une nouvelle entrée sans texte, le premier TAB rétrograde l'entrée
pour en faire un enfant de l'entrée précédente. La touche TAB suivante en
fait un parent, et ainsi de suite jusqu'au niveau supérieur. Un autre TAB et
vous revenez au niveau initial.
M-LEFT (org-do-promote)
M-RIGHT (org-do-demote)
Promouvoir ou rétrograder la rubrique actuelle d'un niveau.
Lorsqu'une région est active, c'est-à-dire lorsque le mode Marque transitoire
est activé, la promotion et la rétrogradation s'appliquent à tous les titres de la
région. Pour sélectionner une région
Chapitre 2 : Structure du 14
document

Pour les titres, il est préférable de placer le point et la marque au début


d'une ligne, la marque au début du premier titre et le point sur la ligne juste
après le dernier titre à modifier.
M-S-GAUCHE (org-promouvoir-sous-arbre)
Promouvoir le sous-arbre actuel d'un niveau.
M-S-RIGHT (org-demote-subtree)
Rétrograder le sous-arbre actuel d'un niveau.
M-UP (org-move-subtree-up)
Déplacer le sous-arbre vers le haut, c'est-à-dire échanger avec le sous-arbre précédent de
même niveau.
M-DOWN (org-move-subtree-down)
Déplacer le sous-arbre vers le bas, c'est-à-dire échanger avec le sous-arbre suivant du même
niveau.
C-c @ (sous-arbre de la marque d'org)
Marquer le sous-arbre au point. La frappe répétée marque les sous-arbres
suivants du même niveau que le sous-arbre marqué.
C-c C-x C-w (org-cut-subtree)
Tuer le sous-arbre, c'est-à-dire le retirer de la mémoire tampon mais
l'enregistrer dans l'anneau d'élimination. Avec un préfixe numérique N,
tuer N sous-arbres séquentiels.
C-c C-x M-w (org-copy-subtree)
Copier le sous-arbre pour tuer l'anneau. Avec un préfixe numérique N, copie
les N sous-arbres séquentiels.
C-c C-x C-y (org-paste-subtree)
Arracher le sous-arbre de l'anneau d'abattage. Cela modifie le niveau de la
sous-arborescence afin de s'assurer que l'arbre s'intègre bien à la position
de prélèvement. Le niveau d'extraction peut également être spécifié avec un
préfixe numérique, ou en extrayant l'arbre après un marqueur de titre comme
'****'.
C-y (org-yank)
En fonction des variables org-yank-adjusted-subtrees et org-yank-
folded-subtrees, la commande interne yank d'Org colle les sous-arbres
pliés d'une manière intelligente, en utilisant la même commande que C-c C-x
C-y. Avec les paramètres par défaut, aucun ajustement de niveau n'a lieu,
mais l'arbre collé est plié à moins que cela n'engloutisse le texte
précédemment visible. Tout argument de préfixe à cette commande force
l'exécution d'une mise à plat normale, avec le préfixe transmis. Une
bonne façon de forcer l'exécution d'un yank normal est C-u C-y. Si vous
utilisez yank-pop après un yank, les éléments de kill précédents seront
exécutés en clair, sans ajustement ni pliage.
C-c C-x c (org-clone-sous-tree-with-time-shift)
Clonez un sous-arbre en faisant un certain nombre de copies de ses frères
et sœurs. Vous êtes invité à indiquer le nombre de copies à effectuer et vous
pouvez également spécifier si les horodatages de l'entrée doivent être
décalés. Cela peut être utile, par exemple, pour créer un certain nombre de
tâches liées à une série de conférences à préparer. Pour plus de détails, voir
la docstring de la commande org-clone-subtree-with-time-shift.
Chapitre 2 : Structure du 15
document
C-c C-w (org-refile)
Refilez l'entrée ou la région à un autre endroit. Voir la section 9.1 [Refiler et
copier], page 94.
Chapitre 2 : Structure du 16
document

C-c ^ (org-sort)
Trier les entrées de même niveau. Lorsqu'il existe une région active, toutes
les entrées de la région sont triées. Sinon, ce sont les enfants de l'en-tête
actuel qui sont triés. Le com- mand demande la méthode de tri, qui peut être
alphabétique, numérique, par heure - premier horodatage avec préférence
active, heure de création, heure planifiée, heure limite - par priorité, par mot-
clé TODO - dans l'ordre où les mots-clés ont été définis dans la configuration
- ou par la valeur d'une propriété. Le tri inverse est également possible. Vous
pouvez également fournir votre propre fonction pour extraire la clé de tri.
Avec un préfixe C-u, le tri est sensible à la casse.
C-x n s (org-narrow-to-subtree)
Réduire le tampon au sous-arbre actuel.
C-x n b (org-narrow-to-block)
Réduire le tampon au bloc actuel.
C-x n w (élargir)
Élargir la zone tampon pour éliminer le rétrécissement.
C-c * (org-toggle-heading)
Transformez une ligne normale ou un élément de liste simple en titre, de
sorte qu'il devienne un sous-titre à l'endroit où il se trouve. Vous pouvez
également transformer un titre en ligne normale en supprimant les étoiles.
S'il existe une région active, toutes les lignes de la région sont transformées
en titres. Si la première ligne de la région est un article, seules les lignes de
l'article sont transformées en titres. Enfin, si la première ligne est un titre,
supprimez les étoiles de tous les titres de la région.
Notez que lorsque le point se trouve à l'intérieur d'un tableau (voir chapitre 3
[Tableaux], page 17), les touches du méta-curseur ont une fonctionnalité différente.

2.5 Arbres épars


Une caractéristique importante du mode Org est la possibilité de construire des
arbres épars pour les informations sélectionnées dans un arbre de contour, de sorte
que le document entier est plié autant que possible, mais que les informations
sélectionnées sont rendues visibles avec la structure du titre au-dessus d'elles5 .
Essayez-le et vous verrez immédiatement comment il fonctionne.
Le mode Org contient plusieurs commandes permettant de créer de tels arbres,
toutes ces commandes étant accessibles par l'intermédiaire d'un répartiteur :
C-c / (org-sparse-tree)
Une clé supplémentaire est demandée pour sélectionner une commande de création d'un arbre
clairsemé.
C-c / r ou C-c / / (org-occur)
Demande une expression rationnelle (voir Section 17.9 [Expressions
régulières], page 254) et affiche un arbre clairsemé avec toutes les
correspondances. Si la correspondance se trouve dans un titre, le titre est
rendu visible. Si la correspondance se trouve dans le corps d'une entrée, le
titre et le corps sont visibles. Afin de fournir un contexte minimal, la
hiérarchie complète des titres au-dessus de la correspondance est
également affichée, ainsi que le titre qui suit la correspondance.
Chapitre 2 : Structure du 17
document
5
Voir aussi la variable org-show-context-detail pour décider de la quantité de contexte affichée autour
de chaque correspondance.
Chapitre 2 : Structure du 18
document

match. Chaque correspondance est également mise en évidence ; les mises


en évidence disparaissent lorsque la mémoire tampon est modifiée par une
commande d'édition ou en appuyant sur C-c C-c6 . Lorsqu'elle est appelée
avec un argument préfixe C-u, les mises en évidence précédentes sont
conservées, de sorte que plusieurs appels à cette commande peuvent être
empilés.
M-g n ou M-g M-n (erreur suivante)
Sauter à la correspondance suivante de l'arbre clair dans ce tampon.
M-g p ou M-g M-p (erreur précédente)
Sauter à l'arbre clair précédent dans ce tampon.
Pour les arbres épars de chaînes de recherche spécifiques fréquemment utilisés,
vous pouvez utiliser la variable org-agenda-custom-commands pour définir un accès clavier
rapide à des arbres épars spécifiques. Ces commandes seront alors accessibles via le
répartiteur d'agenda (voir Section 11.2 [Répartiteur d'agenda], page 110). Par exemple :
(setq org-agenda-custom-commands
'(("f" occur-tree "FIXME"))))
définit la clé f comme un raccourci pour la création d'un arbre clairsemé correspondant à la chaîne
"FIXME".
Les autres commandes de l'arbre clairsemé sélectionnent les rubriques en fonction
des mots-clés, des balises ou des propriétés TODO et sont abordées plus loin dans ce
manuel.
Pour imprimer un arbre clairsemé, vous pouvez utiliser la commande Emacs ps-
print-buffer-with-faces qui n'imprime pas les parties invisibles du document. Vous
pouvez également utiliser la commande C-c C-e C-v pour exporter uniquement la partie
visible du document et imprimer le fichier résultant.

2.6 Listes simples


Dans une entrée de l'arborescence, les listes formatées à la main peuvent fournir une
structure supplémentaire. Elles permettent également de créer des listes de cases à cocher
(voir Section 5.6 [Cases à cocher], page 58). Org permet d'éditer de telles listes, et chaque
exportateur (voir Chapitre 13 [Exportation], page 147) peut les analyser et les formater.
Org connaît les listes ordonnées, les listes non ordonnées et les listes de description.
• Les éléments d'une liste non ordonnée commençant par "-", "+" ou "*" 7 sont des puces.
• Les éléments d'une liste ordonnée commencent par un chiffre suivi d'un point ou
d'une thèse de droite8 , comme "1." ou "1)" 9 Si vous souhaitez qu'une liste
commence par une valeur différente - par exemple, 20 - commencez le texte de
l'élément par "[@20]"10 . Ces constructions peuvent être utilisées dans n'importe quel
élément de la liste afin d'imposer une numérotation particulière.
6
Cela dépend de l'option org-remove-highlights-with-change.
7
Lorsque vous utilisez "*" comme puce, les lignes doivent être indentées afin qu'elles ne soient pas
interprétées comme des titres. En outre, lorsque vous masquez les étoiles de tête pour obtenir une
vue d'ensemble nette, les éléments de liste simples commençant par une étoile peuvent être
difficiles à distinguer des vrais titres. En résumé, même si "*" est pris en charge, il est préférable de
ne pas l'utiliser pour les éléments de liste simples.
8
Vous pouvez les filtrer en configurant org-plain-list-ordered-item-terminator.
9
Vous pouvez également obtenir 'a.', 'A.', 'a)' et 'A)' en configurant org-list-allow-alphabetical. Pour
minimiser la fusion avec le texte normal, les puces sont limitées à un seul caractère. Au-delà de
Chapitre 2 : Structure du 19
document
cette limite, les puces deviennent automatiquement des nombres.
10
S'il y a une case à cocher dans l'élément, le cookie doit être placé avant la case à cocher. Si vous avez
activé des listes alphabétiques, vous pouvez également utiliser des compteurs comme '[@b]'.
Chapitre 2 : Structure du 20
document

• Les éléments de la liste de description sont des éléments de liste non ordonnés et
contiennent le séparateur ": :" pour distinguer le terme de description de la
description.
Les éléments appartenant à une même liste doivent avoir la même indentation sur la
première ligne. En particulier, si une liste ordonnée atteint le numéro "10", les nombres
à deux chiffres doivent être alignés à gauche avec les autres nombres de la liste. Un
élément se termine avant la ligne suivante dont le retrait est inférieur ou égal à celui de
sa puce ou de son numéro.
Une liste se termine lorsque tous les éléments sont terminés, c'est-à-dire avant toute
ligne inférieure ou également indentée par rapport aux éléments du niveau supérieur.
Elle se termine également avant deux lignes vides. Dans ce cas, tous les éléments sont
fermés. Voici un exemple :
* Le Seigneur des Anneaux
Mes scènes préférées sont (dans cet ordre)
1. L'attaque des Rohirrim
2. Le combat d'Eowyn contre le roi sorcier
+ c'était déjà ma scène préférée du livre
+ J'aime beaucoup Miranda Otto.
3. Peter Jackson se fait tirer dessus par Legolas
- sur DVD uniquement
Il fait une drôle de tête lorsque cela se produit.
Mais en fin de compte, ce ne sont pas les scènes individuelles qui
comptent, mais le film dans son ensemble. Les acteurs importants de
ce film sont :
- Elijah Wood : : Il joue Frodon
- Sean Astin : : Il joue le rôle de Sam, l'ami de Frodon. Je me
souviens encore très bien de son rôle de Mikey Walsh dans
Les Goonies.
Org prend en charge ces listes en adaptant les commandes de remplissage et
d'habillage pour les traiter correctement, et en les exportant correctement (voir le
chapitre 13 [Exportation], page 147). Puisque l'indentation régit la structure de ces listes,
de nombreuses constructions structurelles telles que les blocs '#+BEGIN_' peuvent être
indentées pour signaler qu'elles appartiennent à un élément particulier.
Si vous estimez que l'utilisation d'une puce différente pour une sous-liste de celle
utilisée pour la liste actuelle améliore la lisibilité, personnalisez la variable org-list-
demote-modify-bullet. Pour obtenir une plus grande différence d'indentation entre les
éléments et leurs sous-éléments, personnalisez la variable org-list-indent-offset.
Les commandes suivantes agissent sur les éléments lorsque le point se trouve sur la
première ligne d'un élément - la ligne avec la puce ou le numéro. Certaines d'entre elles
impliquent l'application de règles automatiques pour conserver la structure de la liste
intacte. Si certaines de ces actions vous gênent, configurez org-list- automatic-
rules pour les désactiver individuellement.
TAB (org-cycle)
Les éléments peuvent être pliés comme les niveaux de titres. Normalement,
cela ne fonctionne que si le point se trouve sur un élément de liste simple.
Pour plus de détails, voir la variable org-cycle-include- plain-lists. Si
cette variable est définie sur integrate, les éléments de liste simple sont
traités comme des titres de bas niveau. Le niveau d'un élément est alors
donné par l'indentation de la puce/du numéro. Cependant, les éléments sont
Chapitre 2 : Structure du 21
document toujours subordonnés aux titres réels ; les hiérarchies restent complètement
séparées. Dans un nouvel article sans texte, le premier TAB rétrograde
l'article pour qu'il devienne un enfant de l'article précédent. Les TAB suivants
déplacent l'élément à des niveaux significatifs dans la liste et le ramènent
finalement à sa position initiale.
Chapitre 2 : Structure du 22
document

M-RET (org-insert-heading)
Insérer un nouvel élément au niveau actuel. Avec un argument préfixe,
forcer un nouveau titre (voir Section 2.4 [Édition de la structure], page 9). Si
cette commande est utilisée au milieu d'un élément, cet élément est divisé en
deux et la deuxième partie devient le nouvel élément11 . Si cette commande
est exécutée avant le corps de l'élément, le nouvel élément est créé avant
l'élément actuel.
M-S-RET Insérer un nouvel élément avec une case à cocher (voir Section 5.6 [Cases à cocher], page 58).
S-UP
S-DOWN Sauter à l'élément précédent/suivant dans la liste actuelle, mais seulement si
org-support- shift-select est désactivé12 . Si ce n'est pas le cas, vous
pouvez toujours utiliser les commandes de saut de paragraphe comme C-UP
et C-DOWN pour un effet similaire.
M-UP
M-DOWN Déplace l'élément, y compris les sous-éléments, vers le haut/bas13 , c'est-à-
dire qu'il est échangé avec l'élément précédent/suivant de même
indentation. Si la liste est ordonnée, la renumérotation est automatique.
M-GAUCHE
M-DROITE Diminuer/augmenter l'indentation d'un élément, en laissant les enfants seuls.
M-S-
GAUCHE
M-S-
DROITE
Diminue/augmente l'indentation de l'élément, y compris des sous-éléments.
Au départ, l'arborescence de l'élément est sélectionnée sur la base de
l'indentation actuelle. Lorsque ces commandes sont exécutées plusieurs fois
en succession directe, la région initialement sélectionnée est utilisée, même si
la nouvelle indentation implique une hiérarchie différente. Pour utiliser la
nouvelle hiérarchie, il faut interrompre la chaîne de commande en déplaçant
le point.
Dans un cas particulier, l'utilisation de cette commande sur le tout premier
élément d'une liste déplace toute la liste. Ce comportement peut être
désactivé en configurant les règles org-list-automatic-. L'indentation
globale d'une liste n'a aucune influence sur le texte qui suit la liste.
C-c C-c S'il y a une case à cocher (voir Section 5.6 [Cases à cocher], page 58) dans la
ligne de l'élément, basculer l'état de la case à cocher. Dans tous les cas,
vérifiez la cohérence des puces et de l'indentation dans l'ensemble de la
liste.
C-c - Parcourt tout le niveau de la liste à travers les différentes puces
d'énumération ('-', '+', '*', '1.', '1)') ou un sous-ensemble d'entre elles, en
fonction de org-plain-list-ordered- item-terminator, du type de liste,
et de son indentation. Avec un préfixe numérique N, sélectionner la Nième
puce de cette liste. S'il existe une région active au moment de l'appel,
toutes les lignes sont converties en éléments de liste. Avec un argument
préfixe, le texte sélectionné est transformé en un seul élément. Si la
première ligne était déjà un élément de liste, tout marqueur d'élément est
supprimé de la liste. Enfin, même sans région active, une ligne normale
est convertie en élément de liste.
Chapitre 2 : Structure du 23
document
C-c *Transformer un élément de liste simple en titre, de sorte qu'il devienne un sous-
titre à l'endroit où il se trouve. Voir la section 2.4 [Modification de la structure],
page 9, pour une explication détaillée.
11
Si vous ne souhaitez pas que l'article soit scindé, personnalisez la variable org-M-RET-may-split-line.
12
Si vous souhaitez faire défiler les éléments de cette manière, vous pouvez personnaliser org-list-use-circular-motion.
13
Voir org-list-use-circular-motion pour un comportement cyclique.
Chapitre 2 : Structure du 24
document

C-c C-* Transforme toute la liste simple en une sous-arborescence de la rubrique


courante. Les cases à cocher (voir Section 5.6 [Cases à cocher], page 58)
deviennent des mots-clés "TODO", respectivement "DONE", lorsqu'elles sont
décochées, respectivement cochées.
S-GAUCHE
S-DROITE Cette commande permet également d'alterner les styles de puces lorsque le
point se trouve sur la puce ou à n'importe quel endroit d'une ligne d'article,
les détails dépendant de la fonction org-support-shift-select.
C-c ^Triez la liste simple. Demande la méthode de tri : numérique, alphabétique, par
heure ou par fonction personnalisée.

2.7 Tiroirs
Il arrive que vous souhaitiez conserver des informations associées à une entrée, mais
que vous ne souhaitiez normalement pas les voir. Pour cela, le mode Org dispose de
tiroirs. Ils peuvent contenir n'importe quoi, à l'exception d'un titre et d'un autre tiroir. Les
tiroirs se présentent comme suit :
** Il s'agit d'un titre
Toujours en dehors du
tiroir
:DRAWERNAME :
Il se trouve à l'intérieur du tiroir.
:FIN :
Après le tiroir.
Vous pouvez insérer interactivement un tiroir à un point en appelant org-insert-
drawer, qui est lié à C-c C-x d. Avec une région active, cette commande place la région à
l'intérieur du tiroir. Avec un argument préfixe, cette commande appelle la fonction non
interactive org-insert- property-drawer, qui crée un tiroir "PROPERTIES" juste en
dessous du titre actuel. Le mode Org utilise ce tiroir spécial pour stocker les propriétés
(voir le chapitre 7 [Propriétés et colonnes], page 67). Vous ne pouvez pas l'utiliser pour
autre chose.
Il est également possible de compléter les mots-clés à tiroirs en utilisant M-TAB14 .
Le cycle de visibilité (voir section 2.2 [Cycle de visibilité], page 6) sur le titre masque
et affiche l'entrée, mais maintient le tiroir réduit à une seule ligne. Pour regarder à
l'intérieur du tiroir, vous devez déplacer le point sur la ligne du tiroir et appuyer sur la
touche TAB à cet endroit.
Vous pouvez également faire en sorte que les notes de changement d'état (voir
Section 5.3.2 [Suivi des changements d'état TODO], page 53) et les heures d'horloge
(voir Section 8.4 [Horodatage du temps de travail], page 84) soient stockées dans un
tiroir "LOGBOOK". Si vous souhaitez y enregistrer une note rapide, de la même manière
que pour les changements d'état, utilisez l'option
C-c C-z Ajouter une note horodatée au tiroir "LOGBOOK".

2.8 Blocs
Le mode Org utilise les blocs '#+BEGIN' . . . #+END' à diverses fins, de l'inclusion
d'exemples de code source (voir Section 12.6 [Exemples littéraux], page 141) à la
capture d'informations sur l'enregistrement du temps (voir Section 8.4 [Chronométrage
du temps de travail], page 84). Ces blocs peuvent être pliés et dépliés en appuyant sur
Chapitre 2 : Structure du 25
document
la touche TAB dans la ligne '#+BEGIN'. Vous pouvez également faire plier tous les blocs
au démarrage en configurant la variable org-hide-block-startup ou par fichier en
utilisant la commande
14
De nombreux bureaux interceptent la touche M-TAB pour passer d'une fenêtre à l'autre. Utilisez plutôt C-M-i ou ESC TAB.
Chapitre 2 : Structure du 26
document

#+STARTUP : hideblocks
#+STARTUP : nohideblocks
Chapitre 3 : 27
Tableaux

3 Tableaux
Org est livré avec un éditeur de tableaux rapide et intuitif. Les calculs de type tableur sont
pris en charge par le paquetage Emacs Calc (voir calc).

3.1 Éditeur de tableaux intégré


Org facilite le formatage des tableaux en ASCII. Toute ligne dont le premier caractère
non blanc est '|' est considérée comme faisant partie d'un tableau. '|' est également le
séparateur de colonnes1 . En outre, une ligne commençant par '|-' est une règle
horizontale. Elle sépare explicitement les lignes. Les lignes précédant la première règle
horizontale sont des lignes d'en-tête. Un tableau peut se présenter comme suit :
| Nom, prénom, téléphone, âge, etc.
|-------+-------+ ----------|
| Peter | 1234 | 17 |
| Anna | 4321 | 25 |
Un tableau est réaligné automatiquement chaque fois que vous appuyez sur TAB, RET
ou C-c C-c à l'intérieur du tableau. La touche TAB permet également de passer à la
rubrique suivante, la touche RET à la ligne suivante et de créer de nouvelles lignes à la
fin du tableau ou avant les lignes horizontales. L'indentation du tableau est déterminée
par la première ligne. Les règles horizontales sont automatiquement étendues à chaque
réalignement pour couvrir toute la largeur du tableau. Ainsi, pour créer le tableau ci-
dessus, il suffit de taper
|Nom|Téléphone|Age|
|-
puis appuyez sur la touche TAB pour aligner le tableau et commencer à remplir les
champs. Il est encore plus rapide de taper '|Nom|Téléphone|Age' suivi de C-c RET.
Lors de la saisie de texte dans un champ, Org traite les touches DEL, Backspace et
toutes les touches de caractères d'une manière spéciale, de sorte que l'insertion et la
suppression évitent de déplacer d'autres champs. De plus, lorsque l'on tape
immédiatement après que le point a été déplacé dans un nouveau champ avec TAB, S-
TAB ou RET, le champ est automatiquement rendu vide. Si ce comportement est trop
imprévisible pour vous, configurez l'option org-table-auto-blank-field.

Création et conversion
C-c | (org-table-create-or-convert-from-region)
Convertit la région active en tableau. Si chaque ligne contient au moins un
caractère TAB, la fonction suppose que l'article est séparé par des
tabulations. Si chaque ligne contient une virgule, la fonction suppose que les
valeurs sont séparées par des virgules (CSV). Si ce n'est pas le cas, les
lignes sont divisées en champs au niveau des espaces blancs. Vous pouvez
utiliser un argument préfixe pour imposer un séparateur spécifique : C-u force
CSV, C-u C-u force TAB, C-u C-u C-u demande une expression régulière pour
correspondre au séparateur, et un argument numérique N indique qu'au
moins N espaces consécutifs, ou alternativement un TAB sera le séparateur.
S'il n'y a pas de région active, cette commande crée une table Org vide.
Mais il est plus facile de commencer à taper, comme | N a m e | P h o n e |
A g e RET | - TAB.
Chapitre 3 : 28
Tableaux
1
Pour insérer une barre verticale dans un champ de tableau, utilisez "\vert" ou, à l'intérieur d'un mot, "abc\vert{}def".
Chapitre 3 : 29
Tableaux

Réalignement et déplacement du champ


C-c C-c (org-table-align)
Réaligner la table sans déplacer le point.
TAB (org-table-next-field)
Réaligner le tableau, passer au champ suivant. Crée une nouvelle ligne si nécessaire.
M-x org-table-blank-field
Efface le champ de table ou la région active en cours.
S-TAB (champ de la table d'orgue)
Réaligner, passer au champ précédent.
RET (org-table-next-row)
Réaligne le tableau et passe à la ligne suivante. Crée une nouvelle ligne si
nécessaire. Au début ou à la fin d'une ligne, RET insère toujours une
nouvelle ligne, de sorte qu'il peut être utilisé pour diviser un tableau.
M-a (org-table-beginning-of-field)
Permet de se déplacer au début du champ du tableau actuel ou de passer au champ
précédent.
M-e (org-table-end-of-field)
Permet d'atteindre la fin du champ du tableau actuel ou de passer au champ suivant.
Edition des colonnes et des lignes
M-LEFT (org-table-move-column-left)
Déplace la colonne courante
vers la gauche.
M-R IGHT (org-table-move-column-right)
Déplace la colonne actuelle
vers la droite.
M-S -LEFT (org-table-delete-column)
Met fin à la colonne en cours.
M-S-RIGHT (org-table-insert-column)
Insérer une nouvelle colonne à la position du point. Déplacez la colonne
récente et toutes les cellules situées à droite de cette colonne vers la droite.
M-UP (org-table-move-row-up)
Déplace la ligne actuelle vers le haut.
M-DOWN (org-table-move-row-down)
Déplacer la ligne actuelle vers le bas.
M-S-UP (org-table-kill-row)
Met fin à la ligne horizontale ou à la rangée en cours.
S-UP (org-table-move-cell-up)
Déplacer la cellule vers le haut en l'échangeant avec la cellule adjacente.
S-DOWN (org-table-move-cell-down)
Déplacer la cellule vers le bas en l'échangeant avec la cellule adjacente.
S-LEFT (org-table-move-cell-left)
Déplacer la cellule vers la gauche en l'échangeant avec la cellule adjacente.
Chapitre 3 : 30
Tableaux

S-RIGHT (org-table-move-cell-right)
Déplacer la cellule vers la droite en l'échangeant avec la cellule adjacente.
M-S-DOWN (org-table-insert-row)
Insère une nouvelle ligne au-dessus de la ligne actuelle. Avec un argument
préfixe, la ligne est créée en dessous de la ligne actuelle.
C-c - (org-table-insert-hline)
Insère une ligne horizontale sous la ligne actuelle. Avec un argument
préfixe, la ligne est créée au-dessus de la ligne courante.
C-c RET (org-table-hline-and-move)
Insérer une ligne horizontale sous la ligne actuelle et déplacer le point dans
la ligne sous cette ligne.
C-c ^ (org-table-sort-lines)
Trier les lignes du tableau dans la région. La position du point indique la
colonne à utiliser pour le tri, et la plage de lignes est la plage entre les lignes
de séparation horizontales les plus proches, ou le tableau entier. Si le point
se trouve avant la première colonne, vous êtes invité à indiquer la colonne
de tri. S'il existe une région active, la marque spécifie la première ligne et la
colonne de tri, tandis que le point doit se trouver dans la dernière ligne pour
être inclus dans le tri. La commande demande le type de tri, alphabétique,
numérique ou temporel. Vous pouvez trier dans l'ordre normal ou dans
l'ordre inverse. Vous pouvez également fournir vos propres fonctions
d'extraction et de comparaison de clés. Lorsqu'il est appelé avec un préfixe,
le tri alphabétique est sensible à la casse.

Régions
C-c C-x M-w (org-table-copy-region)
Copier une région rectangulaire d'un tableau dans un presse-papiers
spécial. Le pointage et le marquage déterminent les champs du bord du
rectangle. S'il n'y a pas de région active, seule la zone courante est copiée.
Le processus ignore les lignes de séparation horizontales.
C-c C-x C-w (org-table-cut-region)
Copier une région rectangulaire d'un tableau dans un presse-papiers spécial
et supprimer tous les champs dans le rectangle. Il s'agit donc de l'opération
"couper".
C-c C-x C-y (org-table-paste-rectangle)
Coller une région rectangulaire dans un tableau. Le coin supérieur gauche
se retrouve dans le champ courant. Tous les champs concernés sont
écrasés. Si le rectangle ne tient pas dans le tableau actuel, celui-ci est
agrandi si nécessaire. Le processus ne tient pas compte des lignes de
séparation horizontales.
M-RET (org-table-wrap-region)
Divise le champ actuel à la position du point et déplace le reste sur la ligne
en dessous. S'il existe une région active et que le point et la marque se
trouvent dans la même colonne, le texte de la colonne est enveloppé à la
largeur minimale pour le nombre de lignes donné. Un préfixe numérique peut
être utilisé pour modifier le nombre de lignes souhaité. S'il n'y a pas de
Chapitre 3 : 31
Tableaux région, mais que vous spécifiez un argument de préfixe, le champ actuel est
rendu vide et le contenu est ajouté au champ situé au-dessus.
Chapitre 3 : 32
Tableaux

Calculs
C-c + (org-table-sum)
Additionne les nombres dans la colonne actuelle ou dans le rectangle défini
par la région active. Le résultat est affiché dans la zone d'écho et peut être
inséré avec C-y.
S-RET (org-table-copy-down)
Lorsque le champ actuel est vide, copier à partir du premier champ non vide
situé au-dessus. S'il n'est pas vide, copier le champ actuel vers la ligne
suivante et déplacer le point avec lui.
En fonction de la variable org-table-copy-increment, les valeurs des
champs entiers et horodatés, ainsi que les champs préfixés ou suffixés par
un nombre entier, peuvent être incrémentés pendant la copie. De plus, un
argument préfixe 0 désactive temporairement l'incrémentation.
Cette touche est également utilisée par la sélection par déplacement et les
modes associés (voir Section 17.14.2 [Conflits], page 257).

Divers
C-c ` (org-table-edit-field)
Modifier le champ actuel dans une fenêtre séparée. Cette fonction est utile
pour les champs qui ne sont pas entièrement visibles (voir la section 3.2
[Largeur et alignement des colonnes], page 21). Lorsqu'il est appelé avec un
préfixe C-u, il suffit de rendre le champ complet visible pour qu'il puisse être
modifié sur place. Lorsqu'elle est appelée avec deux préfixes C-u, la fenêtre
de l'éditeur suit le point à travers le tableau et affiche toujours le champ en
cours. Le mode suivi se termine automatiquement lorsque le point quitte le
tableau, ou lorsque vous répétez cette commande avec C-u C-u C-c `.
M-x org-table-import
Importer un fichier sous forme de tableau. Le tableau doit être séparé par des
tabulations ou des espaces. Cette commande est utilisée, par exemple, pour
importer un tableau d'un tableur ou des données d'une base de données,
car ces programmes peuvent généralement écrire des fichiers texte séparés
par des TAB. Cette commande insère le fichier dans la mémoire tampon,
puis convertit la région en tableau. Tout argument de préfixe est transmis au
convertisseur, qui l'utilise pour déterminer le séparateur.
C-c | (org-table-create-or-convert-from-region)
Les tableaux peuvent également être importés en collant du texte tabulaire
dans le tampon Org, en sélectionnant le texte collé avec C-x C-x et en utilisant
ensuite la commande C-c | (voir [Création et conversion], page 17).
M-x org-table-export
Exporter le tableau, par défaut sous la forme d'un fichier séparé par des
tabulations. A utiliser pour l'échange de données avec, par exemple, des
tableurs ou des programmes de base de données. Le format utilisé pour
exporter le fichier peut être configuré dans la variable org-table-export-
default-format. Vous pouvez également utiliser les propriétés
'TABLE_EXPORT_FILE' et 'TABLE_EXPORT_FORMAT' pour spécifier le nom du
fichier et le format d'exportation des tables dans un sous-arbre. Org prend
en charge des formats assez généraux pour les tables exportées. Le format
de l'exportateur est le même que celui utilisé par les tables radio Orgtbl, voir
Chapitre 3 : 33
Tableaux la section A.5.3 [Fonctions du traducteur], page 270, pour une description
détaillée.
Chapitre 3 : 34
Tableaux

M-x org-table-header-line-mode
Active l'affichage de la première ligne de données du tableau à un point de
la ligne d'en-tête de la fenêtre lorsque cette première ligne n'est plus visible
dans le tampon. Vous pouvez activer ce mode mineur par défaut en
définissant l'option org-table-header- line-p sur t.
M-x org-table-transpose-table-at-point
Transposez le tableau au point et éliminez les lignes h.

3.2 Largeur et alignement des colonnes


La largeur des colonnes est automatiquement déterminée par l'éditeur de tableaux.
L'alignement d'une colonne est déterminé automatiquement à partir de la proportion de
champs numériques par rapport aux champs non numériques dans la colonne.
La modification d'un champ peut modifier l'alignement du tableau. Le déplacement
d'une ligne ou d'une colonne contiguë, c'est-à-dire l'utilisation de la touche TAB ou RET,
réaligne automatiquement le tableau. Si vous souhaitez désactiver ce
comportement, définissez org-table-automatic-realign à nil. Dans tous les cas, vous
pouvez toujours aligner manuellement une table :
C-c C-c (org-table-align)
Aligne le tableau actuel.
L'option org-startup-align-all-tables permet de réaligner toutes les tables d'un
fichier lors de sa visite. Vous pouvez également définir cette option pour chaque fichier
avec :
#+STARTUP : align
#+STARTUP : noalign
Il arrive parfois qu'un seul ou plusieurs champs doivent contenir plus de texte, ce qui
entraîne des colonnes trop larges. Vous souhaitez peut-être masquer plusieurs colonnes
ou les afficher avec une largeur fixe, quel que soit leur contenu, comme le montre
l'exemple suivant.
|---+---------------------+--------| |---+-------...+...|
| | <6> | | | | <6> ...|...|
| 1 | un | certai | ----\ | 1 | un ...|...|
ns
| 2 | deux | ennuye | ----/ | 2 | deu ...|...|
ux x
| 3 | Le est un texte colonn | | 3 | Le i...|...|
prés long | e prés
ent ent
|---+---------------------+--------| |---+-------...+...|
Pour définir la largeur d'une colonne, un champ situé n'importe où dans la colonne
peut contenir uniquement la chaîne "<N>", où N spécifie la largeur en nombre de
caractères. Vous pouvez contrôler la largeur affichée des colonnes à l'aide des outils
suivants :
C-c TAB (org-table-toggle-column-width)
Réduit ou élargit la colonne
actuelle.
Si un cookie de largeur spécifie une largeur W pour la colonne, le
rétrécissement de celle-ci n'affiche que les premiers W caractères visibles.
Sinon, la colonne est réduite à un seul caractère.
Chapitre 3 : 35
Tableaux Lorsqu'il est appelé avant la première colonne ou après la dernière, il
demande une liste de plages de colonnes sur lesquelles opérer.
C-u C-c TAB (org-table-shrink)
Réduire toutes les colonnes avec une largeur de colonne. Agrandir les autres.
Chapitre 3 : 36
Tableaux

C-u C-u C-c TAB (org-table-expand)


Développer toutes les colonnes.
Pour voir le texte intégral d'un champ réduit, maintenez la souris au-dessus de celui-
ci : une fenêtre d'infobulle affiche alors le contenu intégral du champ. Une fenêtre d'info-
bulle affiche alors le contenu complet du champ. Vous pouvez également utiliser la
touche C-h . Pour plus de commodité, toute modification effectuée à proximité de la
partie réduite d'une colonne permet de l'agrandir.
L'option org-startup-shrink-all-tables réduit toutes les colonnes contenant un
cookie de largeur dans un fichier au moment où il est visité. Vous pouvez également
définir cette option pour chaque fichier avec :
#+STARTUP : rétrécir
Si vous souhaitez annuler l'alignement automatique des colonnes riches en chiffres
vers la droite et des colonnes riches en chaînes vers la gauche, vous pouvez utiliser
"<r>", "<c>" ou "<l>" de la même manière. Vous pouvez également combiner
l'alignement et la largeur du champ comme suit : '<r10>'.
Les lignes qui ne contiennent que ces cookies de formatage sont automatiquement
supprimées lors de l'exportation du document.

3.3 Groupes de colonnes


Lorsqu'Org exporte des tableaux, il le fait par défaut sans lignes verticales parce que c'est
visuellement plus satisfaisant en général. Occasionnellement cependant, les lignes
verticales peuvent être utiles pour structurer un tableau en groupes de colonnes, tout
comme les lignes horizontales peuvent le faire pour les groupes de lignes. Pour spécifier
des groupes de colonnes, vous pouvez utiliser une ligne spéciale dont le premier champ
contient uniquement '/'. Les champs suivants peuvent contenir soit "<" pour indiquer que
cette colonne doit commencer un groupe, soit ">" pour indiquer la fin d'une colonne, soit
"<>" (sans espace entre "<" et ">") pour faire d'une colonne un groupe à part entière.
Lors de l'exportation, les limites entre les groupes de colonnes sont marquées par des
lignes verticales. Voici un exemple :
| N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
|---+-----+-----+-----+---------+------------------------|
| / | < | | > | < | > |
| 1 | 1 | 1 | 1 | 1 | 1 |
| 2 | 4 | 8 | 16 | 1.4142 | 1.1892 |
| 3 | 9 | 27 | 81 | 1.7321 | 1.3161 |
|---+-----+-----+-----+---------+------------------------|
#+TBLFM : $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
Il suffit également d'insérer les débuts de groupe de colonnes après chaque ligne
verticale souhaitée :
| N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
|---+-----+-----+-----+---------+------------------------|
| / | < | || < | |

3.4 Le mode mineur Orgtbl


Si vous aimez le fonctionnement intuitif de l'éditeur de tableaux d'Org, vous souhaiterez
peut-être l'utiliser dans d'autres modes, tels que le mode Texte ou le mode Courrier. Le
mode mineur Orgtbl rend cela possible. Vous pouvez toujours basculer le mode avec M-
Chapitre 3 : 37
xTableaux
orgtbl-mode. Pour l'activer par défaut, par exemple en mode Message, utilisez
Chapitre 3 : 38
Tableaux

(add-hook 'message-mode-hook #'turn-on-orgtbl)


En outre, moyennant une configuration spéciale, il est possible de gérer des tableaux
dans une syntaxe arbitraire avec le mode Orgtbl. Par exemple, il est possible de
construire des tableaux LATEX avec la facilité et la puissance sous-jacentes du mode
Orgtbl, y compris les capacités de feuille de calcul. Pour plus de détails, voir Section A.5
[Tableaux en syntaxe arbitraire], page 267.

3.5 La feuille de calcul


L'éditeur de tableaux utilise le paquetage Emacs Calc pour mettre en œuvre des
capacités de type tableur. Il peut également évaluer les formulaires Emacs Lisp pour
dériver des champs à partir d'autres champs. Bien que très complète, l'implémentation
d'Org n'est pas identique à celle des autres tableurs. Par exemple, Org connaît le
concept de formule de colonne qui sera appliquée à tous les champs non en-tête d'une
colonne sans avoir à copier la formule dans chaque champ concerné. Il existe
également un débogueur de formules et un éditeur de formules avec des fonctions
permettant de mettre en évidence les champs du tableau correspondant aux références
à un point de la formule, et de déplacer ces références à l'aide des touches fléchées.

3.5.1 Références
Pour calculer des champs de la table à partir d'autres champs, les formules doivent faire
référence à d'autres champs ou plages. Dans Org, les champs peuvent être référencés
par leur nom, par des coordonnées absolues et par des coordonnées relatives. Pour
connaître les coordonnées d'un champ, appuyez sur C-c ? dans ce champ, ou appuyez
sur C-c } pour faire basculer l'affichage d'une grille.

Références de terrain
Les formules peuvent faire référence à la valeur d'un autre champ de deux manières.
Comme dans toute feuille de calcul, vous pouvez référencer les champs avec une
combinaison lettre/chiffre comme "B3", c'est-à-dire le deuxième champ de la troisième
ligne. Toutefois, Org préfère utiliser une autre représentation, plus générale, qui
ressemble à ceci :2
@ROW$COLUMN
Les spécifications de colonne peuvent être absolues, comme "$1", "$2", . . . N", ou
relatives à la colonne actuelle, c'est-à-dire la colonne du champ en cours de calcul,
comme "$+1" ou "$-2". '$<' et '$>' sont des références immuables à la première et à la
dernière colonne, respectivement, et vous pouvez utiliser '$>>>' pour indiquer la
troisième colonne en partant de la droite.
La spécification de ligne ne compte que les lignes de données et ignore les lignes de
séparation horizontales, ou "hlines". Comme pour les colonnes, vous pouvez utiliser des
numéros de ligne absolus "@1", "@2", . . ., "@N", ainsi que des numéros de ligne relatifs à
la ligne actuelle comme "@+3" ou "@-1". @N', et des numéros de ligne relatifs à la ligne
actuelle tels que '@+3' ou '@-1'. @<' et '@>' sont des références immuables à la première et
à la dernière ligne du tableau, respectivement. Vous pouvez également spécifier la ligne
par rapport à l'une des lignes du tableau : '@I' fait référence à la première ligne, '@II' à la
deuxième, etc. @-I' se réfère à la première ligne au-dessus de la ligne courante,
@+I' à la première ligne au-dessous de la ligne courante. Vous pouvez également écrire
'@III+2', qui correspond à la deuxième ligne de données après la troisième ligne du
tableau.
Chapitre 3 : 39
Tableaux
2
Org comprend les références tapées par l'utilisateur comme 'B4', mais il n'utilise pas cette syntaxe
lorsqu'il propose une formule à l'édition. Vous pouvez personnaliser ce comportement en utilisant la
variable org-table-use-standard- references.
Chapitre 3 : 40
Tableaux

@0" et "$0" renvoient respectivement à la ligne et à la colonne actuelles, c'est-à-dire à


la ligne/colonne du champ en cours de calcul. De même, si vous omettez la partie
colonne ou ligne de la référence, la ligne/colonne courante est implicite.
Les références d'Org avec des nombres non signés sont des références fixes en ce
sens que si vous utilisez la même référence dans la formule pour deux champs
différents, le même champ est référencé à chaque fois. Les références d'Org avec des
nombres signés sont des références flottantes car le même opérateur de référence peut
référencer des champs différents en fonction du champ calculé par la formule.
Voici quelques exemples :
@2$3' 2e ligne, 3e colonne (identique à "C2")
$5' colonne 5 de la ligne actuelle (identique à 'E&')
'@2'colonne actuelle, ligne 2
@-1$-3' champ d'une ligne vers le haut, trois colonnes vers la gauche
Champ "@-I$2" juste sous la ligne h au-dessus
de la ligne actuelle, colonne 2 Champ "@>$5" dans la
dernière ligne, dans la colonne 5

Références de la gamme
Vous pouvez faire référence à une plage rectangulaire de champs en spécifiant deux
références de champs reliées par deux points '...'. Les extrémités sont incluses dans
l'intervalle. Si les deux champs se trouvent dans la ligne actuelle, vous pouvez
simplement utiliser "$2..$7", mais si au moins un champ se trouve dans une ligne
différente, vous devez utiliser le format général "@ROW$COLUMN" au moins pour le premier
champ, c'est-à-dire que la référence doit commencer par "@" pour être interprétée
correctement. Exemples :
'$1..$3'trois premiers champs de la ligne actuelle
plage '$P..$Q' , en utilisant les noms de colonnes (voir section
3.5.10 [Fonctions avancées], page 33)
$<<<..$>>" commence dans la troisième colonne et se poursuit
jusqu'à l'avant-dernière "@2$1..@4$3". neuf champs entre ces deux
champs (comme "A2..C4")
@-1$-2..@-1' 3 champs dans la ligne ci-dessus, à partir de 2 colonnes à
gauche '@I..II' entre la première et la deuxième ligne, abréviation de
'@I..@II'.
Les références à des plages renvoient un vecteur de valeurs qui peuvent être introduites
dans les fonctions vectorielles de Calc. Les champs vides dans les plages sont
normalement supprimés, de sorte que le vecteur ne contient que les champs non vides.
Pour d'autres options avec les commutateurs de mode 'E', 'N' et des exemples, voir
Section 3.5.2 [Syntaxe des formules pour Calc], page 25.

Coordonnées du champ dans les formules


L'une des toutes premières actions lors de l'évaluation des formules Calc et des
formules Lisp consiste à remplacer "@#" et "$#" dans la formule par le numéro de la ligne
ou de la colonne du champ dans lequel le résultat actuel sera enregistré. Les
équivalents traditionnels des formules Lisp sont org-table- current-dline et org-
table-current-column. Exemples :
'if(@# % 2, $#, string(""))'
Insérer le numéro de la colonne sur les lignes impaires, définir le champ comme vide sur les
Chapitre 3 : 41
Tableaux
lignes paires.
'$2 = '(identité remote(FOO, @@#$1))''.
Copier le texte ou les valeurs de chaque ligne de la colonne 1 du tableau
nommé FOO dans la colonne 2 du tableau actuel.
Chapitre 3 : 42
Tableaux

@3 = 2 * remote(FOO, @1$$#)'
Insérer la valeur doublée de chaque colonne de la ligne 1 du tableau nommé
FOO dans la ligne 3 du tableau actuel.
Pour les deuxième et troisième exemples, le tableau FOO doit avoir au moins autant de
lignes ou de colonnes que le tableau actuel. Notez que cette méthode est inefficace3
pour un grand nombre de lignes.

Références nommées
'$name' est interprété comme le nom d'une colonne, d'un paramètre ou d'une constante.
Les constantes sont définies globalement par la variable org-table-formula-
constants, et localement - pour le fichier - par une ligne comme dans cet exemple :
#+CONSTANTS : c=299792458. pi=3.14 eps=2.4e-6
En outre, les propriétés (voir chapitre 7 [Propriétés et colonnes], page 67) peuvent
être utilisées comme constantes dans les formules des tableaux : pour une propriété
"Xyz", utilisez le nom "$PROP_Xyz", et la propriété sera recherchée dans l'entrée courante
du schéma et dans la hiérarchie qui lui est supérieure. Si vous disposez du paquetage
"constants.el", il sera également utilisé pour résoudre les constantes, y compris les
constantes naturelles telles que "$h" pour la constante de Planck, et les unités telles que
"$km" pour les kilomètres4 . Les noms de colonnes et les paramètres peuvent être
spécifiés dans des lignes de tableau spéciales. Celles-ci sont décrites ci-dessous, voir
Section 3.5.10 [Fonctions avancées], page 33. Tous les noms doivent commencer par
une lettre et se composer de lettres et de chiffres.

Références à distance
Vous pouvez également faire référence à des constantes, des champs et des intervalles
d'une table différente, soit dans le fichier actuel, soit dans un autre fichier. La syntaxe est
la suivante
remote(NOM,REF)
où NOM peut être le nom d'un tableau dans le fichier actuel, tel que défini par une
ligne "#+NOM :" avant le tableau. Il peut également s'agir de l'ID d'une entrée, même
dans un fichier différent, et la référence renvoie alors à la première table de cette
entrée. REF est une référence absolue à un champ ou à une plage, comme décrit ci-
dessus, par exemple "@3$3" ou "$somename", valable dans la table référencée.
Lorsque NAME a le format '@ROW$COLUMN', il est remplacé par le nom ou l'ID trouvé
dans ce champ de la table courante. Par exemple, "remote($1, @@>$2)" ⇒
"remote(year_2013, @@>$1)". Le format "B3" n'est pas pris en charge car il ne peut être
distingué d'un nom de table ou d'un identifiant ordinaire.

3.5.2 Syntaxe des formules pour Calc


Une formule peut être n'importe quelle expression algébrique comprise par le paquetage
Calc d'Emacs. Notez que Calc a la convention non-standard que '/' a une priorité
inférieure à '*', de sorte que 'a/b*c' est interprété comme '(a/(b*c))'. Avant l'évaluation
par calc-eval (voir la section "Appeler Calc à partir de vos programmes" dans calc), la
substitution des variables s'effectue selon les règles décrites ci-dessus.
Les vecteurs d'intervalle peuvent être directement introduits dans les fonctions vectorielles Calc telles que
vmean et vsum.
3
Le temps de calcul est égal à O(N^2) car la table FOO est analysée pour chaque champ à copier.
4
Le fichier "constants.el" peut fournir les valeurs des constantes dans deux systèmes d'unités différents,
Chapitre 3 : 43
Tableaux
"SI" et "cgs". Le système utilisé dépend de la valeur de la variable constants-unit-system. Vous
pouvez utiliser les options 'STARTUP' 'constSI' et 'constcgs' pour définir cette valeur pour le tampon
actuel.
Chapitre 3 : 44
Tableaux

Une formule peut contenir une chaîne de mode facultative après un point-virgule.
Cette chaîne est constituée de drapeaux permettant d'influencer le mode Calc et d'autres
modes pendant l'exécution. Par défaut, Org utilise les modes standard de Calc (précision
12, unités angulaires degrés, fraction et modes symboliques désactivés). Le format
d'affichage, cependant, a été modifié en '(float 8)' pour garder les tableaux compacts.
Les paramètres par défaut peuvent être configurés en utilisant la variable org-calc-
default-modes.
'p20' Fixe la précision du calcul interne de Calc à 20
chiffres. n3', 's3', 'e2', 'f4'
Format normal, scientifique, technique ou fixe du résultat du calcul renvoyé
à Org. La précision du formatage Calc est illimitée tant que la précision du
calcul Calc est supérieure.
'D', 'R' Modes de calcul en degrés et en angles
radians. 'F', 'S' Modes de calcul par
fraction et symbolique.
'u'Mode de simplification des unités de Calc. Calc est également une calculatrice
symbolique et peut travailler avec des valeurs ayant une unité, représentée
par des chiffres suivis d'une chaîne d'unités dans les cellules de la table Org.
Ce mode demande à Calc de simplifier les unités dans l'expression calculée
avant de renvoyer le résultat.
'T', 't', 'U' Calculs de durée dans Calc ou Lisp, Section 3.5.4 [Durées et valeurs
temporelles], page 28.
'E' Si et comment prendre en compte les champs vides. Sans 'E', les champs
vides dans les références d'intervalle sont supprimés, de sorte que le vecteur
Calc ou la liste Lisp ne contient que les champs non vides. Avec 'E', les
champs vides sont conservés. Pour les champs vides dans les plages ou les
références de champs vides, la valeur "nan" (pas un nombre) est utilisée
dans les formules Calc et la chaîne vide est utilisée pour les formules Lisp.
Ajoutez 'N' pour utiliser 0 à la place pour les deux types de formules. Pour la
valeur d'un champ, le mode "N" est plus prioritaire que "E".
'N' Interpréter tous les champs comme des nombres, utiliser 0 pour les non
nombres. Voir la section suivante pour voir comment cela est essentiel pour
les calculs avec les formules Lisp. Dans les formules Calc, elle n'est utilisée
qu'occasionnellement, car les chaînes de chiffres y sont déjà interprétées
comme des nombres sans 'N'.
'L'Littéral , pour les formules Lisp uniquement. Voir la section suivante.
A moins que vous n'utilisiez de grands nombres entiers ou un calcul et un affichage de
haute précision pour les nombres à virgule flottante, vous pouvez alternativement fournir
un spécificateur de format printf pour reformater le résultat de Calc après qu'il ait été
transmis à Org au lieu de laisser Calc faire le formatage5 . Quelques exemples :
'$1+$2' Somme du premier et du deuxième
champ '$1+$2;%.2f' Idem, formatage du résultat en
deux décimales 'exp($2)+exp($1)' Des fonctions
mathématiques peuvent être utilisées '$0;%.1f'
Reformatage de la cellule actuelle
en 1 décimale '($3-32)*5/9'Conversion degrés F → C
Chapitre 3 : 45
Tableaux
5
Le reformatage printf est limité en précision parce que la valeur qui lui est transmise est convertie en
"entier" ou en "double". La taille de l'"entier" est limitée par la troncature de la valeur signée à 32
bits. La précision du "double" est limitée à 64 bits au total, ce qui laisse environ 16 chiffres
décimaux significatifs.
Chapitre 3 : 46
Tableaux

'$c/$1/$cm'Conversion Hz → cm, en utilisant 'constants.el'


'tan($1);Dp3s1' Calcul en degrés, précision 3, affichage SCI 1
'sin($1);Dp3%.1e' Idem, mais en utilisant le spécificateur printf
pour l'affichage 'vmean($2..$7)' Calcul de la moyenne de la plage de
colonnes, en utilisant la fonction vectorielle 'vmean($2..$7);FR'Idem ,
mais les champs vides sont traités comme 0 'taylor($3,x=7,2)' Série de
Taylor de $3, à x=7, second degré
Calc contient également un ensemble complet d'opérations logiques (voir la section
"Opérations logiques" dans Calc). Par exemple
'if($1 < 20, teen, string(""))'
""teen"" si l'âge "$1" est inférieur à 20, sinon le champ de résultat de la
table Org est vide et contient la chaîne vide.
'if("$1" == "nan" || "$2" == "nan", string(""), $1 + $2) ; E f-1'
Somme des deux premières colonnes. Lorsqu'au moins un des champs de
saisie est vide, le champ de résultat de la table Org devient vide. 'E' est
obligatoire pour ne pas convertir les champs vides en 0. 'f-1' est une chaîne
de format Calc facultative similaire à '%.1f' mais qui laisse les résultats
vides.
'if(typeof(vmean($1..$7)) == 12, string(""), vmean($1..$7)) ; E'
Valeur moyenne d'un intervalle à moins qu'il n'y ait un champ vide. Chaque
champ vide de l'intervalle est remplacé par "nan", ce qui permet à "vmean"
d'obtenir "nan". Ensuite, "typeof =" 12= détecte le "nan" de vmean et le
champ de résultat de la table Org est défini comme vide. Utilisez cette
méthode lorsque l'ensemble d'échantillons ne devrait jamais comporter de
valeurs manquantes.
'if("$1..$7" == "[]", string(""), vmean($1..$7))'
Valeur moyenne d'un intervalle dont les champs vides sont ignorés. Tous les
champs vides de la plage sont ignorés. Lorsque tous les champs de la plage
sont vides, la valeur moyenne n'est pas définie et le champ de résultat de la
table Org est vide. Utilisez cette option lorsque l'ensemble d'échantillons
peut avoir une taille variable.
vmean($1..$7) ; FR'
Pour compléter l'exemple précédent : La valeur moyenne d'un intervalle
avec des champs vides compte comme des échantillons avec la valeur 0.
N'utilisez cette option que lorsque des ensembles d'échantillons incomplets
doivent être complétés par 0 jusqu'à la taille totale.
Vous pouvez ajouter vos propres fonctions Calc définies dans Emacs Lisp avec
defmath et les utiliser dans la syntaxe des formules pour Calc.

3.5.3 Formes Emacs Lisp en tant que formules


Il est également possible d'écrire une formule en Emacs Lisp. Cela peut être utile pour la
manipulation de chaînes de caractères et les structures de contrôle, si les
fonctionnalités de Calc ne sont pas suffisantes.
Une formule est évaluée comme une forme Lisp lorsqu'elle commence par un
guillemet simple suivi d'une parenthèse ouvrante. Les références aux tableaux de
cellules sont interpolées dans la forme Lisp avant l'exécution. L'évaluation doit renvoyer
une chaîne de caractères ou un nombre. Les modes d'évaluation et le format printf
utilisé pour rendre les valeurs retournées peuvent être spécifiés après un point-virgule.
Chapitre 3 : 47
Tableaux
Par défaut, les références sont interpolées comme des chaînes Lisp littérales : le
contenu du champ est remplacé par la forme Lisp dépouillée des espaces blancs de
début et de fin et entourée de guillemets doubles. Par exemple :
Chapitre 3 : 48
Tableaux

(concat $1 $2)
concatène le contenu des colonnes 1 et 2.
Lorsque l'option 'N' est utilisée, tous les éléments référencés sont analysés comme des
nombres et interpolés comme des nombres Lisp, sans guillemets. Les champs qui ne
peuvent pas être interprétés comme des nombres sont interpolés comme des zéros. Par
exemple :
'(+ $1 $2);N
ajoute les colonnes 1 et 2, ce qui équivaut à la fonction "$1+$2" de Calc. Les plages sont
insérées sous forme de champs séparés par des espaces, de sorte qu'elles peuvent être
intégrées dans une syntaxe de liste ou de vecteur. Par exemple :
(appliquer '+ '($1..$4));N
calcule la somme des colonnes 1 à 4, comme 'vsum($1..$4)' de Calc.
Lorsque l'option 'L' est utilisée, tous les champs sont interpolés littéralement : le
contenu de la cellule est remplacé dans la forme Lisp sans les espaces blancs de début
et de fin et sans les guillemets. Si une référence doit être interprétée comme une chaîne
de caractères par la forme Lisp, l'opérateur de référence lui-même doit être placé entre
guillemets, comme '"$3"'. L'indicateur 'L' est utile lorsque des chaînes de caractères et
des nombres sont utilisés dans la même forme Lisp. Par exemple :
(substring "$1" $2 $3);L
extrait la partie de la chaîne de la colonne 1 comprise entre les positions des caractères
spécifiés dans les entiers des colonnes 2 et 3 et est plus facile à lire que l'équivalent :
(substring $1 (string-to-number $2) (string-to-number $3))

3.5.4 Durées et valeurs temporelles


Si vous souhaitez calculer des valeurs temporelles, utilisez l'indicateur 'T', 't' ou 'U',
soit dans les formules Calc, soit dans les formules Elisp :
| Tâche 1 |Tâche 2 |Total |
|---------+----------+ -------------------|
|2 :12 |1 :47 | 03:59:00 |
|2 :12 |1 :47 |03 :59 |
| 3:02:20 | -2:07:00 |0 .92 |
#+TBLFM : @2$3=$1+$2;T::@3$3=$1+$2;U::@4$3=$1+$2;t
Les valeurs de durée saisies doivent être de la forme 'HH:MM[:SS]', les secondes
étant facultatives. Avec l'indicateur 'T', les durées calculées sont affichées sous la forme
'HH:MM:SS' (voir la première formule ci-dessus). Avec l'indicateur "U", les secondes sont
omises de sorte que le résultat est uniquement "HH:MM" (voir la deuxième formule ci-
dessus). La mise à zéro du champ des heures dépend de la valeur de la variable org-
table-duration-hour-zero-padding.
Avec l'option 't', les durées calculées sont affichées selon la valeur de l'option org-
table-duration-custom-format, qui prend par défaut la valeur heures et affiche le
résultat sous forme de fraction d'heures (voir la troisième formule dans l'exemple ci-
dessus).
Les valeurs de durée négatives peuvent également être manipulées, et les nombres
entiers sont considérés comme des secondes dans les opérations d'addition et de
soustraction.

3.5.5 Formules de champ et de plage


Chapitre 3 : 49
Tableaux
Pour affecter une formule à un champ particulier, tapez-la directement dans le champ,
précédée de ':=', par exemple 'vsum(@II..III)'. Lorsque vous appuyez sur TAB ou RET
ou C-c C-c alors que le point se trouve encore dans le champ
Chapitre 3 : 50
Tableaux

la formule est enregistrée en tant que formule pour ce champ, évaluée et le champ
actuel est remplacé par le résultat.
Les formules sont stockées dans un mot-clé spécial "TBLFM" situé directement sous le
tableau. Si vous tapez l'équation dans le quatrième champ de la troisième ligne de
données du tableau, la formule ressemble à "@3$4=1+2$". Lors de l'insertion, de la
suppression ou du remplacement de colonnes et de lignes à l'aide des commandes
appropriées, les références absolues (mais pas les références relatives) dans les formules
stockées sont modifiées afin de continuer à faire référence au même champ. Pour éviter
que cela ne se produise, en particulier dans les références aux champs, ancrez les
champs aux bords du tableau (en utilisant "@<", "@>", "$<", "$>"), ou aux lignes du
tableau à l'aide de la notation "@I". L'adaptation automatique des références de champ
ne se produit pas si vous modifiez la structure du tableau à l'aide des commandes
d'édition normales : vous devez corriger les formules vous-même.
Au lieu de taper une équation dans le champ, vous pouvez également utiliser la commande suivante
C-u C-c = (org-table-eval-formula)
Installe une nouvelle formule pour le champ actuel. La commande demande
une formule par défaut à partir du mot-clé 'TBLFM', l'applique au champ
actuel et l'enregistre.
Le côté gauche d'une formule peut également être une expression spéciale afin
d'affecter la formule à un certain nombre de champs différents. Il n'existe pas de
raccourci clavier pour saisir de telles formules de plage. Pour les ajouter, utilisez l'éditeur
de formules (voir la section 3.5.8 [Édition et débogage des formules], page 30) ou
modifiez directement le mot-clé "TBLFM".
'$2='Formule de colonne, valable pour toute la colonne. Cette formule est si courante
qu'Org la traite de manière particulière, voir Section 3.5.6 [Formules de
colonne], page 29.
@3='Formule de ligne, s'applique à tous les champs de la ligne spécifiée. @>='
signifie la dernière ligne. '@1$2..@4$3='
Formule de plage, s'applique à tous les champs de la plage rectangulaire donnée. Cette
formule peut
peut également être utilisée pour affecter une formule à certains champs d'une ligne, mais pas
à tous.
'$NAME=' Champ nommé, voir Section 3.5.10 [Fonctions avancées], page 33.
3.5.6 Formules de colonne
Lorsque vous attribuez une formule à une simple référence de colonne telle que "$3=", la
même formule est utilisée dans tous les champs de cette colonne, avec les exceptions
très pratiques suivantes : (i) Si le tableau contient des lignes de séparation horizontales
avec des lignes au-dessus et au-dessous, tout ce qui se trouve avant la première ligne
de séparation est considéré comme faisant partie de l'en-tête du tableau et n'est pas
modifié par les formules de colonne. Par conséquent, un en-tête est obligatoire lorsque
vous utilisez des formules de colonne et que vous souhaitez ajouter des lignes de
séparation pour regrouper des lignes, par exemple pour séparer une ligne de total située
en bas des lignes de somme situées au-dessus. (ii) Les champs qui reçoivent déjà une
valeur à partir d'une formule de champ/plage ne sont pas affectés par les formules en
colonnes. Ces conditions rendent les formules en colonnes très faciles à utiliser.
Pour affecter une formule à une colonne, saisissez-la directement dans n'importe
quel champ de la colonne, précédée d'un signe égal, comme '=$1+$2'. Lorsque vous
Chapitre 3 : 51
Tableaux sur TAB ou RET ou C-c C-c alors que le point se trouve toujours dans le champ,
appuyez
la formule est stockée en tant que formule pour la colonne actuelle, évaluée et le champ
actuel est remplacé par le résultat. Si le champ ne contient que '=', la formule
précédemment enregistrée pour cette colonne est utilisée. Pour chaque colonne, Org ne
retient que la dernière formule utilisée. Dans le mot-clé 'TBLFM', les formules de colonne
ressemblent à '$4=$1+$2'. Le côté gauche d'une formule de colonne ne peut pas être le
nom de la colonne, il doit être la référence numérique de la colonne ou '$>'.
Chapitre 3 : 52
Tableaux

Au lieu de taper une équation dans le champ, vous pouvez également utiliser la commande suivante :
C-c = (org-table-eval-formula)
Installe une nouvelle formule pour la colonne actuelle et remplace le champ
actuel par le résultat de la formule. La commande demande une formule,
dont la valeur par défaut est tirée du mot-clé 'TBLFM', l'applique au champ
courant et l'enregistre. Avec un préfixe numérique, par exemple C-5 C-c =, la
commande l'applique à autant de champs consécutifs dans la colonne
actuelle.
3.5.7 Fonctions de recherche
Org possède trois fonctions Emacs Lisp prédéfinies pour les
recherches dans les tables. (org-lookup-first VAL S-LIST R-
LIST &optional PREDICATE)'
Recherche le premier élément S de la liste S-LIST pour lequel
(PRÉDICAT VAL S)
est non nul ; renvoie la valeur de la position correspondante dans la
liste R-LIST. Par défaut, PREDICATE est égal. Notez que les paramètres
VAL et S sont transmis à PREDICATE dans le même ordre que les paramètres
correspondants dans l'appel à org-lookup-first, où VAL précède S-LIST.
Si R-LIST est nul, l'élément S correspondant de S-LIST est renvoyé.
(org-lookup-last VAL S-LIST R-LIST &optional PREDICATE)'
Semblable à org-lookup-first ci-dessus, mais recherche le dernier élément pour lequel la
fonction
PREDICATE est non nul.
(org-lookup-all VAL S-LIST R-LIST &optional PREDICATE)'
Similaire à org-lookup-first, mais recherche tous les éléments pour
lesquels PRED- ICATE est non nul, et renvoie toutes les valeurs
correspondantes. Cette fonction ne peut pas être utilisée seule dans une
formule, car elle renvoie une liste de valeurs. Cependant, de puissantes
recherches peuvent être construites lorsque cette fonction est combinée
avec d'autres fonctions Emacs Lisp.
Si les plages utilisées dans ces fonctions contiennent des champs vides, le mode "E"
pour la formule doit généralement être spécifié : sinon, les champs vides ne sont pas
inclus dans S-LIST et/ou R- LIST, ce qui peut, par exemple, entraîner un mappage
incorrect d'un élément de S-LIST à l'élément correspondant de R-LIST.
Ces trois fonctions peuvent être utilisées pour mettre en œuvre des tableaux associatifs,
compter les cellules correspondantes, classer les résultats, regrouper les données, etc.
Pour des exemples pratiques, voir ce tutoriel sur Worg.

3.5.8 Édition et débogage de formules


Vous pouvez éditer des formules individuelles dans le minibuffer ou directement dans le
champ. Org peut également préparer un tampon spécial avec toutes les formules
actives d'un tableau. Lorsqu'il propose une formule à l'édition, Org convertit les
références au format standard (comme 'B3' ou 'D&') si possible. Si vous préférez
travailler uniquement avec le format interne (comme '@3$2' ou '$4'), configurez la
variable org-table-use-standard-references.
C-c = ou C-u C-c = (org-table-eval-formula)
Modifie la formule associée à la colonne/au champ en cours dans le
Chapitre 3 : 53
Tableaux minibuffer. Voir Section 3.5.6 [Formules de colonne], page 29, et Section
3.5.5 [Formules de champ et de plage], page 28.
Chapitre 3 : 54
Tableaux

C-u C-u C-c = (org-table-eval-formula)


Réinsère la formule active (soit une formule de champ, soit une formule de
colonne) dans le champ courant, de sorte que vous puissiez l'éditer
directement dans le champ. L'avantage par rapport à l'édition dans le
minibuffer est que vous pouvez utiliser la commande C-c ?
C-c ? (org-table-field-info)
Lors de l'édition d'une formule dans un champ de table, mettez en
surbrillance le(s) champ(s) référencé(s) par la référence à la position
ponctuelle dans la formule.
C-c } (org-table-toggle-coordinate-overlays)
Permet d'alterner l'affichage des numéros de lignes et de colonnes d'un tableau,
à l'aide de superpositions. Ceux-ci sont mis à jour à chaque fois que le
tableau est aligné ; vous pouvez le forcer avec C-c C-c.
C-c { (org-table-toggle-formula-debugger)
Permet d'activer ou de désactiver le débogueur de formules. Voir ci-dessous.
C-c ' (org-table-edit-formulas)
Éditer toutes les formules du tableau actuel dans une mémoire tampon
spéciale, où les formules sont affichées une par ligne. Si le champ en cours
contient une formule active, un point dans l'éditeur de formules la marque. À
l'intérieur du tampon spécial, Org met automatiquement en évidence toute
référence de champ ou de plage à la position du point. Vous pouvez éditer,
supprimer et ajouter des formules, et utiliser les commandes suivantes :
C-c C-c ou C-x C-s (org-table-fedit-finish)
Quittez l'éditeur de formules et enregistrez les formules modifiées. Avec C-u
préfixe, applique également les nouvelles formules à l'ensemble du tableau.
C-c C-q (org-table-fedit-abort)
Quitter l'éditeur de formule sans installer les modifications.
C-c C-r (org-table-fedit-toggle-ref-type)
Basculer toutes les références dans l'éditeur de formule entre
standard (comme 'B3') et interne (comme '@3$2').
TAB (org-table-fedit-lisp-indent)
Pré-impression ou indentation de la formule Lisp au point. Dans
une ligne contenant une formule Lisp, la formule est formatée
selon les règles d'Emacs Lisp. Un autre TAB ramène la formule
en arrière. Dans la formule ouverte, la touche TAB rétablit
l'indentation comme dans le mode Emacs Lisp.
M-T AB (lisp-complete-symbol)
Symboles Lisp complets, comme dans le mode Lisp d'Emacs.
S-HAUT, S-BAS, S-GAUCHE, S-DROITE
Décalage de la référence au point. Par exemple, si la référence
est "B3" et que vous appuyez sur S-DROITE, elle devient "C3".
Cela fonctionne également pour les références relatives et les
références de ligne.
M-S-UP (org-table-fedit-line-up)
Déplacer la ligne de test pour les formules de colonne vers le haut dans le tampon
Chapitre 3 : 55
Tableaux
Org.
M-S-DOWN (org-table-fedit-line-down)
Déplacer la ligne de test pour les formules de colonne vers le bas dans le tampon
Org.
Chapitre 3 : 56
Tableaux

M-U P (org-table-fedit-scroll-up)
Faites défiler vers le haut la fenêtre affichant le tableau.
M-DOWN (org-table-fedit-scroll-down)
Faites défiler la fenêtre affichant le tableau.
C-c } Activer ou désactiver la grille de coordonnées dans le tableau.
Le fait de vider un champ de table ne supprime pas la formule associée à ce champ, car
celle-ci est stockée dans une autre ligne - la ligne du mot-clé "TBLFM". Lors du prochain
recalcul, le champ sera à nouveau rempli. Pour supprimer la formule d'un champ, vous
devez donner une réponse vide lorsqu'on vous demande la formule, ou éditer le mot-clé
'TBLFM'.
Vous pouvez éditer le mot-clé 'TBLFM' directement et réappliquer les équations
modifiées avec C-c C-c dans cette ligne ou avec les commandes de recalcul normales
dans le tableau.

Utilisation de plusieurs lignes "TBLFM


Vous pouvez appliquer la formule temporairement. Ceci est utile lorsque vous souhaitez
changer la formule appliquée au tableau. Placez plusieurs mots-clés 'TBLFM' juste après
le tableau, puis appuyez sur C-c C-c sur la formule à appliquer. Voici un exemple :
| x | y |
|---+---|
| 1 | |
#+TBLFM :
$2=$1*1 #+TBLFM
: $2=$1*2
En appuyant sur C-c C-c dans la ligne '#+TBLFM : $2=$1*2', on obtient :
| x | y |
|---+---|
| 1 | 2 |
| 2 | 4 |
#+TBLFM :
$2=$1*1 #+TBLFM
: $2=$1*2
Si vous recalculez ce tableau, avec C-u C-c *, par exemple, vous obtenez le résultat
suivant en appliquant uniquement le premier mot-clé "TBLFM".
| x | y |
|---+---|
| 1 | 1 |
#+TBLFM :
$2=$1*1 #+TBLFM
: $2=$1*2

Débogage des formules


Lorsque l'évaluation d'une formule conduit à une erreur, le contenu du champ devient la
chaîne "#ERROR". Si vous voulez voir ce qui se passe pendant la substitution des
variables et le calcul afin de trouver un bogue, activez le débogage de la formule dans le
menu Tbl et répétez le calcul, par exemple en appuyant sur C-u C-u C-c = RET dans un
champ. Des informations détaillées sont affichées.
Chapitre 3 : 57
Tableaux

3.5.9 Mise à jour du tableau


Le recalcul d'un tableau n'est normalement pas automatique, mais doit être déclenché
par un mandat. Pour rendre le recalcul au moins semi-automatique, voir la section
3.5.10 [Fonctions avancées], page 33.
Pour recalculer une ligne d'un tableau ou le tableau entier, utilisez les commandes suivantes :
C-c * (org-table-recalculate)
Recalcule la ligne actuelle en appliquant d'abord les formules de colonne
stockées de gauche à droite, ainsi que toutes les formules de champ/plage
de la ligne actuelle.
C-u C-c * ou C-u C-c C-c
Recalculer l'ensemble du tableau, ligne par ligne. Les lignes antérieures à la
première ligne sont laissées de côté, en supposant qu'elles font partie de
l'en-tête du tableau.
C-u C-u C-c * ou C-u C-u C-c C-c (org-table-iterate)
Itérer la table en la recalculant jusqu'à ce qu'il n'y ait plus de changements.
Cette opération peut s'avérer nécessaire si certains champs calculés utilisent la
valeur d'autres champs calculés ultérieurement dans la séquence de calcul.
M-x org-table-recalculate-buffer-tables
Recalculer toutes les tables de la mémoire tampon actuelle.
M-x org-table-iterate-buffer-tables
Itère toutes les tables dans la mémoire tampon actuelle, afin de faire
converger les dé- pendances de table à table.

3.5.10 Fonctionnalités avancées


Si vous souhaitez que le recalcul des champs se fasse automatiquement ou que vous
puissiez attribuer des noms6 aux champs et aux colonnes, vous devez réserver la
première colonne du tableau à des caractères de marquage spéciaux.
C-# (org-table-rotate-recalc-marks)
Faites tourner la marque de calcul de la première colonne dans les états "#",
"*", " !", "$". Lorsqu'il existe une région active, modifiez toutes les marques
de la région.
Voici un exemple de tableau qui recueille les résultats d'examens des étudiants et qui
utilise ces fonctionnalités :
|---+---------+--------+--------+--------+-------+----------------|
| Étudiant | Prob 1 | Prob 2 | Prob 3 | Total | Note |
|---+---------+--------+--------+--------+-------+----------------|
| ! | | P1 | P2 | P3 | Tot | |
| # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
| ^ | | m1 | m2 | m3 | mt | |
|---+---------+--------+--------+--------+-------+----------------|
| # | Peter | 10 | 8 | 23 | 41 | 8.2 |
| # | Sam | 2 | 4 | 3 | 9 | 1.8 |
|---+---------+--------+--------+--------+-------+----------------|
| Moyenne | | || 25.0 | |
6
Ces noms doivent commencer par un caractère alphabétique et n'utiliser que des caractères alphanumériques ou de
soulignement.
Chapitre 3 : 58
Tableaux

| ^ | | | | à | |
l'heu
re
actuel
le
| $ | max=50 | | | | | |
|---+---------+--------+--------+--------+-------+----------------|
#+TBLFM : $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@-II..@-I);%.1f
Important : pour ces tableaux spéciaux, le recalcul du tableau avec C-u C-c *
n'affecte que les lignes marquées "#" ou "*" et les champs auxquels une
formule a été attribuée. Les formules de colonne ne sont pas appliquées aux
lignes dont le premier champ est vide.
Les caractères de marquage ont la signification suivante :
Les champs de cette ligne définissent les noms des colonnes, de sorte que
vous pouvez appeler une colonne "$Tot" au lieu de "$6".
Cette ligne définit les noms des champs situés au-dessus de la ligne. Avec une
telle définition, toute formule dans le tableau peut utiliser '$m1' pour faire
référence à la valeur '10'. De même, si vous affectez une formule à un
champ de nom, elle est stockée sous la forme "$nom = ' " .
'_' Semblable à '^', mais définit des noms pour les champs de la ligne inférieure.
Les champs de cette ligne peuvent définir des paramètres pour les formules. Par
exemple, si un champ d'une ligne "$" contient "max=50", les formules de cette
table peuvent faire référence à la valeur 50 en utilisant "$max". Les
paramètres fonctionnent exactement comme les constantes, à ceci près
qu'ils peuvent être définis pour chaque table.
'#'Les champs de cette ligne sont automatiquement recalculés lorsque l'on appuie
sur TAB ou RET ou S-TAB dans cette ligne. Cette ligne est également
sélectionnée pour un recalcul global avec C-u C-c *. Les lignes non marquées
ne sont pas modifiées par cette commande.
'*' Sélectionne cette ligne pour le recalcul global avec C-u C-c *, mais pas pour
le recalcul automatique. Utilisez cette option lorsque le recalcul automatique
ralentit trop l'édition.
'/' Ne pas exporter cette ligne. Utile pour les lignes qui contiennent des
marqueurs de réduction '<N>' ou des marqueurs de groupes de colonnes.
Enfin, pour vous mettre l'eau à la bouche, voici un tableau qui calcule la série de
Taylor de degré n à l'endroit x pour quelques fonctions.
|---+-------------+---+-----+--------------------------------------------------------------------|
|| Résultat de l' analyse des données |
|---+-------------+---+-----+--------------------------------------------------------------------|
| # | exp(x) | 1 | x | 1 + x |
| # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
| # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
| x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
| x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
| * | tan(x) | 3 | x| 0,0175 x + 1,77e-6 x^3 |
|---+-------------+---+-----+--------------------------------------------------------------------|
Chapitre 3 : 59
Tableaux
#+TBLFM : $5=taylor($2,$4,$3);n3
Chapitre 3 : 60
Tableaux

3.6 Org Plot


Org Plot permet de produire des graphiques des informations stockées dans les tables
Org, soit sous forme graphique, soit sous forme d'art ASCII.

Graphiques avec Gnuplot


Org Plot peut produire des graphiques 2D et 3D des informations stockées dans les
tables Org à l'aide de Gnuplot et du mode Gnuplot. Pour voir cela en action, assurez-
vous que Gnuplot et le mode Gnuplot sont installés sur votre système, puis appelez C-
c " g ou M-x org-plot/gnuplot sur la table suivante.
#+PLOT : title : "Citas" ind:1 deps :(3) type:2d with:histograms set : "yrange [0
:]"
| Sede| Max cites | H-index |
|-----------+-----------+------------------|
| Chili | 257.72 | 21.39 |
| Leeds | 165.77 | 19.68 |
| Sao Paolo | 71.00 | 11.50 |
| Stockholm | 134.19 | 14.33 |
| Morelia | 257.56 | 17.67 |
Org Plot prend en charge une série de types de tracés et permet d'en ajouter
d'autres. Par exemple, un tracé radar peut être généré de la manière suivante :
#+PLOT : title : "Une évaluation des formats de documents en texte clair"
transpose:yes type:radar m
| Les règles d'utilisation des logiciels sont les suivantes : - Format| Contrôle
fin | Effort initial | Simplicité syntaxique | Éditer
|-------------------+----------------------+----------------+-------------------+-----
| Mot | 2 | 4 | 4 |
| LaTeX | 4 | 1 | 1 |
| Mode Org | 4 | 2 | 3.5 |
| Markdown | 1 | 3 | 3 |
| Markdown + Pandoc | 2.5 | 2.5 | 2.5 |
Notez que Org Plot est suffisamment intelligent pour appliquer les en-têtes du tableau
en tant qu'étiquettes. Un contrôle plus poussé des étiquettes, du type, du contenu et de
l'apparence des tracés peut être exercé au moyen du mot-clé "PLOT" précédant un
tableau. Voir ci-dessous la liste complète des options de Org Plot. Pour plus
d'informations et d'exemples, voir le tutoriel Org Plot.

Options de tracé
'set' Spécifie n'importe quelle option Gnuplot à définir
lors de la création d'un graphique. 'title' (titre)
Spécifie le titre du graphique.
ind' Spécifier la colonne du tableau à utiliser comme axe des x.
'deps' Spécifie les colonnes à représenter sous la forme d'une liste de style Lisp,
entourée de parenthèses et séparée par des espaces, par exemple 'dep :(3
4)' pour représenter les troisième et quatrième colonnes. Par défaut, toutes
les autres colonnes sont représentées graphiquement, à l'exception de la
colonne 'ind'.
transpose Si 'y', 'yes' ou 't', on tente de transposer les données du tableau avant de les
Chapitre 3 : 61
Tableaux tracer. Reconnaît également l'option abrégée "trans".
'type' Spécifie le type de tracé, par défaut l'un de '2d', '3d', 'radar', ou 'grid'.
Les types disponibles peuvent être personnalisés avec org-plot/preset-plot-types.
Chapitre 3 : 62
Tableaux

'avec' Spécifier une option 'avec' à insérer pour chaque colonne tracée, par
exemple 'lignes', 'points', 'boîtes', 'impulsions'. La valeur par défaut est
"lignes".
'file' Si vous voulez tracer dans un fichier, spécifiez '"path/to/desired/output-
file"'. 'labels' Liste des labels à utiliser pour les 'deps'. Par défaut, il s'agit des en-
têtes de colonne s'ils ont été modifiés.
existent.
'ligne' Spécifier une ligne entière à insérer dans le script Gnuplot.
'map' Lorsque vous tracez des types '3d' ou 'grid', mettez ce paramètre à 't' pour
tracer une cartographie plate plutôt qu'une pente '3d'.
minFournit une valeur d'axe minimale qui peut être utilisée par un type de graphique.
On suppose implicitement que l'on se réfère à l'axe 'y'. Il est possible de
fournir explicitement une valeur pour l'axe "x" ou "y" avec "xmin" et "ymin".
maxFournit une valeur maximale pour l'axe qui peut être utilisée par un type de
graphique. On suppose implicitement que l'on se réfère à l'axe 'y'. Il est
possible de fournir explicitement une valeur pour les axes 'x' ou 'y' avec
'xmax' et 'ymax'.
ticksFournit un nombre désiré de ticks d'axe à afficher, qui peuvent être
utilisés par un type de tracé. Si aucune valeur n'est fournie, un type de
graphique nécessitant des ticks utilisera org--plot/sensible-tick-num
pour essayer de déterminer une bonne valeur.
'timefmt' Spécifie le format des horodatages du mode Org tels qu'ils seront analysés par Gnuplot.
La valeur par défaut est '%Y-%m-%d-%H:%M:%S'.
'script' Si vous souhaitez avoir un contrôle total, vous pouvez spécifier un fichier script
- placez le nom du fichier entre guillemets doubles - qui sera utilisé pour le
tracé. Avant le tracé, chaque occurrence de "$datafile" dans le script
spécifié sera remplacée par le chemin d'accès au fichier de données généré.
Remarque : même si vous choisissez cette option, vous pouvez toujours
spécifier le type de tracé, car cela peut avoir un impact sur le contenu du
fichier de données.

Diagrammes à barres ASCII


Lorsque le point est sur une colonne, la frappe de C-c `` a ou M-x orgtbl-ascii-plot crée
une nouvelle colonne contenant un graphique en barres ASCII. Le tracé est implémenté
à travers une formule de colonne régulière. Lorsque la colonne source change, le
diagramme à barres peut être mis à jour en actualisant le tableau, par exemple en
tapant C-u C-c *.
| Sede| Max cites | |
|---------------+-----------+---------------------------|
| Chili | 257.72 | WWWWWWWWWWWW |
W
| Leeds | 165.77 | WWWWWWWh |
| Sao Paolo | 71.00 | WWW ; |
| Stockholm | 134.19 | WWWWWW : |
| Morelia | 257.56 | WWWWWWWWWWH |
| Rochefourchat | 0.00 | |
#+TBLFM : $3='(orgtbl-ascii-draw $2 0.0 257.72 12)
Chapitre 3 : 63
Tableaux

La formule est un appel Elisp.


orgtbl-ascii-draw value min max &optional width
Dessinez une barre ASCII dans un tableau. [Fonction]
Chapitre 3 : 64
Tableaux

VALEUR est la valeur à tracer.


MIN est la valeur affichée sous la forme d'une barre vide. MAX est la valeur qui
remplit toute la LARGEUR. Les valeurs des sources en dehors de cette plage sont
affichées comme étant "trop petites" ou "trop grandes".
WIDTH est le nombre de caractères du diagramme à barres. La valeur par défaut est '12'.
Chapitre 4 : 65
Hyperliens

4 Hyperliens

Comme HTML, Org prend en charge les liens à l'intérieur d'un fichier, les liens externes
vers d'autres fichiers, les articles Usenet, les courriers électroniques et bien d'autres
choses encore.

4.1 Format du lien


Org reconnaît les URI simples, éventuellement entre crochets1 , et les active en tant que
liens cliquables.
Le format général des liens est cependant le suivant :
[[LIEN][DESCRIPTION]]
ou alternativement
[[LIEN]]
Certains caractères "\", "[" et "]" de la partie LINK doivent être "échappés", c'est-à-
dire précédés d'un autre caractère "\". Plus précisément, les caractères suivants, et eux
seuls, doivent être échappés :
1. tous les caractères '[' et ']',
2. tout caractère "\" précédant ']' ou '[',
3. chaque caractère "\" à la fin du lien.

Les fonctions d'insertion de liens (voir Section 4.5 [Gestion des liens], page 42)
échappent correctement les caractères ambigus. Vous ne devez vous préoccuper des
règles ci-dessus que lorsque vous insérez directement un URI entre crochets. En cas de
doute, vous pouvez utiliser la fonction org-link-escape, qui transforme une chaîne de
liens en sa forme échappée.
Une fois qu'un lien dans le tampon est complet, avec toutes les parenthèses présentes,
Org modifie l'affichage de sorte que "DESCRIPTION" soit affiché au lieu de
"[[LINK][DESCRIPTION]]" et que "LINK" soit affiché au lieu de "[[LINK]]". Les liens sont
mis en évidence dans la face org-link, qui, par défaut, est une face soulignée.
Vous pouvez modifier directement la partie visible d'un lien. Il peut s'agir de la partie
LINK, s'il n'y a pas de description, ou de la partie DESCRIPTION dans le cas contraire.
Pour éditer également la partie invisible du LIEN, utilisez C-c C-l en pointant sur le lien
(voir Section 4.5 [Gestion des liens], page 42).
Si vous placez le point au début ou juste derrière la fin du texte affiché et que vous
appuyez sur BS, vous supprimez l'accolade invisible à cet endroit2 . Le lien devient alors
incomplet et les éléments internes s'affichent à nouveau en texte brut. L'insertion de la
parenthèse manquante masque à nouveau les éléments internes du lien. Pour afficher
la structure interne de tous les liens, utilisez le menu : Org → Hyperliens → Liens
littéraux.

1
Les URI simples ne sont reconnus que pour un ensemble bien défini de schémas. Voir la section 4.4
[Liens externes], page 40. Contrairement à la syntaxe des URI, ils ne peuvent pas non plus contenir de
parenthèses ou d'espaces blancs. Les URI entre crochets d'angle ne sont pas soumis à cette limitation.
2
Plus précisément, le comportement exact dépend de la façon dont le point est arrivé là - voir la section
"Texte invisible" dans elisp.
Chapitre 4 : 66
Hyperliens

4.2 Liens internes


Un lien qui ne ressemble pas à une URL - c'est-à-dire qui ne commence pas par un
schéma connu ou un nom de fichier - renvoie au document actuel. Vous pouvez le
suivre avec C-c C-o lorsque le point est sur le lien, ou avec un clic de souris (voir
Section 4.5 [Gestion des liens], page 42).
Org offre plusieurs raffinements à la navigation interne au sein d'un document. En
particulier, une construction telle que "[[#my-custom-id]]" cible spécifiquement l'entrée
dont la propriété "CUSTOM_ID" est définie sur "my-custom-id". De même, un lien interne
ressemblant à "[[*Certaine section]]" pointe vers un titre portant le nom de
"certaine section"3 .
Lorsque le lien n'appartient à aucun des cas ci-dessus, Org recherche une cible dédiée :
la même chaîne de caractères entre doubles crochets angulaires, comme "<<My
Target>>".
S'il n'existe pas de cible dédiée, le lien tente de correspondre au nom exact d'un
élément dans le tampon. Le nommage se fait, sans surprise, avec le mot-clé "NOM", qui
doit être placé dans la ligne précédant l'élément auquel il se réfère, comme dans
l'exemple suivant
#+NAME : Ma cible
| a | table |
|----+---------------------|
| de quatre cellules |
Enfin, si aucune des méthodes ci-dessus n'aboutit, Org recherche un titre qui
correspond exactement au texte du lien mais qui peut également inclure un mot-clé
TODO et des balises, ou lance une recherche en texte simple, selon la valeur de org-
link-search-must-match-exact-headline.
Notez que vous devez vous assurer que les ID personnalisés, les cibles dédiées et
les noms sont uniques dans tout le document. Org fournit un linter pour vous aider dans
ce processus, si nécessaire. Voir Section 17.10 [Syntaxe Org], page 254.
Lors de l'exportation, les liens internes sont utilisés pour marquer les objets et leur
attribuer un numéro. Les objets marqués sont ensuite référencés par des liens pointant
vers eux. En particulier, les liens sans description apparaissent comme le numéro
attribué à l'objet marqué4 . Dans l'extrait suivant d'un tampon Org
1. un article
2. <<cible>>un autre objet
Nous nous référons ici à l'élément [[cible]].
La dernière phrase apparaîtra comme "Nous nous référons ici au point 2" lorsqu'elle sera exportée.
Dans les fichiers non-Org, la recherche porte sur les mots du texte du lien. Dans
l'exemple ci-dessus, la recherche porterait sur le mot "cible".
Suivre un lien pousse une marque sur l'anneau de marque d'Org. Vous pouvez revenir
à la position précédente avec C-c &. L'utilisation de cette commande plusieurs fois de
suite permet de revenir aux positions enregistrées précédemment.

3
Pour insérer un lien ciblant un titre, il est possible d'utiliser la complétion dans la mémoire tampon. Il suffit
de taper une étoile suivie de quelques lettres facultatives dans la mémoire tampon et d'appuyer sur M-
TAB. Tous les titres de la mémoire tampon actuelle sont proposés comme compléments.
4
Lorsque l'on cible un mot-clé "NAME", le mot-clé "CAPTION" est obligatoire pour obtenir une numérotation
Chapitre 4 : 67
Hyperliens
correcte (voir section 12.8 [Légendes], page 144).
Chapitre 4 : 68
Hyperliens

4.3 Cibles radio


Org peut automatiquement transformer en lien toute occurrence de certains noms de
cibles dans un texte normal. Ainsi, sans créer explicitement un lien, le texte se connecte
à la cible en indiquant sa position par radio. Les cibles radio sont entourées de triples
crochets angulaires. Par exemple, une cible "<<<Ma cible>>>" fait en sorte que chaque
occurrence de "ma cible" dans un texte normal est activée en tant que lien. Le fichier
Org n'est analysé automatiquement pour les cibles radio que lorsqu'il est chargé pour la
première fois dans Emacs. Pour mettre à jour la liste des cibles pendant l'édition,
appuyez sur C-c C-c en pointant sur une cible.

4.4 Liens externes


Org propose des liens vers des fichiers, des sites web, des messages Usenet et des
messages électroniques, des entrées de la base de données BBDB et des liens vers les
conversations IRC et leurs journaux. Les liens externes sont des localisateurs de type
URL. Ils commencent par une courte chaîne d'identification suivie de deux points. Il ne
peut y avoir d'espace après les deux points.
Voici l'ensemble des types de liens intégrés :
'file' Liens vers des fichiers. Le nom du fichier peut être distant, absolu ou relatif.
En outre, vous pouvez spécifier un numéro de ligne ou une recherche de
texte. Dans les fichiers Org, vous pouvez créer un lien vers un nom de titre,
un identifiant personnalisé ou une référence de code.
Dans un cas particulier, le préfixe "file" peut être omis si le nom du fichier est
complet, c'est-à-dire s'il commence par "./" ou "/".
'pièce jointe'
Identique aux liens de fichiers mais pour les fichiers et les dossiers attachés
au nœud actuel (voir Section 10.2 [Pièces jointes], page 104). Les liens de
pièces jointes sont conçus pour se comporter exactement comme les liens de
fichiers, mais pour les fichiers relatifs au répertoire de pièces jointes.
'bbdb' Lien vers un enregistrement BBDB, avec possibilité de compléter les expressions rationnelles.
'docview' Lien vers un document ouvert en mode DocView. Vous pouvez spécifier un
numéro de page.
'doi' Lien vers une ressource électronique, par
l'intermédiaire de sa poignée. elisp Exécute une
commande Elisp lors de l'activation. 'gnus', 'rmail', 'mhe'
Lien vers des messages ou des dossiers d'un MUA Emacs donné.
'help' Affichage de la documentation d'un symbole dans le
tampon '*Help*'. 'http', 'https'
Liens internet.
'id' Lien vers un titre spécifique par sa propriété ID, dans un
fichier Org. 'info' Lien vers un manuel d'information ou vers un
nœud spécifique.
'irc' Lien vers un canal IRC.
'mailto' Lien vers la composition
Chapitre 4 : 69
Hyperliens
d'un message. 'news' Liens
Usenet.
Chapitre 4 : 70
Hyperliens

'shell' Exécute une commande shell lors de l'activation.


Le tableau suivant illustre les types de liens ci-dessus, ainsi que leurs options :

Exemple de type de lien


http 'http://staff.science.uva.nl/c.dominik/' https
'https://orgmode.org/'
doi 'doi:10.1000/182'
fichier 'file:/home/dominik/images/jupiter.jpg'
'/home/dominik/images/jupiter.jpg' (idem ci-dessus)
'file:papers/last.pdf'
'./papers/last.pdf' (comme ci-dessus)
'file:/ssh:me@some.where:papers/last.pdf' (distant)
'/ssh:me@some.where:papers/last.pdf' (comme ci-dessus)
'file:sometextfile::NNN' (saut au numéro de ligne)
'file:projects.org'
'file:projects.org::some words' (recherche textuelle)5
'file:projects.org::*task title' (recherche de
titres) 'file:projects.org::#custom-id' (recherche
de titres)
pièce jointe 'attachment:projects.org' (pièce jointe : projets.org)
'attachment:projects.org::some words' (recherche
textuelle) docview 'docview:papers/last.pdf::NNN' (recherche de
texte)
id ‘id:B7423F4D-2E8A-471B-8810-C40F074717E9’
nouvelles 'news:comp.emacs'
mailto 'mailto:adent@galaxy.net'
mhe 'mhe:folder' (lien vers le
dossier)
'mhe:folder#id' (lien du message)
rmail 'rmail:folder' (lien vers le
dossier) 'rmail:folder#id' (lien
vers le message)
gnus 'gnus:group' (lien vers le
groupe) 'gnus:group#id'
(lien vers l'article)
bbdb 'bbdb:R.*Stallman' (enregistrement
avec regexp) irc 'irc:/irc.com/#emacs/bob'
aide 'help:org-store-link'
info 'info:org#Liens externes'
shell 'shell:ls *.org'
elisp 'elisp :(find-file "Elisp.org")' (formulaire Elisp à
évaluer) 'elisp:org-agenda' (commande Elisp interactive)
En plus de ces types de liens intégrés, d'autres sont disponibles via le dépôt "org-
contrib" (voir Section 1.2 [Installation], page 2). Par exemple, ces liens vers les
messages VM ou Wanderlust sont disponibles lorsque vous chargez les bibliothèques
correspondantes à partir du dépôt 'org-contrib' :
vm:dossier Lien vers le dossier VM
5
Le comportement réel de la recherche dépend de la valeur de la variable org-link-search-must-
match- exact-headline. Si sa valeur est nulle, une recherche en texte flou est effectuée. Si la valeur
est t, seul le titre exact est recherché, en ignorant les espaces et les cookies statistiques. Si la valeur
Chapitre 4 : 71
Hyperliens
est query-to-create, un titre exact est recherché ; s'il n'est pas trouvé, l'utilisateur est invité à le créer.
Chapitre 4 : 72
Hyperliens

'vm:folder#id' Lien du message VM


'vm://myself@some.where.org/folder#id' VM sur la machine
distante 'vm-imap:account:folder' Lien du dossier VM
IMAP
'vm-imap:account:folder#id' Lien du message VM IMAP
'wl:folder'Lien du dossier Wanderlust
'wl:folder#id' Lien du message Wanderlust
Pour plus d'informations sur la personnalisation d'Org afin d'ajouter de nouveaux
types de liens, voir Section A.3 [Ajout de types d'hyperliens], page 265.
Un lien doit être placé entre doubles crochets et peut contenir un texte descriptif à
afficher à la place de l'URL (voir section 4.1 [Format du lien], page 38), par exemple :
[[https://www.gnu.org/software/emacs/][GNU Emacs]]
Si la description est un nom de fichier ou une URL qui pointe vers une image,
l'exportation HTML (voir Section 13.9 [Exportation HTML], page 160) intègre l'image
sous la forme d'un bouton cliquable. S'il n'y a pas de description du tout et que le lien
pointe vers une image, cette image est intégrée dans le fichier HTML exporté.
Org reconnaît également les liens externes au sein d'un texte normal et les active en tant
que liens. Si des espaces doivent faire partie du lien (par exemple dans
'bbdb:R.*Stallman'), ou si vous devez lever des ambiguïtés sur la fin du lien, mettez le
lien entre crochets ou entre parenthèses angulaires.

4.5 Liens de manutention


Org fournit des méthodes pour créer un lien dans la syntaxe correcte, pour l'insérer dans
un fichier Org et pour suivre le lien.
La fonction principale est org-store-link, appelée avec M-x org-store-link. En
raison de son importance, nous suggérons de la lier à une clé largement disponible (voir
Section 1.3 [Activation], page 3). Il stocke un lien vers l'emplacement actuel. Le lien est
stocké en vue d'une insertion ultérieure dans un tampon Org - voir ci-dessous. Le type
de lien créé dépend de la mémoire tampon actuelle :
Tampons du mode Org
Pour les fichiers Org, s'il y a un '<<target>>' au point, le lien pointe vers la
cible. Sinon, il pointe vers le titre actuel, qui est également la description.
Si le titre possède une propriété "CUSTOM_ID", stocker un lien vers cet
identifiant personnalisé. En outre ou alternativement, selon la valeur de org-
id-link-to-org-use- id, créer et/ou utiliser une propriété 'ID' globalement
unique pour le lien6 . Ainsi, l'utilisation de cette commande dans les tampons
Org crée potentiellement deux liens : un lien lisible par l'homme à partir de
l'ID personnalisé, et un lien qui est globalement unique et fonctionne même
si l'entrée est déplacée d'un fichier à l'autre. La propriété 'ID' peut être soit
un UUID (par défaut), soit un timestamp, en fonction de org-id-method.
Plus tard, lors de l'insertion du lien, vous devrez décider lequel utiliser.
Clients de messagerie et d'information : VM, Rmail, Wanderlust, MH-E, Gnus
Pratiquement tous les clients de messagerie Emacs sont pris en charge. Le
lien pointe vers l'article en cours, ou, dans certains tampons Gnus, vers le
groupe. La description est construite selon la variable org-link-email-
description-format. Par défaut, elle fait référence au destinataire et au
sujet.
6 La
bibliothèque Org Id doit d'abord être chargée, soit par org-customize, soit en activant id dans org-
Chapitre 4 : 73
Hyperliens
modules, soit en ajoutant '(require 'org-id)' dans votre fichier Emacs init.
Chapitre 4 : 74
Hyperliens

Navigateurs web : W3M et EWW


Ici, le lien est l'URL actuel, avec le titre de la page comme description.
Contacts : BBDB
Les liens créés dans une mémoire tampon BBDB pointent vers l'entrée actuelle.
Chat : IRC
Pour les liens IRC, si la variable org-irc-link-to-logs est non-nulle, créer
un lien de type 'file' vers le point pertinent dans les logs pour la
conversation en cours. Sinon, stocker un lien de type 'irc' vers
l'utilisateur/canal/serveur sous le point.
Autres fichiers Pour tout autre fichier, le lien pointe vers le fichier, avec une chaîne de
recherche (voir section 4.8 [Options de recherche], page 46) pointant vers le
contenu de la ligne actuelle. S'il existe une région active, les mots
sélectionnés constituent la base de la chaîne de recherche. Vous pouvez
écrire des fonctions Lisp personnalisées pour sélectionner la chaîne de
recherche et effectuer la recherche pour des types de fichiers particuliers
(voir Section 4.9 [Recherches personnalisées], page 47).
Vous pouvez également définir des liens dédiés vers d'autres fichiers. Voir
Section A.3 [Ajout de types d'hyperliens], page 265.
Vue de l'agenda
Lorsque le point se trouve dans une vue d'agenda, le lien créé pointe vers
l'entrée référencée par la ligne actuelle.
À partir d'un tampon Org, les commandes suivantes permettent de créer, de naviguer
ou, plus généralement, d'agir sur les liens.
C-c C-l (org-insert-link)
Insérer un lien7 . Ce message demande d'insérer un lien dans la mémoire
tampon. Vous pouvez simplement saisir un lien, en utilisant le texte d'un lien
interne ou l'un des préfixes de type de lien mentionnés dans les exemples ci-
dessus. Le lien est inséré dans la mémoire tampon, accompagné d'un texte
descriptif8 . Si un texte a été sélectionné à ce moment-là, il devient la
description par défaut.
Insertion de liens stockés
Tous les liens enregistrés au cours de la session actuelle font
partie de l'historique de cette invite, et vous pouvez donc y
accéder avec UP et DOWN (ou M-p, M-n).
Aide à l'achèvement
La complétion avec TAB vous aide à insérer des préfixes de
liens valides comme 'http' ou 'ftp', y compris les préfixes
définis par les abréviations de liens (voir Section 4.7
[Abréviations de liens], page 45). Si vous appuyez sur RET
après avoir inséré uniquement le préfixe, Org offre un support de
complétion spécifique pour certains types de liens9 . Par
exemple, si vous tapez f i l
7
Notez qu'il n'est pas nécessaire d'utiliser cette commande pour insérer un lien. Dans Org, les liens
sont du texte brut et vous pouvez les taper ou les coller directement dans la mémoire tampon. En
utilisant cette commande, les liens sont automatiquement placés entre doubles crochets et un texte
descriptif facultatif vous est demandé.
8
Après l'insertion d'un lien stocké, le lien sera supprimé de la liste des liens stockés. Pour le
Chapitre 4 : 75
Hyperliens

conserver dans la liste en vue d'une utilisation ultérieure, utilisez un argument de préfixe triple C-u à
C-c C-l, ou configurez l'option org-link-keep- stored-after-insertion.
9
Cela fonctionne si une fonction a été définie dans la propriété :complete d'un lien dans org-link-parameters.
Chapitre 4 : 76
Hyperliens

e RET - accès alternatif : C-u C-c C-l, voir ci-dessous-Org permet


de compléter les noms de fichiers, et après b b d b RET, vous
pouvez compléter les noms de contacts.
C-u C-c C-l
Lorsque C-c C-l est appelé avec un argument préfixe C-u, insérer un lien vers
un fichier. Vous pouvez utiliser la complétion du nom de fichier pour
sélectionner le nom du fichier. Le chemin d'accès au fichier est inséré par
rapport au répertoire du fichier Org actuel, si le fichier lié se trouve dans le
répertoire actuel ou dans un sous-répertoire de celui-ci, ou si le chemin
d'accès est écrit par rapport au répertoire actuel à l'aide de '../'. Sinon, un
chemin absolu est utilisé, si possible avec '~/' pour votre répertoire
personnel. Vous pouvez forcer un chemin absolu avec deux préfixes C-u.
C-c C-l (avec point sur liaison existante)
Lorsque le point se trouve sur un lien existant, C-c C-l vous permet de
modifier les parties lien et description du lien.
C-c C-o (org-open-at-point)
Ouvrir le lien au point. Cette commande lance un navigateur web pour l'URL
(en utilisant browse-url-at-point), lance VM/MH-
E/Wanderlust/Rmail/Gnus/BBDB pour les liens correspondants, et exécute
la commande dans un lien shell. Lorsque le point est sur un lien interne,
cette commande lance la recherche correspondante. Lorsque le point est sur
la partie tags d'un titre, il crée la vue tags correspondante (voir Section
11.3.3 [Correspondance entre les tags et les propriétés], page 115). Si le
point est sur un horodatage, il compile l'agenda pour cette date. En outre, il
visite les fichiers texte et les fichiers distants dans les liens "fichier" avec
Emacs et sélectionne une application appropriée pour les fichiers locaux non
textuels. La classification des fichiers est basée uniquement sur l'extension
du fichier. Voir l'option org-file-apps. Si vous souhaitez ignorer
l'application par défaut et visiter le fichier avec Emacs, utilisez un préfixe C-u.
Si vous voulez éviter l'ouverture dans Emacs, utilisez un préfixe C-u C-u.
Si le point se trouve sur un titre, mais pas sur un lien, proposer tous les liens
dans le titre et le texte d'entrée. Si vous souhaitez définir la configuration du
cadre pour les liens suivants, personnalisez org-link-frame-setup.
RET Lorsque l'option org-return-follows-link est activée, RET suit également le lien au point.
souris-2 ou souris-1
Sur les liens, les souris 1 et 2 ouvrent le lien comme le fait C-c C-o.
souris-3 Comme mouse-2, mais force les liens de fichiers à être ouverts avec Emacs,
et les liens internes à être affichés dans une autre fenêtre10 .
C-c % (org-mark-ring-push)
Pousser la position actuelle sur l'anneau de la marque Org, afin de pouvoir y
revenir facilement. Les commandes qui suivent un lien interne le font
automatiquement.
C-c & (org-mark-ring-goto)
Revenir à une position enregistrée. Une position est enregistrée par les
commandes qui suivent les liens internes et par C-c %. L'utilisation de cette
commande plusieurs fois en succession directe permet de se déplacer dans
un anneau de positions précédemment enregistrées.
Chapitre 4 : 77
Hyperliens
10
Voir la variable org-link-use-indirect-buffer-for-internals.
Chapitre 4 : 78
Hyperliens

C-c C-x C-n (org-next-link)


C-c C-x C-p (lien org-précédent)
Avancer/reculer jusqu'au lien suivant dans la mémoire tampon. À la limite de
la mémoire tampon, la recherche échoue une fois, puis recommence. Les
raccourcis clavier pour cette fonction sont vraiment trop longs ; vous voudrez
peut-être lier également cette fonction à M-n et M-p.
(with-eval-after-load 'org
(define-key org-mode-map (kbd "M-n") #'org-next-link)
(define-key org-mode-map (kbd "M-p") #'org-previous-
link))

4.6 Utilisation de liens en dehors d'Org


Vous pouvez insérer et suivre des liens qui ont la syntaxe Org non seulement dans Org,
mais aussi dans n'importe quel tampon Emacs. Pour cela, Org fournit deux fonctions :
org-insert-link-global et org-open-at- point-global.
Vous pourriez vouloir les lier à des clés disponibles globalement. Voir la section 1.3
[Activation], page 3 pour quelques conseils.

4.7 Abréviations des liens


Les URL longues peuvent être lourdes à taper, et il est souvent nécessaire d'avoir
plusieurs liens similaires dans un document. Pour cela, vous pouvez utiliser des
abréviations de liens. Un lien abrégé ressemble à ceci
[[linkword:tag][description]]
où la balise est facultative. Le mot-lien doit être un mot commençant par une lettre, suivie
de lettres, de chiffres, de "-" et de "_". Les abréviations sont résolues en fonction des
informations contenues dans la variable org-link-abbrev-alist qui relie les mots de
liaison au texte de remplacement. Voici un exemple :
(setq org-link-abbrev-alist
'(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
("Nu Html Checker" . "https://validator.w3.org/nu/?doc=%h")
("duckduckgo" . "https://duckduckgo.com/?q=%s")
("omap" .
"https://nominatim.openstreetmap.org/search?q=%s&polygon= ("ads" .
"https://ui.adsabs.harvard.edu/search/q=%20author%3A\"%s\
Si le texte de remplacement contient la chaîne '%s', il est remplacé par la balise.
L'utilisation de '%h' au lieu de '%s' encode la balise en pourcentage (voir l'exemple ci-
dessus, où nous devons encoder le paramètre URL). L'utilisation de '%(ma-fonction)'
transmet la balise à une fonction Lisp personnalisée, et la remplace par la chaîne
résultante.
Si le texte de remplacement ne contient pas de spécificateur, il est simplement ajouté
à la chaîne afin de créer le lien.
Au lieu d'une chaîne, vous pouvez également spécifier une fonction Lisp pour créer le
lien. Cette fonction sera appelée avec la balise comme seul argument.
Avec les paramètres ci-dessus, vous pourriez faire un lien vers un bogue spécifique
avec '[[bugzilla:129]]', rechercher 'OrgMode' sur le web avec
'[[duckduckgo:OrgMode]]', afficher la carte de localisation de la Free Software
Foundation '[[gmap:51 Franklin Street, Boston]]' ou du bureau de Carsten
Chapitre 4 : 79
Hyperliens
'[[omap:Science Park 904, Amsterdam, The Netherlands]]' et découvrir ce que
l'auteur d'Org fait en dehors du piratage d'Emacs avec '[[ads:Dominik,C]]]".
Chapitre 4 : 80
Hyperliens

Si vous avez besoin d'abréviations spéciales pour un seul tampon Org, vous pouvez
les définir dans le fichier à l'aide de la commande
#+LINK : bugzilla https://10.1.2.9/bugzilla/show_bug.cgi?id=
#+LINK : duckduckgo https://duckduckgo.com/?q=%s
#+LINK : "Nu Html Checker" https://validator.w3.org/nu/?doc=%h
Les abréviations contenant des espaces doivent être citées.
La complétion dans la mémoire tampon (voir Section 17.1 [Complétion], page 247)
peut être utilisée après "[" pour compléter les abréviations des liens. Vous pouvez
également définir une fonction Lisp qui implémente un support spécial (par exemple, la
complétion) pour l'insertion d'un tel lien avec C-c C-l. Une telle fonction ne doit
accepter aucun argument et doit renvoyer le lien complet avec un préfixe. Vous
pouvez définir la fonction de complétion de lien comme suit :
(org-link-set-parameter "type" :complete #'some-completion-function)

4.8 Options de recherche dans les liens de fichiers


Les liens de fichiers peuvent contenir des informations supplémentaires pour qu'Emacs
se rende à un endroit particulier du fichier lorsqu'il suit un lien. Il peut s'agir d'un numéro
de ligne ou d'une option de recherche après un double deux-points11 . Par exemple,
lorsque la commande org-store-link crée un lien (voir Section 4.5 [Manipuler les
liens], page 42) vers un fichier, elle encode les mots de la ligne courante comme
une chaîne de recherche qui peut être utilisée pour retrouver cette ligne plus tard en
suivant le lien avec C-c C-o.
Notez que toutes les options de recherche s'appliquent aux liens vers les pièces
jointes de la même manière qu'aux liens vers les fichiers.
Voici la syntaxe des différentes façons d'attacher une recherche à un lien de fichier,
ainsi que des explications pour chacune d'entre elles :
[[file:~/code/main.c::255]]
[[file:~/xx.org::Ma Cible]]
[[file:~/xx.org::*Ma Cible]]
[[file:~/xx.org::#ma-custom-
id]]] [[file:~/xx.org::#ma-
custom-id]]
[[file:~/xx.org::#ma-custom-id]]
[[file:~/xx.org::/regexp/]]
[[attachement:main.c::255]]
255' Sauter à la ligne
255. Ma cible
Recherchez la cible d'un lien "<<Ma cible>>" ou effectuez une recherche textuelle pour "ma
cible",
similaire à la recherche dans les liens internes, voir Section 4.2 [Liens
internes], page 39. Dans l'exportation HTML (voir Section 13.9 [Exportation
HTML], page 160), un tel lien de fichier devient une référence HTML à
l'ancre nommée correspondante dans le fichier lié.
Ma cible
Dans un fichier Org, limiter la recherche aux titres.
'#my-custom-id'
Chapitre 4 : 81
Hyperliens
Lien vers un titre avec une propriété "CUSTOM_ID
11
Pour des raisons de compatibilité ascendante, les numéros de ligne peuvent également être suivis d'un seul deux-points.
Chapitre 4 : 82
Hyperliens

'/REGEXP/'
Effectuer une recherche par expression régulière pour REGEXP (voir Section
17.9 [Expres- sions régulières], page 254). Ceci utilise la commande Emacs
occur pour lister toutes les correspondances dans une fenêtre séparée. Si le
fichier cible est en mode Org, org-occur est utilisé pour créer un arbre
clairsemé avec les correspondances.
Dans un cas dégénéré, un lien de fichier avec un nom de fichier vide peut être utilisé
pour effectuer une recherche dans le fichier actuel. Par exemple, '[[fichier:::me
trouver]]' effectue une recherche pour "me trouver" dans le fichier courant, tout
comme le ferait '[[me trouver]]'.

4.9 Recherches personnalisées


Le mécanisme par défaut pour créer des chaînes de recherche et pour effectuer la
recherche réelle liée à un lien de fichier peut ne pas fonctionner correctement dans tous
les cas. Par exemple, les fichiers de la base de données BibTEX comportent de
nombreuses entrées telles que year="1993" qui ne donneraient pas lieu à de bonnes
chaînes de recherche, car la seule identification unique d'une entrée BibTEX est la clé
de citation.
Si vous rencontrez un tel problème, vous pouvez écrire des fonctions personnalisées
pour définir la bonne chaîne de recherche pour un type de fichier particulier, et pour
effectuer la recherche de la chaîne dans le fichier. En utilisant add-hook, ces fonctions
doivent être ajoutées aux variables hook org-create- file-search-functions et
org-execute-file-search-functions. Voir la docstring de ces variables pour plus
d'informations. Org utilise actuellement ce mécanisme pour les fichiers de la base de
données BibTEX, et vous pouvez utiliser le code correspondant comme exemple
d'implémentation. Voir le fichier 'ol-bibtex.el'.
Chapitre 5 : Éléments à 83
mettre à l'ordre du jour

5 Articles TODO
Le mode Org ne gère pas les listes d'ODD comme des documents distincts1 . Au
contraire, les éléments TODO font partie intégrante du fichier de notes, car les éléments
TODO apparaissent généralement lors de la prise de notes ! Avec le mode Org, il suffit
de marquer n'importe quelle entrée d'une arborescence comme étant un élément
TODO. De cette façon, les informations ne sont pas dupliquées, et le contexte complet à
partir duquel l'élément TODO est apparu est toujours présent.
Bien entendu, cette technique de gestion des éléments TODO les disperse dans
votre fichier de notes. Le mode Org compense cela en fournissant des méthodes qui
vous donnent une vue d'ensemble de toutes les choses que vous avez à faire.

5.1 Fonctionnalité de base de l'ODD


Tout titre devient un élément TODO lorsqu'il commence par le mot "TODO", par exemple :
*** TODO Écrire une lettre à Sam Fortune
Les commandes les plus importantes pour travailler avec les entrées TODO sont les suivantes :
C-c C-t (org-todo)
Faire pivoter l'état TODO de l'élément en cours parmi
-> (non marqué) -> TODO -> DONE -
-. '-------------------------------------------------'
Si les mots-clés TODO ont des touches d'accès rapide (voir Section 5.2.4 [Accès
rapide aux états TODO], page 51), demander un mot-clé TODO à travers
l'interface de sélection rapide ; c'est le comportement par défaut quand org-
use-fast-todo-selection est non-nil.
Le même changement d'état peut également être effectué "à distance"
depuis la mémoire tampon de l'agenda à l'aide de la touche de commande t
(voir section 11.5 [Commandes de l'agenda], page 123).
S-DROITE S-GAUCHE
Sélectionne l'état TODO suivant/précédent, similaire au cycle. Utile surtout si
plus de deux états TODO sont possibles (voir Section 5.2 [Extensions TODO],
page 49). Voir aussi Section 17.14.2 [Conflits], page 257, pour une discussion
sur l'interaction avec la sélection de majuscules. Voir aussi la variable org-
treat-S-cursor- todo-selection-as-state-change.
C-c / t (org-show-todo-tree)
Voir les éléments TODO dans un arbre clairsemé (voir Section 2.5 [Arbres
clairsemés], page 11). Replie le tampon entier, mais montre tous les
éléments TODO - avec l'état not-DONE - et la hiérarchie des rubriques au-
dessus d'eux. Avec un argument préfixe, ou en utilisant C-c / T, rechercher
un ODD spécifique. On vous demande le mot-clé, et vous pouvez aussi
donner une liste de mots-clés comme 'KWD1|KWD2|...' pour lister les entrées
qui correspondent à n'importe lequel de ces mots-clés. Avec un préfixe
numérique N, afficher l'arbre pour le Nième mot-clé dans la variable org-
todo-keywords. Avec deux arguments préfixes, trouver tous les états
TODO, à la fois un-done et done.
1
Vous pouvez bien sûr créer un document qui ne contienne que de longues listes de points à traiter, mais
ce n'est pas nécessaire.
Chapitre 5 : Éléments à 84
mettre à l'ordre du jour

M-x org-agenda t (org-todo-list)


Afficher la liste globale des TODO. Rassemble les éléments TODO (avec les
états not-DONE) de tous les fichiers d'agenda (voir Chapitre 11 [Vues de
l'agenda], page 109) dans un seul tampon. Le nouveau tampon est en mode
Org Agenda, ce qui fournit des commandes pour examiner et manipuler les
entrées TODO du nouveau tampon (voir Section 11.5 [Commandes Agenda],
page 123). Voir Section 11.3.2 [Liste TODO globale], page 114, pour plus
d'informations.
S-M-RET (org-insert-todo-heading)
Insérer une nouvelle entrée TODO sous l'entrée actuelle.
Le changement d'état d'un TODO peut également déclencher des changements de balises. Voir la
docstring de l'option
org-todo-state-tags-triggers pour plus de détails.

5.2 Utilisation étendue des mots-clés TODO


Par défaut, les entrées marquées TODO ont l'un des deux états suivants : TODO et
DONE. Le mode Org vous permet de classer les éléments TODO de manière plus
complexe avec des mots-clés TODO (stockés dans org-todo-keywords). Avec une
configuration spéciale, le système de mots-clés TODO peut fonctionner différemment
selon les fichiers.
Notez que les balises sont un autre moyen de classer les titres en général et les
éléments TODO en particulier (voir Chapitre 6 [Balises], page 61).

5.2.1 Mots clés TODO en tant qu'états du flux de travail


Vous pouvez utiliser les mots-clés TODO pour indiquer différents états, éventuellement
séquentiels, dans le processus de travail sur un élément, par exemple2 :
(setq org-todo-keywords
'((séquence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED"))))
La barre verticale sépare les mots-clés TODO (états nécessitant une action) des états
DONE (qui ne nécessitent aucune action supplémentaire). Si vous ne fournissez pas la
barre de séparation, le dernier état est utilisé comme état DONE.
Avec cette configuration, la commande C-c C-t fait passer une entrée de "TODO" à
"FEEDBACK", puis à "VERIFY", et enfin à "DONE" et "DELEGATED". Vous pouvez également
utiliser un préfixe numérique pour sélectionner rapidement un état spécifique. Par
exemple, C-3 C-c C-t fait passer immédiatement l'état à "VERIFIER". Vous pouvez
également utiliser S-DROITE et S-GAUCHE pour avancer ou reculer dans les états. Si vous
définissez de nombreux mots-clés, vous pouvez utiliser l'achèvement dans la mémoire
tampon (voir Section 17.1 [Achèvement], page 247) ou un schéma spécial de sélection à une
touche (voir Section 5.2.4 [Accès rapide aux états TODO], page 51) pour insérer ces mots
dans la mémoire tampon. Le changement d'un état TODO peut être enregistré avec un
horodatage, voir Section 5.3.2 [Suivi des changements d'état TODO], page 53, pour plus
d'informations.

5.2.2 TODO mots-clés comme types


La deuxième possibilité consiste à utiliser les mots-clés TODO pour indiquer les
différents types d'actions. Par exemple, vous pouvez indiquer que les actions sont
destinées au "travail" ou à la "maison". Ou encore, lorsque vous travaillez avec plusieurs
personnes sur un même projet, vous pouvez assigner les actions suivantes
Chapitre 5 : Éléments à 85
mettre à l'ordre du jour
2 La
modification de la variable org-todo-keywords n'est effective qu'après le redémarrage du mode Org dans une mémoire
tampon.
Chapitre 5 : Éléments à 86
mettre à l'ordre du jour

directement à des personnes, en utilisant leurs noms comme mots-clés TODO. Ce type
de fonctionnalité est en fait bien mieux servi par l'utilisation de balises (voir Chapitre 6
[Balises], page 61), c'est pourquoi l'implémentation TODO est conservée uniquement
pour des raisons de compatibilité ascendante.
En utilisant les types d'ODD, il faudrait procéder de la manière suivante :
(setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE"))))
Dans ce cas, les différents mots-clés n'indiquent pas des états, mais plutôt des types
différents. Ainsi, le flux de travail normal consisterait à assigner une tâche à une
personne, puis à la marquer comme FAITE. Le mode Org prend en charge ce style en
adaptant le fonctionnement de la commande C-c C-t3 . Lorsqu'elle est utilisée plusieurs
fois de suite, elle passe toujours en revue tous les noms, afin de sélectionner d'abord le
bon type de personne pour une tâche. Mais lorsque vous revenez à l'élément après un
certain temps et que vous exécutez à nouveau la commande C-c C-t, elle passe
directement de n'importe quel nom à "FAIT". Utilisez les arguments préfixes ou la
complétion pour sélectionner rapidement un nom spécifique. Vous pouvez également
passer en revue les éléments d'un type d'ODD spécifique dans un arbre clairsemé en
utilisant un préfixe numérique à C-c / t. Par exemple, pour voir toutes les choses que
Lucy doit faire, vous utiliserez C-3 C-c / t. Pour rassembler les éléments de Lucy de tous
les fichiers d'agenda dans un seul tampon, vous utiliserez également l'argument du
préfixe numérique lors de la création de la liste globale d'ODD : C-3 M-x org-agenda t.

5.2.3 Plusieurs séries de mots-clés dans un seul fichier


Il peut arriver que vous souhaitiez utiliser différents ensembles de mots-clés TODO en
parallèle. Par exemple, vous voudrez peut-être disposer des mots-clés TODO/DONE de
base, mais aussi d'un flux de travail pour la correction des bogues, et d'un état distinct
indiquant qu'un élément a été annulé - il n'est donc pas DONE, mais ne nécessite pas
non plus d'action. Votre configuration ressemblerait alors à ceci :
(setq org-todo-keywords
'((séquence "TODO" "|" "DONE"))
(séquence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
(séquence "|" "ANNULÉ")))
Les mots-clés doivent tous être différents, ce qui permet au mode Org de savoir
quelle sous-séquence doit être utilisée pour une entrée donnée. Dans cette
configuration, C-c C-t n'opère qu'à l'intérieur d'une sous-séquence, il passe donc de
"DONE" à (rien) à "TODO", et de "FIXED" à (rien) à "REPORT". Vous avez donc besoin d'un
mécanisme pour sélectionner initialement la séquence correcte. Outre la saisie d'un mot-
clé ou l'utilisation de la complétion (voir Section 17.1 [Complétion], page 247), vous
pouvez également appliquer les commandes suivantes :
C-u C-u C-c C-t
C-S-RIGHT
C-S-GAUCHE Ces touches permettent de passer d'une sous-séquence TODO à la
suivante. Dans l'exemple ci-dessus, C-u C-u C-c C-t ou C-S-RIGHT passerait
de 'TODO' ou 'DONE' à 'REPORT', et de n'importe quel mot de la deuxième
ligne à 'CANCELED'. Notez que la liaison de la touche C-S- entre en conflit avec
la sélection par majuscule (voir Section 17.14.2 [Conflits], page 257).
S-DROITE
S-LEFTS-LEFT et S-RIGHT parcourent tous les mots-clés de toutes les sous-
séquences. Ainsi, S-RIGHT passerait de "DONE" à "REPORT" dans l'exemple ci-
Chapitre 5 : Éléments à 87
mettre à l'ordre du jour
dessus.

3
Il en va de même pour la commande t dans la mémoire tampon de l'agenda.
Chapitre 5 : Éléments à 88
mettre à l'ordre du jour

Pour une discussion sur l'interaction avec la sélection par déplacement, voir la
section 17.14.2 [Con- flicts], page 257.

5.2.4 Accès rapide aux états TODO


Si vous souhaitez changer rapidement une entrée dans un état TODO arbitraire au lieu
de parcourir les états, vous pouvez configurer des clés pour accéder aux états à l'aide
d'une seule lettre. Pour ce faire, ajoutez le caractère de sélection après chaque mot-clé,
entre parenthèses4 . Par exemple :
(setq org-todo-keywords
'((séquence "TODO(t)" "|" "DONE(d)")
(séquence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
(séquence "|" "ANNULÉ(c)")))
Si vous appuyez ensuite sur C-c C-t puis sur la touche de sélection, l'entrée passe
dans cet état. SPC peut être utilisé pour supprimer tout mot-clé TODO d'une entrée5 .

5.2.5 Définition de mots-clés pour des fichiers individuels


Il peut être très utile d'utiliser différents aspects du mécanisme TODO dans différents
fichiers. Pour les paramètres locaux au fichier, vous devez ajouter des lignes spéciales
au fichier qui définissent les mots-clés et l'interprétation pour ce fichier uniquement. Par
exemple, pour définir l'un des deux exemples discutés ci-dessus, vous avez besoin de
l'une des lignes suivantes, commençant dans la colonne zéro, n'importe où dans le
fichier :
#+TODO : TODO FEEDBACK VERIFY | DONE CANCELED
Vous pouvez également écrire "#+SEQ_TODO" pour être explicite sur l'interprétation,
mais cela signifie la même chose que "#+TODO", ou "#+TODO" pour être explicite sur
l'interprétation.
#+TYP_TODO : Fred Sara Lucy Mike | DONE
Une configuration permettant d'utiliser plusieurs ensembles en parallèle serait la suivante :
#+TODO : TODO(t) | DONE(d)
#+TODO : REPORT(r) BUG(b) KNOWNCAUSE(k) |
FIXED(f) #+TODO : | ANNULÉ(c)
Pour vous assurer que vous utilisez le bon mot-clé, tapez '#+' dans la mémoire tampon et utilisez ensuite
M-TAB pour la compléter (voir Section 17.1 [Complétion], page 247).
Rappelez-vous que les mots-clés après la barre verticale - ou le dernier mot-clé s'il
n'y a pas de barre - doivent toujours signifier que l'élément est FAIT, même si vous
pouvez utiliser un mot différent. Après avoir modifié l'une de ces lignes, utilisez C-c C-c
avec le point toujours dans la ligne pour faire connaître les changements au mode Org6 .

5.2.6 Mots clés de Faces for TODO


Le mode Org met en évidence les mots-clés TODO avec des visages spéciaux : org-todo
pour les mots-clés indiquant qu'un élément doit encore être traité, et org-done pour les
mots-clés indiquant qu'un élément est terminé. Si vous utilisez plus de deux états
différents, vous pouvez utiliser des faces spéciales pour les mots-clés TODO.
4
Tous les caractères sont autorisés sauf '@', '^' et '!', qui ont une signification particulière ici.
5
Vérifiez aussi la variable org-fast-tag-selection-include-todo, elle vous permet de changer l'état
TODO à travers l'interface des balises (voir Section 6.2 [Définition des balises], page 61), au cas où
vous aimeriez mélanger les deux concepts. Notez que cela signifie que vous devez trouver des clés
uniques pour les deux ensembles de mots-clés.
Chapitre 5 : Éléments à 89
mettre
6 Le à l'ordre
mode du jources lignes uniquement lorsque le mode Org est activé après avoir visité un
Org analyse
fichier. C-c C-c avec un point dans une ligne commençant par '#+' est simplement un redémarrage du
mode Org pour le tampon actuel.
Chapitre 5 : Éléments à 90
mettre à l'ordre du jour

pour certains d'entre eux. Cela peut être fait en utilisant la variable org-todo-keyword-
faces. Par exemple :
(setq org-todo-keyword-faces
'(("TODO" . org-warning) ("STARTED" . "yellow")
("CANCELED" . (:foreground "blue" :weight bold))))
L'utilisation d'une liste avec les propriétés de la face, comme indiqué pour "ANNULÉ",
devrait fonctionner, mais cela ne semble pas toujours être le cas. Si nécessaire,
définissez une face spéciale et utilisez-la. Une chaîne de caractères est interprétée
comme une couleur. La variable org-faces-easy-properties détermine si cette
couleur est interprétée comme une couleur d'avant-plan ou d'arrière-plan.

5.2.7 Dépendances TODO


La structure des fichiers Org - hiérarchie et listes - facilite la définition des dépendances
TODO. En général, une tâche TODO parentale ne doit pas être marquée comme
terminée tant que toutes les sous-tâches TODO, ou tâches enfants, n'ont pas été
marquées comme terminées. Parfois, il existe une séquence logique entre les (sous-
)tâches, de sorte qu'une sous-tâche ne peut pas être exécutée avant que tous les frères et
sœurs au-dessus d'elle n'aient été marqués comme faits. Si vous personnalisez la variable
org-enforce-todo-dependencies, Org empêche les entrées de passer à l'état DONE si
elles ont des enfants TODO qui ne sont pas DONE. De plus, si une entrée a une
propriété 'ORDERED', chacun de ses enfants TODO est bloqué jusqu'à ce que tous les
frères et sœurs précédents soient marqués comme faits. Voici un exemple :
* TODO Bloqué jusqu'à ce que (deux) soit fait
** FAIT un
** TODO deux

* Parent
:PROPRIÉTÉS :
:ORDONNÉ : t
:FIN :
** TODO a
** TODO b, doit attendre (a)
** TODO c, doit attendre (a) et (b)
Vous pouvez vous assurer qu'une entrée n'est jamais bloquée en utilisant la propriété
"NOBLOCKING" (voir chapitre 7 [Propriétés et colonnes], page 67) :
* Cette entrée n'est jamais bloquée
:PROPRIÉTÉS :
:NOBLOCKING : t
:FIN :
C-c C-x o (org-toggle-ordered-property)
Bascule la propriété 'ORDERED' de l'entrée courante. Une propriété est utilisée
pour ce comportement parce que cela devrait être local à l'entrée courante,
et non hérité des entrées supérieures comme une balise (voir Chapitre 6
[Balises], page 61). Cependant, si vous souhaitez suivre la valeur de cette
propriété avec une balise pour une meilleure visibilité, personnalisez la
variable org-track-ordered-property-with-tag.
C-u C-u C-u C-c C-t
Modifier l'état TODO, indépendamment de tout blocage d'état.
Chapitre 5 : Éléments à 91
mettre à l'ordre du jour

Si vous définissez la variable org-agenda-dim-blocked-tasks, les entrées TODO


qui ne peuvent pas être marquées comme faites à cause d'enfants non marqués sont
affichées dans une police atténuée ou même rendues invisibles dans les vues de
l'agenda (voir Chapitre 11 [Vues de l'agenda], page 109).
Vous pouvez également bloquer les changements d'états TODO en utilisant des cases à
cocher (voir Section 5.6 [Cases à cocher], page 58). Si vous définissez la variable org-
enforce-todo-checkbox-dependencies, une entrée dont les cases à cocher ne sont
pas cochées ne pourra pas passer à l'état DONE.
Si vous avez besoin de structures de dépendances plus complexes, par exemple des
dépendances entre des entrées situées dans des arbres ou des fichiers différents,
consultez le module "org-depend.el" dans le dépôt "org-contrib".

5.3 Enregistrement des progrès


Pour enregistrer un horodatage et une note lors du changement d'état d'un TODO, appelez la commande
org-todo avec un argument préfixe.
C-u C-c C-t (org-todo)
Demander une note et enregistrer l'heure du changement d'état TODO. La
note est insérée dans une liste sous l'en-tête, mais peut également être
placée dans un tiroir, voir Section 5.3.2 [Suivi des changements d'état de
l'ODD], page 53.
Si vous souhaitez être plus systématique, le mode Org peut enregistrer
automatiquement un horodatage et éventuellement une note lorsque vous marquez un
élément TODO comme DONE, ou même à chaque fois que vous changez l'état d'un
élément TODO. Ce système est hautement configurable, les réglages peuvent se faire
par mot-clé et peuvent être localisés à un fichier ou même à une sous-arborescence.
Pour plus d'informations sur la façon de chronométrer le temps de travail d'une tâche,
voir Section 8.4 [Chronométrer le temps de travail], page 84.

5.3.1 Postes de clôture


L'enregistrement automatique le plus élémentaire consiste à garder une trace de la date à
laquelle un certain élément TODO a été marqué comme étant terminé. Ceci peut être
réalisé avec7
(setq org-log-done 'time)
Ensuite, chaque fois qu'une entrée passe d'un état TODO (non fait) à l'un des états
DONE, une ligne "CLOSED : [timestamp]" est insérée juste après le titre. Si l'entrée
redevient un élément TODO par le biais d'un nouveau cycle d'état, cette ligne est à
nouveau supprimée. Si vous retournez l'entrée dans un état non TODO (en
appuyant sur C-c C-t SPC par exemple), cette ligne est également supprimée, à moins
que vous ne mettiez org-closed-keep-when-no-todo à non-nil. Si vous voulez
enregistrer une note en même temps que l'horodatage, utilisez8
(setq org-log-done 'note)
Vous êtes alors invité à rédiger une note, qui est stockée sous l'entrée avec un titre
"Note de clôture".

5.3.2 Suivi des changements d'état TODO


Il se peut que vous souhaitiez garder une trace automatique du moment où un
changement d'état s'est produit et éventuellement prendre note de ce changement.
Chapitre 5 : Éléments à 92
mettrepouvez
Vous à l'ordre du jour soit un simple horodatage, soit un message de type
enregistrer
7
Le paramètre correspondant dans la mémoire tampon est : "#+STARTUP : logdone".
8
Le paramètre correspondant dans la mémoire tampon est : '#+STARTUP : lognotedone'.
Chapitre 5 : Éléments à 93
mettre à l'ordre du jour

Note : Ces enregistrements sont insérés après le titre sous forme de liste détaillée, le
plus récent en premier. Ces enregistrements sont insérés après le titre sous la forme
d'une liste détaillée, le plus récent étant le premier9 . Lorsque l'on prend beaucoup de
notes, on peut vouloir les mettre à l'abri dans un tiroir (voir Section 2.7 [Tiroirs], page
15). Personnalisez la variable org-log-into-drawer pour obtenir ce comportement - le
tiroir recommandé est appelé 'LOGBOOK'10 . Vous pouvez également annuler le réglage
de cette variable pour une sous-arborescence en définissant une propriété
'LOG_INTO_DRAWER'.
Comme il est normalement trop long d'enregistrer une note pour chaque état, le
mode Org prévoit une configuration par mot-clé. Pour ce faire, on ajoute des marqueurs
spéciaux '!' (pour un horodatage) ou '@' (pour une note avec horodatage) entre
parenthèses après chaque mot-clé. Par exemple, avec le paramètre
(setq org-todo-keywords
'((séquence "TODO(t)" "WAIT(w@/ !)" "|" "DONE(d !)" "ANNULÉ(c@)")))
Vous définissez non seulement des mots-clés TODO globaux et des touches d'accès
rapide, mais vous demandez également qu'une heure soit enregistrée lorsque l'entrée est
réglée sur 'DONE', et qu'une note soit enregistrée lorsque vous passez à 'WAIT' ou
'CANCELED'11 . Le paramètre pour "ATTENTE" est encore plus spécial : le " !" après la
barre oblique signifie qu'en plus de la note prise lors de l'entrée dans l'état, un
horodatage doit être enregistré lors de la sortie de l'état "ATTENTE", si et seulement si
l'état cible ne configure pas la journalisation pour l'entrée dans l'état. Cela n'a donc
aucun effet lorsque l'on passe de l'état "ATTENTE" à l'état "TERMINÉ", car l'état "TERMINÉ"
est configuré pour enregistrer uniquement un horodatage. Mais lorsque l'on repasse de
'WAIT' à 'TODO', le '/!' dans le paramètre 'WAIT' déclenche maintenant un horodatage
même si 'TODO' n'est pas configuré pour l'enregistrement.
Vous pouvez utiliser exactement la même syntaxe pour définir les préférences de journalisation locales à
un tampon :
#+TODO : TODO(t) WAIT(w@/ !) | DONE(d !) CANCELED(c@)
Pour enregistrer un horodatage sans note pour les mots-clés TODO configurés avec '@', il suffit de taper
C-c C-c pour saisir une note en blanc lorsqu'on vous le demande.
Pour définir des paramètres de journalisation propres à un sous-arbre ou à un
élément unique, définissez une propriété "LOGGING" dans cette entrée. Toute propriété
'LOGGING' non vide réinitialise tous les paramètres de journalisation à zéro. Vous pouvez
ensuite activer la journalisation pour cet arbre spécifique en utilisant des mots-clés
'STARTUP' comme 'lognotedone' ou 'logrepeat', ainsi qu'en ajoutant des paramètres
spécifiques à l'état comme 'TODO( !)'. Par exemple :
* TODO Enregistrer chaque état avec seulement un temps
:PROPRIÉTÉS :
:LOGGING : TODO( !) WAIT( !) DONE( !) CANCELED( !)
:FIN :
* TODO Enregistrer uniquement lorsque l'on passe en attente, et lorsque l'on répète.
:PROPRIÉTÉS :
:LOGGING : WAIT(@) logrepeat
:FIN :
* TODO Pas de journalisation du tout
:PROPRIÉTÉS :
9
Voir la variable org-log-states-order-reversed.
10
Notez que le tiroir "LOGBOOK" est déplié lorsque vous appuyez sur SPC dans l'agenda pour afficher
une entrée - utilisez C-u SPC pour le maintenir plié ici.
Chapitre 5 : Éléments à 94
mettre
11 à l'ordreque
Il est possible dulejour
mode Org enregistre deux horodatages lorsque vous utilisez à la fois org-log-done
et l'enregistrement des changements d'état. Cependant, il ne demande jamais deux notes : si vous avez
configuré les deux, la note d'enregistrement de changement d'état est prioritaire et annule la note de
clôture.
Chapitre 5 : Éléments à 95
mettre à l'ordre du jour

:LOGGING : nil
:FIN :

5.3.3 Suivre ses habitudes


Org a la capacité de suivre la cohérence d'une catégorie spéciale d'ODD, appelée
"habitudes". Pour utiliser les habitudes, vous devez activer le module des habitudes en
personnalisant la variable org-modules.
Une habitude a les propriétés suivantes :
1. L'habitude est un élément TODO, le mot-clé TODO représentant un état ouvert.
2. La propriété "STYLE" prend la valeur "habit" (voir chapitre 7 [Propriétés et
colonnes], page 67).
3. L'ODD comporte une date prévue, généralement assortie d'un intervalle de
répétition de type ".+". Le style "++" peut convenir à des habitudes soumises à des
contraintes temporelles, par exemple les tâches à effectuer le week-end, ou le style
"+" à une habitude inhabituelle susceptible d'avoir un arriéré, par exemple les
rapports hebdomadaires.
4. Le TODO peut également comporter des plages minimales et maximales en utilisant la
syntaxe '.+2d/3d', qui indique que vous souhaitez effectuer la tâche au moins tous
les trois jours, mais au plus tous les deux jours.
5. L'enregistrement de l'état DONE est activé (voir Section 5.3.2 [Suivi des
changements d'état TODO], page 53), afin que les données historiques soient
représentées dans le graphe de cohérence. Si elle n'est pas activée, ce n'est pas
une erreur, mais les graphes de cohérence sont largement dépourvus de sens.
Pour vous donner une idée de l'application des règles susmentionnées, voici une
habitude réelle avec un peu d'histoire :
** TODO Rasage
HORAIRE : <2009-10-17 sam .+2j/4j>
:PROPRIÉTÉS :
:STYLE : habit
:LAST_REPEAT : [2009-10-19 Mon
00:36]
:FIN :
- Déclarer "FAIT" à partir de [2009-10-15 Thu]
"TODO"
- Déclarer "FAIT" à partir de [2009-10-12 Mon]
"TODO"
- Déclarer "FAIT" à partir de [2009-10-10 Sat]
"TODO"
- Déclarer "FAIT" au lieu de [2009-10-04 Sole
"TODO" il]
- Déclarer "FAIT" à partir de [2009-10-02 Fri]
"TODO"
- Déclarer "FAIT" à partir de [2009-09-29 Tue]
"TODO"
- Déclarer "FAIT" à partir de [2009-09-25 Fri]
"TODO"
- Déclarer "FAIT" au lieu de [2009-09-19 Sat]
"TODO"
- Déclarer "FAIT" à partir de [2009-09-16 Wed]
"TODO"
Chapitre 5 : Éléments à 96
mettre à l'ordre du jour "FAIT"
- Déclarer à partir de [2009-09-12 Sat]
"TODO"
Cette habitude dit ceci : Je veux me raser au maximum tous les 2 jours - d'après la
date et l'intervalle de répétition 'programmé' - et au minimum tous les 4 jours. Si nous
sommes aujourd'hui le 15, l'habitude apparaît pour la première fois dans l'agenda (voir
Chapitre 11 [Vues de l'agenda], page 109) le 17 octobre, après que le minimum de 2 jours
se soit écoulé, et apparaîtra en retard le 19 octobre, après que quatre jours se soient
écoulés.
Chapitre 5 : Éléments à 97
mettre à l'ordre du jour

Ce qui est vraiment utile avec les habitudes, c'est qu'elles sont affichées avec un
graphique de cohérence, pour montrer à quel point vous avez été régulier dans
l'accomplissement de cette tâche dans le passé. Ce graphique montre chaque jour où la
tâche a été effectuée au cours des trois dernières semaines, avec des couleurs pour
chaque jour. Les couleurs utilisées sont les suivantes :
BleuSi la tâche ne devait pas encore être effectuée ce
jour-là. Vert Si la tâche aurait pu être effectuée ce jour-là.
JauneSi la tâche devait être en retard le jour
suivant. RougeSi la tâche était en retard ce jour-là.
Outre la coloration de chaque jour, celui-ci est également marqué d'un astérisque si
la tâche a été effectuée ce jour-là, et d'un point d'exclamation pour indiquer où se situe
le jour en cours dans le graphique.
Plusieurs variables de configuration peuvent être utilisées pour modifier la manière
dont les habitudes sont affichées dans l'agenda.
org-habit-graph-column
La colonne tampon à partir de laquelle le graphique de cohérence doit être
dessiné. Ce paramètre écrase tout texte contenu dans cette colonne, c'est
pourquoi il est préférable que les titres de vos habitudes soient brefs et
précis.
org-habit-preceding-days
La quantité d'histoire, en jours avant aujourd'hui, à faire apparaître dans les graphiques de
cohérence.
org-habit-following-days
Le nombre de jours après aujourd'hui qui apparaissent dans les graphiques de cohérence.
org-habit-show-habits-only-for-today
Si elle est non nulle, les habitudes ne sont affichées que dans la vue de
l'agenda du jour. La valeur par défaut est t. Appuyer sur C-u K dans l'agenda
fait basculer cette variable.
Enfin, en appuyant sur K dans la mémoire tampon de l'agenda, les habitudes sont
temporairement désactivées et n'apparaissent pas du tout. Appuyez à nouveau sur K
pour les faire réapparaître. Elles sont également soumises au filtrage des balises, si
vous avez des habitudes qui ne doivent être faites que dans certains contextes, par
exemple.

5.4 Priorités
Si vous utilisez le mode Org de manière intensive, vous pouvez vous retrouver avec
suffisamment d'éléments TODO pour qu'il soit judicieux de les classer par ordre de
priorité. L'établissement d'un ordre de priorité peut se faire en plaçant un témoin de
priorité dans le titre d'un élément TODO, juste après le mot-clé TODO, comme ceci :
*** TODO [#A] Écrire une lettre à Sam Fortune
Par défaut, le mode Org prend en charge trois priorités : 'A', 'B' et 'C'. A" est la priorité
la plus élevée. Une entrée sans cookie est considérée comme équivalente si elle avait la
priorité 'B'. Les priorités ne font une différence que pour le tri dans l'agenda (voir Section
11.3.1 [Agenda hebdomadaire/quotidien], page 111). En dehors de l'agenda, elles n'ont
Chapitre 5 : Éléments à 98
mettre
pas deà signification
l'ordre du jour
inhérente au mode Org. Les cookies sont affichés avec la face
définie par la variable org-priority-faces, qui peut être personnalisée.
Vous pouvez également utiliser des valeurs numériques pour les priorités, telles que
Chapitre 5 : Éléments à 99
mettre à l'ordre du jour

*** TODO [#1] Écrire une lettre à Sam Fortune


Lorsque vous utilisez des priorités numériques, vous devez définir org-priority-
highest, org-priority- lowest et org-priority-default sur des nombres entiers,
qui doivent tous être strictement inférieurs à 65.
Les priorités peuvent être attachées à n'importe quel nœud du schéma ; il ne doit pas nécessairement
s'agir d'éléments d'ODD.
C-c , (org-priorité)
Définit la priorité du titre en cours. La commande demande un caractère de
priorité 'A', 'B' ou 'C'. Si vous appuyez sur SPC, le témoin de priorité, s'il existe,
est supprimé du titre. Les priorités peuvent également être modifiées "à
chaud" à partir du tampon d'agenda avec la commande , (voir Section 11.5
[Commandes d'agenda], page 123).
S-UP (org-priority-up)
S-DOWN (org-priority-down)
Augmenter/diminuer la priorité de la ligne de titre en cours12 . Notez que ces
touches sont également utilisées pour modifier les horodatages (voir Section
8.2 [Création d'horodatages], page 77). Voir aussi Section 17.14.2 [Conflits],
page 257, pour une discussion sur l'interaction avec la sélection par
majuscule.
Vous pouvez modifier l'éventail des priorités autorisées en définissant les variables
org-priority- highest, org-priority-lowest et org-priority-default. Pour un
tampon individuel, vous pouvez définir ces valeurs (la plus élevée, la plus basse, par
défaut) comme suit (veillez à ce que la priorité la plus élevée soit plus précoce dans
l'alphabet que la priorité la plus basse) :
#+PRIORITÉS : A C B
Ou en utilisant des valeurs numériques :
#+PRIORITÉS : 1 10 5

5.5 Décomposer les tâches en sous-tâches


Il est souvent conseillé de diviser les tâches importantes en sous-tâches plus petites et
plus faciles à gérer. Vous pouvez le faire en créant une arborescence sous un élément
TODO, avec des sous-tâches détaillées sur l'arborescence13 . Pour garder une vue
d'ensemble de la fraction des sous-tâches qui ont déjà été marquées comme
accomplies, insérez "[/]" ou "[%]" n'importe où dans le titre. Ces cookies sont mis à jour
à chaque fois que le statut TODO d'un enfant change, ou en appuyant sur C-c C-c sur le
cookie. Par exemple :
* Organiser une fête [33%]
** TODO Appeler les gens [1/2]
*** TODO Peter
*** FAIT Sarah
** TODO Acheter de la nourriture
** FAIT Parler au voisin
Si un titre a des cases à cocher et des enfants TODO sous lui, la signification du
cookie de statistiques devient ambiguë. Définissez la propriété "COOKIE_DATA" à
"checkbox" ou "todo" pour résoudre ce problème.
Chapitre 5 : Éléments à 10
mettre
12 à l'ordre du jour
Voir aussi l'option org-priority-start-cycle-with-default.
0
13
Pour empêcher les sous-tâches de figurer dans la liste TODO globale, voir l'option org-agenda-todo-list-sublevels.
Chapitre 5 : Éléments à 10
mettre à l'ordre du jour 1

Si vous souhaitez que le cookie de statistiques compte toutes les entrées TODO de la
sous-arborescence (et pas seulement les enfants directs), configurez la variable org-
hierarchical-todo-statistics. Pour faire cela pour un seul sous-arbre, incluez le
mot "recursive" dans la valeur de la propriété "COOKIE_DATA".
* Statistiques de capture des parents [2/20]
:PROPRIÉTÉS :
:COOKIE_DATA : todo recursive
:FIN :
Si vous souhaitez qu'une entrée TODO passe automatiquement à DONE lorsque
tous les enfants sont terminés, vous pouvez utiliser la configuration suivante :
(defun org-summary-todo (n-done n-not-done)
"Passer l'entrée à DONE lorsque toutes les sous-entrées sont
terminées, à TODOdans le cas contraire."(let (org-log-done org-log-
states) désactiver la journalisation
(org-todo (if (= n-not-done 0) "DONE" "TODO"))))

(add-hook 'org-after-todo-statistics-hook #'org-summary-todo)


Une autre possibilité consiste à utiliser des cases à cocher pour identifier (une
hiérarchie) un grand nombre de sous-tâches (voir Section 5.6 [Cases à cocher], page 58).

5.6 Cases à cocher


Chaque élément d'une liste simple14 (voir Section 2.6 [Listes simples], page 12) peut être
transformé en case à cocher en le faisant commencer par la chaîne de caractères "[ ]".
Cette fonctionnalité est similaire aux éléments TODO (voir Chapitre 5 [Éléments TODO],
page 48), mais elle est plus légère. Les cases à cocher ne sont pas incluses dans la
liste globale des tâches à accomplir, elles sont donc souvent très utiles pour diviser une
tâche en plusieurs étapes simples. Vous pouvez également les utiliser dans une liste de
courses.
Voici un exemple de liste de cases à cocher.
* TODO Organiser une fête [2/4]
- [-] appeler des personnes [1/3]
- [Peter
- [X] Sarah
- [Sam
- [X] commander de la nourriture
- [ ] réfléchir à la musique à jouer
- [X] parler aux voisins
Les cases à cocher fonctionnent de manière hiérarchique. Ainsi, si une case à cocher a
des enfants qui sont des cases à cocher, le fait d'activer l'une des cases à cocher des
enfants fait apparaître la case à cocher du parent si aucune, certaines ou toutes les cases à
cocher des enfants sont activées.
Les "[2/4]" et "[1/3]" de la première et de la deuxième ligne sont des témoins
indiquant le nombre de cases à cocher présentes dans cette entrée qui ont été cochées,
ainsi que le nombre total de cases à cocher présentes. Cela peut vous donner une idée du
nombre de cases à cocher restantes, même sans ouvrir une entrée pliée. Les cookies
peuvent être placés dans un titre ou dans (la première ligne d') un élément de liste
simple. Chaque cookie couvre les cases à cocher des enfants directs qui se trouvent
structurellement sous le titre ou l'élément.
Chapitre 5 : Éléments à 10
mettre
14 à l'ordre
À l'exception dulistes
des jourde description. Mais vous pouvez l'autoriser en modifiant org-list-automatic-rules
2
en conséquence.
Chapitre 5 : Éléments à 10
mettre à l'ordre du jour 3

sur lequel le cookie apparaît15 . Vous devez insérer le cookie vous-même en tapant soit
"[/]", soit "[%]". Avec "[/]", vous obtenez un résultat "n sur m", comme dans les
exemples ci-dessus. Avec "[%]", vous obtenez des informations sur le pourcentage de
cases cochées (dans l'exemple ci-dessus, il s'agirait respectivement de "[50 %]" et de
"[33 %]"). Dans un titre, un cookie peut compter les cases à cocher sous le titre ou les
états TODO des enfants, et il affiche ce qui a été modifié en dernier. Pour résoudre ce
problème, définissez la propriété "COOKIE_DATA" sur "checkbox" ou "todo".
Si le nœud de contour actuel possède une propriété "ORDERED", les cases à cocher
doivent être cochées dans l'ordre et une erreur est générée si vous essayez de cocher
une case alors qu'il y a des cases non cochées au-dessus d'elle.
Les commandes suivantes fonctionnent avec les cases à cocher :
C-c C-c (org-toggle-checkbox)
Basculer l'état d'une case à cocher ou - avec un argument préfixe - présence
d'une case à cocher à un point. Avec un argument préfixe simple, ajoutez une
case à cocher vide ou supprimez la case à cocher actuelle16 . Avec un
double argument préfixe, le mettre à '[-]', ce qui est considéré comme un
état intermédiaire.
C-c C-x C-b (org-toggle-checkbox)
Basculer l'état de la case à cocher ou - avec un argument préfixe - la présence
de la case à cocher au point. Si l'argument préfixe est double, il prend la
valeur '[-]', qui est considérée comme un état intermédiaire.
• S'il existe une région active, la première case à cocher de la région est
activée et toutes les autres cases ont le même statut que la première.
Avec un argument préfixe, ajouter ou supprimer la case à cocher pour
tous les éléments de la région.
• Si le point se trouve dans un titre, faire basculer les cases à cocher dans
la région située entre cette ligne de tête et la suivante, et non dans
l'ensemble du sous-arbre.
• S'il n'y a pas de région active, il suffit de cocher la case au point.
C-c C-x C-r (org-toggle-radio-button)
Basculer le statut de la case à cocher en utilisant la case à cocher de
l'élément en question comme un bouton radio : lorsque la case à cocher est
activée, toutes les autres cases à cocher du même niveau sont désactivées.
Avec un argument de préfixe universel, basculer la présence de la case à
cocher. Si le préfixe est double, il prend la valeur '[-]'.
C-c On peut demander à C-c de considérer les cases à cocher comme
des boutons radio en plaçant '#+ATTR_ORG : :radio t' juste avant la
liste ou en appelant M-x org-list-checkbox-radio-mode pour activer ce mode
mineur.
M-S-RET (org-insert-todo-heading)
Insérer un nouvel élément avec une case à cocher. Cela ne fonctionne que
si le point se trouve déjà dans un élément de liste simple (voir la section 2.6
[Listes simples], page 12).
C-c C-x o (org-toggle-ordered-property)
Fait basculer la propriété "ORDERED" de l'entrée, pour indiquer si les cases à
cocher doivent être cochées dans l'ordre. Une propriété est utilisée pour ce
comportement, car cette propriété
Chapitre 5 : Éléments à 10
mettre
15 à l'ordre
Définissez du jour
la variable org-hierarchical-checkbox-statistics si vous souhaitez que ces cookies 4
prennent en compte toutes les cases à cocher situées sous le cookie, et pas seulement celles qui
appartiennent à des enfants directs.
16
C-u C-c C-c sur le premier élément d'une liste sans case à cocher ajoute des cases à cocher au reste de la liste.
Chapitre 5 : Éléments à 10
mettre à l'ordre du jour 5

doit être locale à l'entrée courante, et non héritée comme une balise.
Cependant, si vous souhaitez suivre la valeur de cette propriété avec une
balise pour une meilleure visibilité, personnalisez org-track-ordered-
property-with-tag.
C-c # (org-update-statistics-cookies)
Mettre à jour le cookie de statistiques dans l'entrée de contour actuelle.
Lorsqu'il est appelé avec un préfixe C-u, il met à jour l'ensemble du fichier.
Les cookies statistiques des cases à cocher sont mis à jour
automatiquement si vous basculez les cases à cocher avec C-c C-c et que
vous en créez de nouvelles avec M-S-RET. Les cookies de statistiques TODO
sont mis à jour lorsque vous changez d'état TODO. Si vous supprimez des
boîtes/entrées ou les ajoutez/modifiez à la main, utilisez cette commande
pour rétablir la synchronisation.
Chapitre 6 : 10
Tags 6

6 Tags
Un excellent moyen de mettre en œuvre des étiquettes et des contextes pour la
corrélation croisée des informations est d'attribuer des étiquettes aux titres. Le mode Org
offre une prise en charge étendue des balises.
Chaque titre peut contenir une liste de balises ; elles se trouvent à la fin du titre. Les
balises sont des mots normaux contenant des lettres, des chiffres, des "_" et des "@". Les
balises doivent être précédées et suivies de deux points, par exemple, ':work:'. Plusieurs
balises peuvent être spécifiées, comme dans ':work:urgent:'. Par défaut, les balises
sont en gras et de la même couleur que le titre. Vous pouvez spécifier des visages
spéciaux pour des balises spécifiques en utilisant la variable org-tag-faces, de la même
manière que pour les mots-clés TODO (voir Section 5.2.6 [Visages pour les mots-clés
TODO], page 51).

6.1 Étiquette Héritage


Les balises utilisent la structure hiérarchique des arborescences. Si un titre possède une
certaine balise, tous les sous-titres héritent également de cette balise. Par exemple,
dans la liste
* Réunion avec le groupe français :travail :
** Résumé par Frank :boss:notes :
*** TODO Préparer des diapositives pour luiaction :
l'intitulé final comporte les balises "travail", "patron", "notes" et "action", même si
l'intitulé final n'est pas explicitement marqué par ces balises. Vous pouvez également
définir des balises dont toutes les entrées d'un fichier doivent hériter, comme si ces
balises étaient définies dans un hypothétique niveau zéro entourant l'ensemble du
fichier. Utilisez une ligne comme celle-ci1
#+FILETAGS : :Peter:Boss:Secret :
Pour limiter l'héritage des balises à des balises spécifiques, ou pour le désactiver complètement, utilisez
les variables
org-use-tag-inheritance et org-tags-exclude-from-inheritance.
Lorsqu'un titre correspond lors d'une recherche de balises alors que l'héritage des
balises est activé, tous les sous-niveaux du même arbre - pour une forme de
correspondance simple - correspondent également2 . La liste des correspondances peut
alors devenir très longue. Si vous ne voulez voir que la première correspondance dans
un sous-arbre, configurez la variable org-tags-match-list-sublevels (non
recommandé).
L'héritage d'étiquettes est pertinent lorsque la recherche d'agenda tente de
correspondre à une étiquette, que ce soit dans les types d'agenda "étiquettes" ou
"étiquettes à faire". Dans les autres types d'agenda, org-use-tag-inheritance
n'a aucun effet. Cependant, vous pouvez souhaiter que vos balises soient correctement
définies dans l'agenda, afin que le filtrage des balises fonctionne correctement, avec les
balises héritées. Définissez org-agenda-use-tag-inheritance pour contrôler cela : la
valeur par défaut inclut tous les types d'agenda, mais mettre cette valeur à nil peut
vraiment accélérer la génération de l'agenda.

6.2 Paramétrage des étiquettes


Les balises peuvent simplement être saisies dans la mémoire tampon à la fin d'un titre. Après les deux
points, M-TAB
Chapitre 6 : 10
Tags 7
permet de compléter les balises. Il existe également une commande spéciale pour l'insertion de balises :
C-c C-q (commande org-set-tags)
Entrer de nouvelles balises pour le titre actuel. Le mode Org offre soit la
complétion, soit une interface spéciale à une touche pour définir les balises,
voir ci-dessous. Après avoir appuyé sur RET, l'écran
1
Comme pour tous ces réglages dans la mémoire tampon, le fait d'appuyer sur C-c C-c active tout changement dans la
ligne.
2
Cela n'est vrai que si la recherche n'implique pas de tests plus complexes incluant des propriétés (voir
Section 7.3 [Recherches de propriétés], page 69).
Chapitre 6 : 10
Tags 8

sont insérées et alignées sur la colonne org-tags. Lorsqu'elles sont


appelées avec un préfixe C-u, toutes les balises du tampon courant sont
alignées sur cette colonne, juste pour rendre les choses plus agréables. Les
balises sont automatiquement réalignées après une promotion, une
rétrogradation, et un changement d'état TODO (voir Section 5.1 [Notions
TODO], page 48).
C-c C-c (commande org-set-tags)
Lorsque le point est dans un titre, il fait la même chose que C-c C-q.
Org prend en charge l'insertion de balises sur la base d'une liste de balises. Par défaut,
cette liste est construite dynamiquement et contient toutes les balises actuellement
utilisées dans le tampon3 . Vous pouvez également spécifier globalement une liste de
balises avec la variable org-tag-alist. Enfin, vous pouvez définir les balises par défaut
pour un fichier donné en utilisant le mot-clé 'TAGS', comme par exemple
#+TAGS : @work @home @tennisclub
#+TAGS : laptop car pc sailboat
Si vous avez défini globalement votre jeu de balises préféré à l'aide de la variable org-
tag-alist, mais que vous souhaitez utiliser une liste de balises dynamique dans un
fichier spécifique, ajoutez un mot-clé "TAGS" vide à ce fichier :
#+TAGS :
Si vous avez un ensemble de balises que vous souhaitez utiliser dans chaque fichier,
en plus de celles définies pour chaque fichier par le mot-clé "TAGS", vous pouvez
spécifier une liste de balises avec la variable org-tag-persistent-alist. Vous pouvez
désactiver cette fonction pour chaque fichier en ajoutant le mot-clé 'STARTUP' à ce fichier
:
#+STARTUP : noptag
Par défaut, le mode Org utilise les fonctions de complétion standard du minibuffer pour
la saisie des balises. Cependant, il implémente également une autre méthode de sélection
des balises, plus rapide, appelée sélection rapide des balises. Cette méthode vous permet
de sélectionner et de désélectionner des balises en appuyant sur une seule touche.
Pour que cette méthode fonctionne correctement, vous devez attribuer des lettres
uniques à la plupart des balises que vous utilisez couramment. Vous pouvez le faire
globalement en configurant la variable org-tag-alist dans votre fichier init Emacs.
Par exemple, vous pouvez avoir besoin d'étiqueter de nombreux éléments dans
différents fichiers avec '@home'. Dans ce cas, vous pouvez définir quelque chose comme
:
(setq org-tag-alist '(("@work" . ?w) ("@home" . ?h) ("laptop" . ?l)))
Si la balise ne concerne que le fichier sur lequel vous travaillez, vous pouvez définir
le mot-clé "TAGS" comme suit :
#+TAGS : @travail(w) @domicile(h) @club de tennis(t) ordinateur portable(l) pc(p)
L'interface des balises affiche les balises disponibles dans une fenêtre de
présentation. Si vous souhaitez commencer une nouvelle ligne après une balise
spécifique, insérez '\n' dans la liste des balises.
#+TAGS : @work(w) @home(h) @tennisclub(t) \n laptop(l) pc(p)
ou les écrire en deux lignes :
#+TAGS : @work(w) @home(h) @tennisclub(t)
#+TAGS : laptop(l) pc(p)
Chapitre 6 : 10
Tags 9
Vous pouvez également regrouper des balises qui s'excluent mutuellement en utilisant des accolades,
comme dans le cas suivant :
3
Pour étendre cette liste par défaut à toutes les balises utilisées dans tous les fichiers d'agenda (voir
Chapitre 11 [Vues de l'agenda], page 109), personnalisez la variable org-complete-tags-always-
offer-all-agenda-tags.
Chapitre 6 : 11
Tags 0

#+TAGS : { @work(w) @home(h) @tennisclub(t) } laptop(l) pc(p)


vous indiquez qu'au plus un des groupes "@work", "@home" et "@tennisclub" doit être
sélectionné. Plusieurs groupes de ce type sont autorisés.
N'oubliez pas d'appuyer sur C-c C-c avec un point dans l'une de ces lignes pour activer
les changements. Pour définir ces groupes mutuellement exclusifs dans la variable org-
tags-alist, vous devez utiliser les balises fictives :startgroup et :endgroup à la
place des accolades. De même, vous pouvez
utiliser :newline pour indiquer un saut de ligne. L'exemple précédent serait défini
globalement par la configuration suivante :
(setq org-tag-alist '((:startgroup . nil)
("@work" . ?w) ("@home" . ?h)
("@tennisclub" . ?t)
(:endgroup . nil)
("laptop" . ?l) ("pc" . ?p)))
Si au moins une balise possède une touche de sélection, l'appui sur C-c C-c vous
présente automatiquement une interface spéciale, listant les balises héritées, les balises
du titre courant, et une liste de toutes les balises valides avec les touches
correspondantes4 .
L'appui sur les touches affectées aux balises permet d'ajouter ou de supprimer ces
dernières de la liste des balises de la ligne en cours. La sélection d'une balise dans un
groupe de balises mutuellement exclusives désactive toute autre balise de ce groupe.
Dans cette interface, vous pouvez également utiliser les touches spéciales suivantes :
TAB Saisir une balise dans le minibuffer, même si la balise ne figure pas dans la liste
prédéfinie. Vous pouvez compléter sur toutes les balises présentes dans le
buffer et globalement sur les balises prédéfinies de org-tag-alist et org-
tag-persistent-alist. Vous pouvez également ajouter plusieurs balises : il
suffit de les séparer par une virgule.
SPC Efface toutes les étiquettes de cette ligne.
RET Accepter l'ensemble modifié.
C-g Abandonner sans installer les modifications.
q Si q n'est pas assigné à une balise, il s'interrompt comme C-g.
! Désactive les groupes de balises qui s'excluent mutuellement. Cette option
permet (exceptionnellement) d'attribuer plusieurs balises à partir d'un tel
groupe.
C-c Permet d'activer la sortie automatique après le prochain changement (voir ci-
dessous). Si vous utilisez le mode expert, le premier C-c affiche la fenêtre de
sélection.
Cette méthode vous permet d'attribuer des balises à un titre avec très peu de
touches. Avec la configuration ci-dessus, vous pouvez effacer les balises actuelles et
définir les balises '@home', 'laptop' et 'pc' avec les seules touches suivantes : C-c C-c
SPC h l p RET. Le passage de '@home' à '@work' se fait avec C-c C-c w RET ou avec C-c C-
c C-c w. L'ajout de la balise non prédéfinie 'sarah' se fait avec C-c C-c TAB s a r a h RET.
Si vous constatez que la plupart du temps vous n'avez besoin que d'une seule touche
pour modifier votre liste de balises, définissez la variable org-fast-tag-selection-
single-key. Vous n'aurez alors plus besoin d'appuyer sur RET pour sortir de la
sélection rapide des balises - vous sortirez après la première modification. Si vous
Chapitre 6 : 11
Tags
appuyez occasionnellement sur 1

4
Des touches sont automatiquement attribuées aux étiquettes qui n'ont pas de touches configurées.
Chapitre 6 : 11
Tags 2

Si vous avez besoin de plus de touches, appuyez sur C-c pour désactiver la sortie
automatique du processus de sélection d'étiquette en cours (en fait : commencez la
sélection avec C-c C-c C-c au lieu de C-c C-c). Si vous donnez à la variable la valeur
expert, la fenêtre spéciale n'est même pas affichée pour la sélection d'une balise à une
touche, elle n'apparaît que lorsque vous appuyez sur un C-c supplémentaire.

6.3 Hiérarchie des balises


Les balises peuvent être définies dans des hiérarchies. Une balise peut être définie
comme une balise de groupe pour un ensemble d'autres balises. La balise de groupe peut
être considérée comme le "terme le plus large" pour son ensemble de balises. La
définition de plusieurs balises de groupe et leur imbrication créent une hiérarchie de
balises.
L'un des cas d'utilisation est la création d'une taxonomie de termes (tags) pouvant
être utilisés pour classer les nœuds d'un document ou d'un ensemble de documents.
Lorsque vous effectuez une recherche sur une balise de groupe, celle-ci renvoie des
résultats pour tous les membres du groupe et de ses sous-groupes. Dans une vue
d'agenda, le filtrage par étiquette de groupe permet d'afficher ou de masquer les titres
étiquetés avec au moins un des membres du groupe ou de l'un de ses sous-groupes.
Cela rend les recherches et les filtres par balise encore plus flexibles.
Vous pouvez définir des balises de groupe en utilisant des crochets et en insérant
deux points entre la balise de groupe et ses balises associées - attention, tous les
espaces sont obligatoires pour qu'Org puisse analyser cette ligne correctement :
#+TAGS : [ GTD : Contrôle Persp ]
Dans cet exemple, 'GTD' est la balise de groupe et elle est liée à deux autres balises :
'Control', 'Persp'. La définition de 'Control' et 'Persp' comme balises de groupe crée
une hiérarchie de balises :
#+TAGS : [ Contrôle : Contexte Tâche ]
#+TAGS : [ Persp : Vision But Projet AOF ]
Cela peut être considéré comme une hiérarchie de balises :
• GTD
• Persp'
• Vision
• Objectif
• AOF
• Projet
• Contrôle
• Contexte
• Tâche
Vous pouvez utiliser les mots-clés :startgrouptag, :grouptags et :endgrouptag
pour définir directement org-tag-alist :
(setq org-tag-alist '((:startgrouptag)
("GTD")
(:grouptags)
("Control")
("Persp")
(:endgrouptag)
Chapitre 6 : 11
Tags (:startgrouptag) 3
Chapitre 6 : 11
Tags 4

("Contrôle")
(:grouptags)
("Contexte")
("Tâche")
(:endgrouptag)))
Les balises d'un groupe peuvent être mutuellement exclusives si l'on utilise la même
syntaxe de groupe que celle utilisée pour regrouper des balises mutuellement
exclusives, en utilisant des crochets.
#+TAGS : { Context : @Home @Work @Call }
Lorsque vous définissez org-tag-alist, vous pouvez utiliser :startgroup et :endgroup au lieu de
:startgrouptag et :endgrouptag pour que les balises s'excluent mutuellement.
De plus, les membres d'une balise de groupe peuvent également être des
expressions régulières, ce qui permet de créer une structure de balise plus dynamique
et basée sur des règles (voir Section 17.9 [Expressions régulières], page 254). Les
expressions régulières du groupe doivent être spécifiées entre crochets. Voici un exemple
développé :
#+TAGS : [ Vision : {V@.+} ]
#+TAGS : [ Goal : {G@.+} ]
#+TAGS : [ AOF : {AOF@.+} ]
#+TAGS : [ Projet : {P@.+} ]
La recherche de l'étiquette "Projet" liste désormais toutes les étiquettes, y compris
les expressions régulières correspondant à "P@.+", et de la même manière pour les
recherches d'étiquettes sur "Vision", "Goal" et "AOF". Par exemple, cela fonctionnerait
bien pour un projet étiqueté avec un identifiant de projet commun, par exemple,
'P@2014_OrgTags'.
Si vous voulez ignorer temporairement les tags de groupe, activez le support des
tags de groupe avec org-toggle-tags-groups, lié à C-c C-x q. Si vous voulez désactiver
complètement les groupes de tags, mettez org-group-tags à nil.

6.4 Recherche par étiquette


Une fois qu'un système de balises a été mis en place, il peut être utilisé pour rassembler
des informations connexes dans des listes spéciales.
C-c / m ou C-c \ (org-match-sparse-tree)
Créer un arbre clairsemé avec tous les titres correspondant à une recherche de tags. Avec un
C-u
ignore les titres qui ne sont pas des lignes TODO.
M-x org-agenda m (org-tags-view)
Créer une liste globale des correspondances de balises à partir de tous les
fichiers d'agenda. Voir Section 11.3.3 [Correspondance entre les balises et
les propriétés], page 115.
M-x org-agenda M (org-tags-view)
Créer une liste globale des correspondances d'étiquettes à partir de tous les
fichiers de l'agenda, mais ne vérifier que les éléments TODO et forcer la
vérification des sous-éléments (voir l'option org-tags-match-list-
sublevels).
Ces commandes demandent toutes une chaîne de correspondance qui permet une
logique booléenne de base comme '+boss+urgent-project1', pour trouver les entrées
Chapitre 6 : 11
Tags les étiquettes 'boss' et 'urgent', mais pas 'project1', ou 'Kathy|Sally' pour
avec 5
trouver les entrées qui sont étiquetées, comme 'Kathy' ou 'Sally'. La syntaxe complète
de la chaîne de recherche est riche et permet également de faire correspondre les
entrées à TODO
Chapitre 6 : 11
Tags 6

les mots-clés, les niveaux d'entrée et les propriétés. Pour une description complète avec
de nombreux exemples, voir la section 11.3.3 [Correspondance entre les balises et les
propriétés], page 115.
Chapitre 7 : Propriétés et colonnes 11
7

7 Propriétés et colonnes
Une propriété est une paire clé-valeur associée à une entrée. Les propriétés peuvent
être définies de manière à être associées à une seule entrée, à chaque entrée d'un
arbre ou à l'ensemble du tampon.
Les propriétés ont deux applications principales en mode Org. Premièrement, les
propriétés sont comme des balises, mais avec une valeur. Imaginez que vous
mainteniez un fichier dans lequel vous documentez les bogues et planifiez les versions
d'un logiciel. Au lieu d'utiliser des balises comme 'release_1', 'release_2', vous pouvez
utiliser une propriété, disons 'Release', qui dans différents sous-arbres a des valeurs
différentes, comme '1.0' ou '2.0'. Deuxièmement, vous pouvez utiliser des propriétés
pour mettre en œuvre des capacités de base de données (très basiques) dans un
tampon Org. Imaginez que vous gardiez une trace de vos CD de musique, où les
propriétés pourraient être des choses telles que l'album, l'artiste, la date de sortie, le
nombre de pistes, et ainsi de suite.
Les propriétés peuvent être modifiées et visualisées de manière pratique en vue
colonne (voir Section 7.5 [Vue colonne], page 71).

7.1 Syntaxe des propriétés


Les propriétés sont des paires clé-valeur. Lorsqu'elles sont associées à une entrée
unique ou à un arbre, elles doivent être insérées dans un tiroir spécial (voir section 2.7
[Tiroirs], page 15) portant le nom "PROPRIÉTÉS", qui doit être situé juste en dessous d'un
titre et de sa ligne de planification (voir section 8.3 [Délais et planification], page 80), le
cas échéant. Chaque propriété est spécifiée sur une seule ligne, avec la clé - entourée
de deux points - en premier, et la valeur après. Les clés ne sont pas sensibles à la
casse. Voici un exemple :
* Collection de CD
** Classique
*** Variations Goldberg
:PROPRIÉTÉS :
Titre:Variations Goldberg
Compositeur : J.S. Bach
:Artiste: Glenn Gould
:Éditeur : Deutsche Grammophon
:NDisks : 1
:FIN :
Selon la valeur de org-use-property-inheritance, une propriété définie de cette
manière est associée soit à une seule entrée, soit au sous-arbre défini par l'entrée, voir
Section 7.4 [Property Inheritance], page 70.
Vous pouvez définir les valeurs autorisées pour une propriété particulière "Xyz" en
définissant la propriété "Xyz_ALL". Cette propriété spéciale est héritée, de sorte que si
vous la définissez dans une entrée de niveau 1, elle s'applique à l'ensemble de l'arbre.
Lorsque des valeurs autorisées sont définies, la définition de la propriété
correspondante devient plus facile et moins sujette aux erreurs de frappe. Pour
l'exemple de la collection de CD, nous pouvons prédéfinir les éditeurs et le nombre de
disques dans une boîte comme suit :
* Collection de CD
:PROPRIÉTÉS :
Chapitre 7 : Propriétés et colonnes 11
:NDisks_ALL : 1 2 3 4 8
:Publisher_ALL : "Deutsche Grammophon" Philips EMI
:FIN :
Chapitre 7 : Propriétés et colonnes 11
9

Les propriétés peuvent être insérées au niveau de la mémoire tampon. Cela signifie
qu'elles s'appliquent avant le premier titre et qu'elles peuvent être héritées par toutes les
entrées d'un fichier. Les blocs de propriétés définis avant le premier titre doivent être
situés en haut de la mémoire tampon, ce qui n'autorise que les commentaires au-
dessus.
Les propriétés peuvent également être définies à l'aide de lignes telles que
#+PROPERTY : NDisks_ALL 1 2 3 4
Si vous souhaitez compléter la valeur d'une propriété existante, ajoutez un "+" au
nom de la propriété. Dans l'exemple suivant, la propriété "var" aura la valeur "foo=1
bar=2".
#+PROPERTY : var
foo=1 #+PROPERTY :
var+ bar=2
Il est également possible de compléter les valeurs des propriétés héritées. Le résultat
suivant est que la propriété "Genres" a la valeur "Classique Baroque" dans le sous-
arbre "Variations Goldberg".
* Collection de CD
** Classique
:PROPRIÉTÉS :
:Genres : Classique
:FIN :
*** Variations Goldberg
:PROPRIÉTÉS :
Titre:Variations Goldberg
Compositeur : J.S. Bach
:Artiste: Glenn Gould
:Éditeur : Deutsche Grammophon
:NDisks : 1
:Genres+ : Baroque
:FIN :
Notez qu'un bien ne peut avoir qu'une seule entrée par tiroir.
Les valeurs des propriétés définies à l'aide de la variable globale org-global-
properties peuvent être héritées par toutes les entrées de tous les fichiers Org.
Les commandes suivantes permettent de travailler avec les propriétés :
M-TAB (pcomplete)
Après les deux-points initiaux d'une ligne, compléter les clés de propriété.
Toutes les clés utilisées dans le fichier actuel sont proposées comme
compléments possibles.
C-c C-x p (org-set-property)
Définir une propriété. Un nom de propriété et une valeur sont demandés. Si
nécessaire, le tiroir de la propriété est également créé.
C-u M-x org-insert-drawer
Insérer un tiroir de propriété dans l'entrée en cours. Le tiroir est inséré au
début de l'entrée, mais après les lignes contenant des informations de
planification telles que les délais. S'il est placé avant le premier titre, le tiroir
est inséré en haut du tiroir, après tout commentaire potentiel.
C-c C-c (org-property-action)
Chapitre 7 : Propriétés et colonnes 12
0
Avec un point dans un tiroir de propriété, il exécute des commandes de propriété.
Chapitre 7 : Propriétés et colonnes 12
1

C-c C-c s (org-set-property)


Définit une propriété dans l'entrée courante. La propriété et la valeur
peuvent être insérées à l'aide de la fonction d'achèvement.
S-RIGHT (org-property-next-allowed-value)
S-LEFT (org-property-previous-allowed-value)
Passer la propriété du point à la valeur autorisée suivante/précédente.
C-c C-c d (org-delete-property)
Supprime une propriété de l'entrée courante.
C-c C-c D (org-delete-property-globally)
Supprime globalement une propriété de toutes les entrées du fichier actuel.
C-c C-c c (org-compute-property-at-point)
Calculer la propriété au point, en utilisant l'opérateur et la portée de la
définition du format de colonne la plus proche.

7.2 Propriétés particulières


Des propriétés spéciales fournissent une méthode d'accès alternative aux
caractéristiques du mode Org, comme l'état TODO ou la priorité d'une entrée, discutés
dans les chapitres précédents. Cette interface existe pour que vous puissiez inclure ces
états dans une vue en colonnes (voir Section 7.5 [Vue en colonnes], page 71), ou pour les
utiliser dans des requêtes. Les noms de propriétés suivants sont spéciaux et ne doivent
pas être utilisés comme clés dans le tiroir des propriétés :
'ALLTAGS' Toutes les balises, y compris celles qui ont été héritées.
'BLOCKED' (BLOQUÉ)t si la tâche est actuellement bloquée par des
enfants ou des frères et sœurs. 'CATEGORY' La catégorie d'une
entrée.
CLOCKSUM La somme des intervalles CLOCK dans le sous-arbre. org-clock-sum
doit être exécuté en premier pour calculer les valeurs dans
le tampon actuel. CLOCKSUM_T' La somme des intervalles CLOCK dans le
sous-arbre pour aujourd'hui.
org-clock-sum-today doit être exécuté en premier pour
calculer les valeurs du tampon actuel.
'CLOSED' (FERMÉ) Quand cette entrée a-t-elle
été clôturée ? 'DEADLINE'L 'horodatage de la
date limite.
'FICHIER' Nom du fichier dans lequel se trouve l'entrée.
'ITEM ' Titre de l'entrée.
PRIORITÉ "Priorité de l'entrée, chaîne de caractères composée d'une
seule lettre. 'SCHEDULED'L 'horodatage de l'ordonnancement.
TAGS' Les tags définis directement dans le titre.
'TIMESTAMP' Le premier horodatage sans mot-clé de
l'entrée. 'TIMESTAMP_IA' Le premier horodatage inactif de
l'entrée. TODO' Le mot-clé TODO de l'entrée.

7.3 Recherche de biens


Pour créer des arbres clairsemés et des listes spéciales avec une sélection basée sur les
propriétés, on utilise les mêmes com- mandes que pour les recherches d'étiquettes (voir
Chapitre 7 : Propriétés et colonnes 12
Section 6.4 [Recherches d'étiquettes], page 65). 2
Chapitre 7 : Propriétés et colonnes 12
3

C-c / m ou C-c \ (org-match-sparse-tree)


Créer un arbre clairsemé avec toutes les entrées correspondantes. Avec un
argument préfixe C-u, ignorer les titres qui ne sont pas des lignes TODO.
M-x org-agenda m (org-tags-view)
Créer une liste globale des correspondances entre les étiquettes et les propriétés à partir de
tous les fichiers de l'agenda.
M-x org-agenda M (org-tags-view)
Créer une liste globale des correspondances d'étiquettes à partir de tous les
fichiers de l'agenda, mais ne vérifier que les éléments TODO et forcer la
vérification des sous-éléments (voir l'option org-tags-match-list-
sublevels).
La syntaxe de la chaîne de recherche est décrite dans la section 11.3.3
[Correspondance entre les balises et les propriétés], page 115.
Il existe également une commande spéciale pour créer des arbres épars basés sur une seule propriété :
C-c / p Créer un arbre clairsemé basé sur la valeur d'une propriété. Cette méthode
demande d'abord le nom d'une propriété, puis une valeur. Un arbre
clairsemé est créé avec toutes les entrées qui définissent cette propriété
avec la valeur donnée. Si vous placez la valeur entre accolades, elle est
interprétée comme une expression régulière et comparée aux valeurs de la
propriété (voir Section 17.9 [Expressions régulières], page 254).

7.4 Héritage des biens


La structure hiérarchique des documents Org se prête à un modèle d'héritage des
propriétés : si le parent d'un arbre possède une certaine propriété, les enfants peuvent
hériter de cette propriété. Le mode Org n'active pas ce modèle par défaut, car il peut
ralentir considérablement les recherches de propriétés et n'est souvent pas nécessaire.
Cependant, si vous trouvez l'héritage utile, vous pouvez l'activer en définissant la
variable org-use-property-inheritance. Elle peut avoir pour valeur t pour que toutes
les propriétés soient héritées du parent, une liste de propriétés qui devraient être
héritées, ou une expression régulière qui correspond aux propriétés héritées. Si une
propriété a la valeur nil, cela est interprété comme une non-définition explicite de la
propriété, de sorte que la recherche de l'héritage s'arrête à cette valeur et renvoie nil.
Le mode Org possède quelques propriétés pour lesquelles l'héritage est codé en dur,
du moins pour les applications spéciales pour lesquelles elles sont utilisées :
COLUMNS La propriété "COLUMNS" définit le format de l'affichage en colonnes (voir section
7.5 [Affichage en colonnes], page 71). Elle est héritée en ce sens que le
niveau où une propriété "COLUMNS" est définie est utilisé comme point de
départ d'un tableau à colonnes, indépendamment de l'emplacement dans le
sous-arbre à partir duquel l'affichage des colonnes est activé.
CATEGORY Pour les vues d'agenda, une catégorie définie par le biais d'une propriété
"CATEGORY" s'applique à l'ensemble de la sous-arborescence.
ARCHIVE Pour l'archivage, la propriété 'ARCHIVE' peut définir l'emplacement de l'archive
pour l'ensemble de la sous-arborescence (voir Section 9.2.1 [Déplacement
des sous-arborescences], page 95).
LOGGING La propriété 'LOGGING' peut définir les paramètres de journalisation pour une
Chapitre 7 : Propriétés et colonnes 12
entrée ou une sous-arborescence (voir Section 5.3.2 [Suivi 4
des
changements d'état des TODO], page 53).
Chapitre 7 : Propriétés et colonnes 12
5

7.5 Vue des colonnes


L'affichage en colonnes est un excellent moyen de visualiser et de modifier les propriétés
d'une arborescence. Dans la vue en colonnes, chaque nœud de contour est transformé
en une ligne de tableau. Les colonnes de ce tableau permettent d'accéder aux
propriétés des entrées. Le mode Org met en œuvre les colonnes en superposant une
structure tabulaire à l'en-tête de chaque élément. Bien que les titres aient été
transformés en ligne de tableau, vous pouvez toujours modifier la visibilité de
l'arborescence. Par exemple, vous obtenez un tableau compact en passant à l'affichage
"contenu" - S-TAB S-TAB, ou simplement c lorsque l'affichage en colonnes est actif - mais
vous pouvez toujours ouvrir, lire et modifier l'entrée située sous chaque titre. Vous
pouvez également passer à l'affichage en colonnes après avoir exécuté une commande
d'arbre clairsemé et obtenir ainsi un tableau uniquement pour les éléments sélectionnés.
L'affichage en colonnes fonctionne également dans les tampons d'agenda (voir le chapitre
11 [Vues d'agenda], page 109) où les requêtes ont rassemblé des éléments
sélectionnés, éventuellement à partir d'un certain nombre de fichiers.

7.5.1 Définition des colonnes


Pour mettre en place une vue en colonnes, il faut d'abord définir les colonnes. Cela se
fait en définissant une ligne de format de colonne.

7.5.1.1 Champ d'application des définitions des colonnes


Pour spécifier un format qui ne s'applique qu'à un arbre spécifique, ajoutez une propriété
"COLUMNS" au nœud supérieur de cet arbre, par exemple :
** Nœud supérieur pour la vue en colonnes
:PROPRIÉTÉS :
:COLUMNS : %25ITEM %TAGS %PRIORITY %TODO
:FIN :
Une propriété "COLUMNS" dans un tiroir de propriétés avant le premier titre
s'appliquera à l'ensemble du fichier. En plus des tiroirs de propriétés, les mots-clés
peuvent également être définis pour un fichier entier à l'aide d'une ligne comme :
#+COLONNES : %25ITEM %TAGS %PRIORITY %TODO
Si une propriété "COLUMNS" est présente dans une entrée, elle définit des colonnes
pour l'entrée elle-même et pour l'ensemble du sous-arbre situé en dessous. Comme la
définition des colonnes fait partie de la structure hiérarchique du document, vous pouvez
définir des colonnes au niveau 1 qui sont suffisamment générales pour tous les sous-
niveaux, et des colonnes plus spécifiques plus bas, lorsque vous éditez une partie plus
profonde de l'arbre.

7.5.1.2 Attributs des colonnes


Une définition de colonne définit les attributs d'une colonne. La définition générale ressemble à ceci :
%[WIDTH]PROPERTY[(TITLE)][{SUMMARY-TYPE}]
À l'exception du signe de pourcentage et du nom de la propriété, tous les éléments sont
facultatifs. Les différentes parties ont la signification suivante :
LARGEUR Un entier spécifiant la largeur de la colonne en caractères. En cas
d'omission, la largeur est déterminée automatiquement.
PROPRIÉTÉ
La propriété qui doit être éditée dans cette colonne. Les propriétés spéciales
représentant des métadonnées sont également autorisées ici (voir Section 7.2
Chapitre 7 : Propriétés et colonnes 12
[Propriétés spéciales], page 69). 6
Chapitre 7 : Propriétés et colonnes 12
7

TITRE Texte de l'en-tête de la colonne. S'il est omis, le nom de la propriété est utilisé.
TYPE DE RÉSUMÉ
Le type de résumé. Si cette option est spécifiée, les valeurs des colonnes
des nœuds parents sont calculées à partir des nœuds enfants1 .
Les types de résumé pris en charge sont les suivants :
'+' Additionner les nombres dans cette colonne.
'+;%.1f' Comme '+', mais en formatant le
résultat avec '%.1f'. '$'Devise, abréviation de
'+;%.2f'.
min Plus petit nombre de la
colonne. 'max' Plus grand nombre.
'mean' Moyenne arithmétique des nombres.
X" Statut de la case à cocher, "[X]" si tous les
enfants sont "[X]". X/" Statut de la case à cocher,
"[n/m]".
'X%' Statut de la case à cocher, '[n%]'.
':' Somme des heures, HH:MM, les nombres en
clair sont des minutes. ':min' Plus petite valeur temporelle
dans la colonne.
':max' Plus grande valeur temporelle.
':mean'Moyenne arithmétique des valeurs temporelles.
'@min'Âge minimum2 (en
jours/heures/minutes/secondes). '@max'Âge maximum
(en jours/heures/minutes/secondes).
'@mean'Moyenne arithmétique des âges (en
jours/heures/minutes/secondes). 'est+' Ajouter les
estimations basse-haute.
Vous pouvez également définir des types de résumé personnalisés en
définissant org-columns-summary- types.
Le type de résumé "est+" nécessite des explications supplémentaires. Il est utilisé
pour combiner des estimations, exprimées sous la forme de fourchettes basses-hautes.
Par exemple, au lieu d'estimer qu'une tâche particulière prendra 5 jours, vous pouvez
l'estimer entre 5 et 6 jours si vous êtes relativement sûr de connaître la quantité de
travail nécessaire, ou entre 1 et 10 jours si vous ne savez pas vraiment ce qu'il y a à
faire. Les deux fourchettes se situent en moyenne à 5,5 jours, mais la première
représente une livraison plus prévisible.
Lorsque l'on combine un ensemble d'estimations de ce type, le simple fait
d'additionner les valeurs les plus basses et les plus élevées produit un résultat trop
large. Au lieu de cela, "est+" ajoute la moyenne statistique et la variance des sous-
tâches, générant ainsi une estimation finale à partir de la somme. Par exemple,
supposons que vous ayez dix tâches, dont chacune est estimée entre 0,5 et 2 jours de
travail. L'addition directe produit une estimation de 5 à 20 jours, représentant ce à quoi il
faut s'attendre si tout se passe très bien ou très mal. En revanche, "est+" estime le
travail complet de manière plus réaliste, à savoir entre 10 et 15 jours.
Voici un exemple de définition complète d'une colonne, avec les valeurs autorisées3 .
:COLONNES : %25ITEM %9Approuvé(Approuvé ?){X} %Propriétaire %11Etat \
%10Time_Estimate{:} %CLOCKSUM %CLOCKSUM_T
1
Si plusieurs types de résumé s'appliquent à la même propriété, les valeurs parentes sont calculées en
fonction du premier d'entre eux.
Chapitre 7 : Propriétés et colonnes 12
2 8
Un âge peut être défini comme une durée, en utilisant les unités définies dans org-duration-units, par
exemple, "3d 1h". Si une valeur de la colonne est telle, le résumé est également exprimé en tant que
durée.
3
Veuillez noter que la définition des "COLONNES" doit être sur une seule ligne ; elle n'est encapsulée ici
qu'en raison de contraintes de formatage.
Chapitre 7 : Propriétés et colonnes 12
9

:Owner_ALL: Tammy Mark Karl Lisa Don


:Status_ALL : "En cours" "Pas encore commencé" "Terminé" ""
:Approved_ALL : "[ ]" "[X]"
La première colonne, "%25ITEM", correspond aux 25 premiers caractères de l'article lui-
même, c'est-à-dire du titre. Vous devriez probablement toujours commencer la définition
de la colonne par le spécificateur 'ITEM'. Les autres spécificateurs créent des colonnes
"Propriétaire" avec une liste de noms comme valeurs autorisées, pour "Statut" avec
quatre valeurs différentes possibles, et pour un champ de case à cocher "Approuvé". Si
aucune largeur n'est indiquée après le caractère "%", la colonne est exactement aussi
large que nécessaire pour afficher toutes les valeurs. La colonne "Approuvé" a un titre
modifié ("Approuvé ?", avec un point d'interrogation). Des résumés sont créés pour la
colonne "Time_Estimate" en ajoutant des expressions de durée comme HH:MM, et pour
la colonne "Approved", en fournissant un statut "[X]" si tous les enfants ont été cochés.
Les colonnes 'CLOCKSUM' et 'CLOCKSUM_T' sont spéciales, elles listent les sommes des
intervalles CLOCK dans le sous-arbre, soit pour toutes les horloges, soit seulement pour
aujourd'hui.

7.5.2 Utilisation de l'affichage


en colonnes Activation ou
désactivation de l'affichage en
colonnes
C-c C-x C-c (org-colonnes)
Activer l'affichage en colonnes. Si le point se situe avant le premier titre du
fichier, l'affichage en colonnes est activé pour l'ensemble du fichier, en
utilisant la définition '#+COLUMNS'. Si le point se trouve à l'intérieur du plan,
cette commande recherche dans la hiérarchie, à partir du point, une propriété
'COLUMNS' définissant un format. Si elle en trouve une, le tableau des vues en
colonnes est établi pour l'arbre à partir de l'entrée qui contient la propriété
'COLUMNS'. Si aucune propriété de ce type n'est trouvée, le format est tiré de
la ligne '#+COLUMNS' ou de la variable org-columns-default-format, et la
vue en colonnes est établie pour l'entrée courante et sa sous-arborescence.
r ou g sur une ligne de vue des colonnes (org-columns-redo)
Recréer la vue en colonnes, afin d'inclure les modifications récentes apportées à la mémoire
tampon.
C-c C-c ou q sur une ligne d'affichage des colonnes
(org-columns-quit) Quitter l'affichage
des colonnes.

Modification des valeurs


GAUCHE, DROITE, HAUT, BAS
Se déplacer dans la vue en colonnes d'un champ à l'autre.
1..9,0 Sélection directe de la Nième valeur autorisée, 0 sélectionne la
10ème valeur.
n ou S-RIGHT (org-columns-next-allowed-value)
p ou S-LEFT (org-columns-previous-allowed-value)
Chapitre 7 : Propriétés et colonnes 13
0
Passer à la valeur autorisée suivante/précédente du champ. Pour cela, vous
devez avoir spécifié des valeurs autorisées pour une propriété.
e (org-columns-edit-value)
Modifier la propriété au point. Pour les propriétés spéciales, cela invoque la
même interface que celle que vous utilisez normalement pour modifier cette
propriété. Par exemple, l'interface d'achèvement des balises ou de sélection
rapide s'affiche lors de l'édition d'une propriété "TAGS".
Chapitre 7 : Propriétés et colonnes 13
1

C-c C-c (org-columns-toggle-or-columns-quit)


S'il y a une case à cocher à cet endroit, la faire basculer. Sinon, quittez la vue en colonnes.
v (org-columns-show-value)
Affiche la valeur complète de cette propriété. Ceci est utile si la largeur de la
colonne est inférieure à celle de la valeur.
a (org-columns-edit-allowed)
Modifier la liste des valeurs autorisées pour cette propriété. Si la liste est
trouvée dans la hiérarchie, les valeurs modifiées y sont stockées. Si aucune
liste n'est trouvée, la nouvelle valeur est stockée dans la première entrée qui
fait partie de la vue de la colonne actuelle.

Modifier l'affichage des colonnes à la volée


< (org-columns-narrow)
> (org-columns-widen)
Réduire/élargir la colonne d'un caractère.
S-M-RIGHT (org-columns-new)
Insérer une nouvelle colonne, à gauche de la colonne actuelle.
S-M-LEFT (org-columns-delete)
Supprime la colonne actuelle.
7.5.3 Capture de l'affichage des colonnes
Étant donné que la vue en colonnes n'est qu'une superposition sur un tampon, elle ne
peut pas être exportée ou imprimée directement. Si vous souhaitez capturer une vue en
colonnes, utilisez un bloc dynamique "columnview" (voir section A.6 [Blocs dynamiques],
page 270). Le cadre de ce bloc se présente comme suit :
* La vue en colonnes
#+BEGIN : columnview :hlines 1 :id "label"

#+END :
Ce bloc dynamique a les paramètres suivants :
':id'Il s 'agit du paramètre le plus important. La vue en colonne est une
caractéristique qui est souvent localisée à un certain (sous-)arbre, et le bloc
de capture peut se trouver à un autre endroit du fichier. Pour identifier l'arbre
dont la vue doit être capturée, vous pouvez utiliser quatre valeurs :
'local' Utilise l'arbre dans lequel se trouve le bloc de
capture. 'global' Permet d'obtenir une vue globale,
incluant toutes les rubriques du fichier. 'file:FILENAME'
(fichier:nom de fichier)
Exécuter la vue en colonne en haut du fichier FILENAME.
LABEL' Appeler la vue colonne dans l'arbre qui a une propriété 'ID' avec
la valeur LABEL. Vous pouvez utiliser M-x org-id-copy pour
créer un identifiant unique pour l'entrée courante et le copier
dans le kill-ring.
':match' S'il s'agit d'une chaîne de caractères, ce filtre permet de sélectionner un sous-
ensemble de titres dans le champ défini par le paramètre :id.
Chapitre 7 : Propriétés et colonnes 13
2

':hlines' Quand t, insérer une hline après chaque ligne. Avec un nombre N, insérer
une ligne h avant chaque titre de niveau <= N.
':vlines' S'il est non nul, force les groupes de colonnes à
obtenir des lignes verticales. ':maxlevel'
Lorsqu'il s'agit d'un nombre, les entrées inférieures à ce niveau ne sont pas capturées.
':skip-empty-rows'
Si elle est non nulle, les lignes où le seul spécificateur non vide de la vue
de colonne est "ITEM" sont ignorées.
':exclude-tags'
Liste des balises à exclure du tableau des colonnes : les entrées comportant
ces balises seront exclues de l'affichage des colonnes.
':indent' S'il est non nul, indenter chaque champ 'ITEM' en fonction de son niveau.
':format' Spécifier un attribut de colonne (voir section 7.5.1.2 [Attributs de colonne],
page 71) pour le bloc dynamique.
Les commandes suivantes permettent d'insérer ou de mettre à jour le bloc dynamique :
org-columns-insert-dblock
Insérer un bloc dynamique capturant une vue en colonnes. Demander
l'étendue ou l'ID de la vue.
Cette commande peut être invoquée en appelant org-dynamic-block-
insert-dblock (C-c C-x x) et en sélectionnant "columnview" (voir Section A.6
[Blocs dynamiques], page 270).
C-c C-c C-c C-x C-u (org-dblock-update)
Le point doit se trouver dans la ligne '#+BEGIN' du bloc dynamique.
C-u C-c C-x C-u (org-update-all-dblocks)
Mettre à jour tous les blocs dynamiques (voir section A.6 [Blocs
dynamiques], page 270). Cette fonction est utile si vous avez plusieurs blocs
de table d'horloge, blocs de capture de colonnes ou autres blocs dynamiques
dans une mémoire tampon.
Vous pouvez ajouter des formules au tableau de la vue en colonnes et vous pouvez
ajouter des instructions de traçage devant le tableau - celles-ci survivent à une mise à
jour du bloc. Si le mot-clé "TBLFM" figure après le tableau, celui-ci est recalculé
automatiquement après une mise à jour.
Une autre façon de capturer et de traiter les valeurs des propriétés dans une table est
fournie par 'org-collector.el' d'Eric Schulte, qui est un paquetage dans 'org-contrib'4 .
Il fournit une API générale pour collecter les propriétés des entrées dans une certaine
portée, et des expressions Lisp arbitraires pour traiter ces valeurs avant de les insérer
dans un tableau ou un bloc dynamique.

4
Les paquets contribués ne font pas partie d'Emacs, mais sont distribués avec la distribution principale d'Org-visit.
https://orgmode.org.
Chapitre 8 : Dates et heures 13
3

8 Dates et heures
Pour faciliter la planification d'un projet, les éléments TODO peuvent être étiquetés avec
une date et/ou une heure. La chaîne de caractères spécialement formatée qui contient
les informations relatives à la date et à l'heure est appelée horodatage en mode Org.
Cela peut prêter à confusion car le terme horodatage est souvent utilisé pour indiquer la
date de création ou de dernière modification d'un document. Cependant, en mode Org,
ce terme est utilisé dans un sens beaucoup plus large.

8.1 Horodatage
Un horodatage est la spécification d'une date (éventuellement accompagnée d'une
heure ou d'une plage d'heures) dans un format spécial, soit '<2003-09-16 Tue>' ou
'<2003-09-16 Tue 09:39>' ou '<2003-09-16 Tue 12:00-12:30>'1 . Un horodatage
peut apparaître n'importe où dans le titre ou le corps d'une entrée de l'arbre Org. Sa
présence entraîne l'affichage des entrées à des dates spécifiques dans l'agenda (voir
Section 11.3.1 [Agenda hebdomadaire/quotidien], page 111). Nous faisons une
distinction :
Horodatage en clair ; Événement ; Rendez-vous
Un simple horodatage attribue simplement une date/heure à un élément.
Cela revient à noter un rendez-vous ou un événement dans un agenda
papier. Dans l'affichage de l'agenda, le titre d'une entrée associée à un
horodatage simple est affiché exactement à cette date.
* Rencontrer Peter au cinéma
<2006-11-01 Wed 19:15>
* Discussion sur le changement climatique
<2006-11-02 Thu 20:00-22:00>
Horodatage avec intervalle de répétition
Un horodatage peut contenir un intervalle de répétition, indiquant qu'il
s'applique non seulement à la date donnée, mais encore et encore après un
certain intervalle de N heures (h), jours (d), semaines (w), mois (m), ou
années (y). Le texte suivant apparaît dans l'agenda tous les mercredis :
* Aller chercher Sam à l'école
<2007-05-16 Wed 12:30 +1w>
Entrées d'expression de type journal
Pour des spécifications de date plus complexes, le mode Org permet
d'utiliser l'expression spéciale diary entries implémentée dans le paquetage
Emacs Calendar2 . Par exemple, avec l'heure optionnelle :
1
Le format de date Org s'inspire du format standard de date et d'heure ISO 8601. Pour utiliser un autre
format, voir la section 8.2.2 [Format d'heure personnalisé], page 80. Le nom du jour est facultatif lorsque
vous saisissez vous-même la date. Cependant, toute date insérée ou modifiée par Org ajoute ce nom de
jour, pour des raisons de commodité de lecture.
2
Lorsque vous travaillez avec les fonctions d'expression standard de l'agenda, vous devez faire très
attention à l'ordre des arguments. Cet ordre dépend en effet de la variable calendar-date-style. Par
exemple, pour spécifier une date du 1er décembre 2005, l'appel peut ressembler à "(date-agenda 12 1
2005)" ou " (date-agenda 1 12 2005)" ou "(date-agenda 2005 12 1)", en fonction des paramètres.
Cela a été la source de nombreuses confusions. Les utilisateurs du mode Org peuvent recourir à des
versions spéciales de ces fonctions, à savoir org-date, org-anniversary, org-cyclic et ~org-block.
Ces fonctions fonctionnent comme les fonctions d'agenda correspondantes, mais avec l'ordre ISO
stable des arguments (année, mois, jour) chaque fois que cela est applicable, indépendamment de la
valeur de calendar-date-style.
Chapitre 8 : Dates et heures 13
4

* 22:00-23:00 La réunion des nerds tous les deuxièmes jeudis du mois


<%%(journal-float t 4 2)>

Plage de
temps/Date
Deux horodatages reliés par "--" indiquent une fourchette. Le titre est affiché sur
le premier et le dernier jour de la plage, ainsi que toutes les dates affichées
qui se situent dans la plage. Voici un exemple :
** Réunion à Amsterdam
<2004-08-23 Mon>--<2004-08-26 Thu>
Horodatage de l'inactivité
Tout comme un timestamp ordinaire, mais avec des crochets au lieu de
crochets angulaires. Ces horodatages sont inactifs dans le sens où ils ne
déclenchent pas l'affichage d'une entrée dans l'agenda.
* Gillian est en retard pour la
cinquième fois [2006-11-01 Wed].

8.2 Création d'horodatages


Pour que le mode Org reconnaisse les horodatages, ceux-ci doivent avoir un format
spécifique. Toutes les commandes énumérées ci-dessous produisent des horodatages au
bon format.
C-c . (horodatage)
Demande une date et insère un horodatage correspondant. Lorsque le point
se trouve sur un horodatage existant dans la mémoire tampon, la commande
est utilisée pour modifier cet horodatage au lieu d'en insérer un nouveau.
Lorsque cette commande est utilisée deux fois de suite, un intervalle de temps
est inséré.
Lorsqu'il est appelé avec un argument préfixe, il utilise le format alternatif qui
contient la date et l'heure. L'heure par défaut peut être arrondie à des
multiples de 5 minutes. Voir l'option org-time-stamp-rounding-minutes.
Avec deux arguments préfixes, insère un horodatage actif avec l'heure
actuelle sans invite.
C-c ! (org-time-stamp-inactive)
Comme C-c . mais en insérant un horodatage inactif qui ne provoque pas
d'entrée dans l'agenda.
C-c C-c Normaliser l'horodatage, insérer ou corriger le nom du jour s'il est manquant ou erroné.
C-c < (org-date-from-calendar)
Insérer un horodatage correspondant à la date du point dans le calendrier.
C-c > (org-goto-calendrier)
Accède au calendrier Emacs pour la date courante. S'il y a un horodatage
dans la ligne en cours, aller à la date correspondante à la place.
C-c C-o (org-open-at-point)
Accéder à l'agenda pour la date donnée par l'horodatage ou l'intervalle au
point (voir Section 11.3.1 [Agenda hebdomadaire/quotidien], page 111).
Chapitre 8 : Dates et heures 13
5

S-LEFT (org-timestamp-down-day)
S-RIGHT (org-timestamp-up-day)
Modifier la date d'un point d'un jour. Ces combinaisons de touches sont en
conflit avec la sélection par majuscule et les modes associés (voir Section
17.14.2 [Conflits], page 257).
S-UP (org-timestamp-up)
S-DOWN (org-timestamp-down)
Au début ou à la fin d'un horodatage, changer le type de l'horodatage. À
l'intérieur d'un horodatage, modifiez l'élément sous le point. Le point peut
être l'année, le mois, le jour, l'heure ou la minute. Lorsque l'horodatage
contient une plage horaire telle que "15:30-16:30", la modification de la
première heure décale également la seconde, décalant ainsi le bloc horaire
d'une longueur constante. Pour modifier la longueur, il faut modifier la
deuxième heure. Notez que si le point se trouve dans un titre et non dans un
horodatage, ces mêmes touches modifient la priorité d'un élément (voir
Section 5.4 [Priorités], page 56). Les liaisons de touches entrent également
en conflit avec la sélection par majuscule et les modes associés (voir
Section 17.14.2 [Conflits], page 257).
C-c C-y (org-evaluate-time-range)
Évaluer un intervalle de temps en calculant la différence entre le début et la
fin. Avec un argument préfixe, insérer le résultat après l'intervalle de temps
(dans un tableau : dans la colonne suivante).

8.2.1 L'invite date/heure


Lorsque le mode Org demande une date/heure, la valeur par défaut est affichée dans le
format de date/heure par défaut, et l'invite semble donc demander un format spécifique.
En réalité, il accepte les informations relatives à la date et à l'heure sous différents
formats. En règle générale, les informations doivent commencer au début de la chaîne.
Le mode Org trouve toutes les informations qui s'y trouvent et dérive celles que
vous n'avez pas spécifiées de la date et de l'heure par défaut. La valeur par défaut est
généralement la date et l'heure actuelles, mais lors de la modification d'un horodatage
existant, ou lors de l'entrée du deuxième horodatage d'une plage, la date et l'heure sont
tirées de l'horodatage dans la mémoire tampon. Lorsque vous remplissez des
informations, le mode Org part du principe que la plupart du temps, vous souhaitez
saisir une date dans le futur : si vous omettez le mois/l'année et que le jour/mois
donné est antérieur à aujourd'hui, le mode Org part du principe que vous voulez saisir
une date future3 . Si la date a été automatiquement décalée dans le futur, l'invite
temporelle l'indique par "(=>F)".
Par exemple, supposons que nous sommes aujourd'hui le 13 juin 2006. Voici
comment les différentes entrées sont interprétées, les éléments remplis par le mode Org
sont en gras.
'3-2-5' ⇒ 2003-02-05
'2/5/3' ⇒ 2003-02-05
' 14'� 2006-06-14
' 12'� 2006-07-12
'2/5'� 2007-02-05
'Fri '⇒ vendredi le plus proche (date par défaut ou ultérieure)
sep 15'⇒ 2006-09-15
'feb 15'� 2007-02-15
'sep 12 9' ⇒ 2009-09-12
Chapitre 8 : Dates et heures 13
6
3
Voir la variable org-read-date-prefer-future. Vous pouvez donner à cette variable la valeur du
symbole time pour faire en sorte qu'un moment antérieur à aujourd'hui reporte la date à demain.
Chapitre 8 : Dates et heures 13
7

'12:45' � 2006-06-13 12:45


22 sept 0: 34'� 2006-09-22 0:34
'w4' ⇒ Semaine ISO pour l'année en cours 2006
2012 w4 fri'⇒ Vendredi de la semaine ISO 4 en
2012 "2012-w04-5 ⇒ Idem que ci-dessus
En outre, vous pouvez spécifier une date relative en indiquant, en premier lieu, un
signe plus/moins, un nombre et une lettre - "h", "d", "w", "m" ou "y" - pour indiquer un
changement en heures, jours, semaines, mois ou années. Avec "h", la date est relative à
l'heure actuelle, avec les autres lettres et un simple plus ou moins, la date est relative à
aujourd'hui à 00:00. Avec un double plus ou moins, la date est relative à la date par
défaut. Si, au lieu d'une seule lettre, vous utilisez l'abréviation du nom du jour, la date est
le Nième jour de ce type, par exemple :
'+0' ⇒ aujourd'hui
'.' ⇒ aujourd'hui
'+2h' ⇒ deux heures à partir
d'aujourd'hui "+4d ⇒ quatre
jours à partir d'aujourd'hui "+4
⇒ idem +4d
'+2w' ⇒ deux semaines à partir
d'aujourd'hui "++5 ⇒ cinq jours à
partir de la date par défaut '+2tue '⇒
deuxième mardi à partir d'aujourd'hui
La fonction comprend les abréviations anglaises des mois et des jours de la semaine.
Si vous souhaitez utiliser des noms non abrégés et/ou d'autres langues, configurez les
variables parse-time-months et parse-time-weekdays.
Toutes les dates ne peuvent pas être représentées dans une implémentation Emacs
donnée. Par défaut, le mode Org force les dates dans la plage de compatibilité 1970-
2037 qui fonctionne sur toutes les implémentations d'Emacs. Si vous voulez utiliser des
dates en dehors de cette plage, lisez la docstring de la variable org-read-date-force-
compatible-dates.
Vous pouvez spécifier un intervalle de temps en indiquant une heure de début et une
heure de fin ou en indiquant une heure de début et une durée (au format HH:MM).
Utilisez un ou deux tirets comme séparateur dans le premier cas et utilisez '+' comme
séparateur dans le second, par exemple :
11h00-13h15" ⇒ 11h00-13h15
11h-13h15 ⇒ comme ci-
dessus "11h-13h15" ⇒ comme ci-
dessus "11h+2h15 ⇒ comme ci-
dessus
Parallèlement à l'invite du minibuffer, un calendrier apparaît à l'écran4 . Lorsque vous
quittez l'invite de date, soit en cliquant sur une date dans le calendrier, soit en appuyant
sur RET, la date sélectionnée dans le calendrier est combinée avec les informations
saisies à l'invite. Vous pouvez contrôler entièrement le calendrier à partir du minibuffer :
RET Choisir la date à un point du calendrier.
souris-1 Sélectionner la date en cliquant dessus.
S-DROIT Un jour de plus.
S-LEFT Un jour en arrière.
S-DOWN Une semaine avant.
S-UP Une semaine en arrière.
Chapitre 8 : Dates et heures 13
8
4
Si vous n'avez pas besoin du calendrier, configurez la variable org-popup-calendar-for-date-prompt.
Chapitre 8 : Dates et heures 13
9

M-S-RIGHT Un mois à l'avance.


M-S-LEFT Un mois en arrière.
> Fait défiler le calendrier d'un mois.
< Fait reculer le calendrier d'un mois.
M-v Fait défiler le calendrier de 3 mois en avant.
C-v Faire défiler le calendrier vers l'arrière de 3 mois.
C-. Sélectionner la date du jour5
Les actions de l'invite date/heure peuvent sembler complexes, mais je vous assure
qu'elles vous seront familières et que vous commencerez à être agacé par pratiquement
toutes les autres façons d'entrer une date/heure. Pour vous aider à comprendre ce qui
se passe, l'interprétation actuelle de votre saisie est affichée en direct dans le minibuffer6
.

8.2.2 Format d'heure personnalisé


Le mode Org utilise la notation ISO standard pour les dates et les heures, telle qu'elle
est définie dans la norme ISO 8601. Si vous ne pouvez pas vous y habituer et que vous
avez besoin d'une autre représentation de la date et de l'heure pour vous satisfaire,
vous pouvez l'obtenir en personnalisant les variables org-display-custom-times et
org-time-stamp-custom-formats.
C-c C-x C-t (org-toggle-time-stamp-overlays)
Permet d'alterner l'affichage des formats personnalisés pour les dates et les heures.
Le mode Org a besoin du format par défaut pour la numérisation, de sorte que le format
date/heure personnalisé ne remplace pas le format par défaut. Le format personnalisé de
la date et de l'heure ne remplace donc pas le format par défaut, mais il est superposé au
format par défaut à l'aide des propriétés du texte. Les conséquences sont les suivantes :
• Il n'est plus possible de placer un point sur un horodatage, mais seulement avant ou après.
• Les touches S-UP et S-DOWN ne peuvent plus être utilisées pour ajuster chaque
composant d'un horodatage. Si le point se trouve au début du timbre, les touches S-
UP et S-DOWN modifient le timbre d'un jour, tout comme les touches S-LEFT et S-
RIGHT. À la fin de l'horodatage, l'heure est modifiée d'une minute.
• Si l'horodatage contient une plage d'heures ou un répéteur, ceux-ci ne sont pas
superposés, mais restent dans la mémoire tampon tels qu'ils étaient.
• Lorsque vous supprimez un horodatage caractère par caractère, il ne disparaît de la
mémoire tampon que lorsque tous les caractères (invisibles) appartenant à
l'horodatage ISO ont été supprimés.
• Si le format d'horodatage personnalisé est plus long que le format par défaut et que
vous utilisez des dates dans des tableaux, l'alignement des tableaux sera perturbé.
Si le format personnalisé est plus court, les choses fonctionnent comme prévu.

8.3 Délais et calendrier


Un horodatage peut être précédé de mots-clés spéciaux pour faciliter la planification.
L'horodatage et le mot-clé doivent être placés immédiatement après la tâche à laquelle
ils se réfèrent.

5
Vous pouvez également utiliser la commande de calendrier . pour passer à la date du jour,
mais si vous insérez une heure dans votre horodatage, . insérera alors un point après l'heure.
En revanche, la commande C-. permet toujours de passer à la date du jour.
Chapitre 8 : Dates et heures 14
6
Si cela vous gêne, désactivez l'affichage avec org-read-date-display-live.
0
Chapitre 8 : Dates et heures 14
1

DATE
LIMITE Signification : la tâche - très probablement un élément TODO, mais pas
nécessairement - est censée être terminée à cette date.
Le jour de l'échéance, la tâche est inscrite dans l'agenda. En outre, l'agenda
du jour comporte un avertissement concernant l'approche ou le
dépassement de l'échéance, qui commence org-deadline-warning-jours
avant la date d'échéance et se poursuit jusqu'à ce que l'entrée soit marquée
comme étant terminée. Voici un exemple :
*** TODO écrire un article sur la Terre pour le Guide
DEADLINE : <2004-02-29 Sun>
Le rédacteur en chef est [[bbdb:Ford Prefect]]
Vous pouvez spécifier un délai d'avertissement différent pour une échéance
spécifique en utilisant la syntaxe suivante. Voici un exemple avec une
période d'avertissement de 5 jours 'DEADLINE : <2004-02-29 Sun -5d>'.
Cet avertissement est désactivé si la tâche est planifiée et que vous attribuez
la valeur t à org-agenda-skip-deadline-prewarning-if- scheduled.
"PROGRAMMÉ
Signification : vous prévoyez de commencer à travailler sur cette tâche à la date indiquée.
Le titre est répertorié sous la date donnée7 . En outre, un rappel indiquant
que la date prévue est passée est présent dans la compilation pour aujourd'hui,
jusqu'à ce que l'entrée soit marquée comme effectuée, c'est-à-dire que la
tâche est automatiquement transmise jusqu'à ce qu'elle soit terminée.
*** TODO Appeler Trillian pour un rendez-vous la veille du Nouvel An.
PROGRAMME : <2004-12-25 sam>
Si vous souhaitez retarder l'affichage de cette tâche dans l'agenda, utilisez 'SCHEDULED' :
<2004-12-25 Sat -2d>' : la tâche est toujours programmée le 25 mais
apparaîtra deux jours plus tard. Si la tâche contient un répéteur, le délai est
considéré comme affectant toutes les occurrences ; si vous souhaitez que le
délai n'affecte que la première occurrence programmée de la tâche, utilisez
'--2d' à la place. Voir org-scheduled-delay-days et org-agenda-skip-
scheduled-delay-if-deadline pour plus de détails sur la façon de
contrôler ceci globalement ou par agenda.
Important : la programmation d'un élément en mode Org ne doit
pas être comprise de la même manière que la programmation
d'une réunion. Fixer une date pour une réunion n'est qu'un simple
rendez-vous, vous devriez marquer cette entrée avec un simple
horodatage, pour que cet élément s'affiche à la date à laquelle il
s'applique. Il s'agit d'une erreur de compréhension fréquente de
la part des utilisateurs d'Org. En mode Org, planifier signifie fixer
une date à laquelle vous voulez commencer à travailler sur un
élément d'action.

Vous pouvez utiliser les horodatages avec les répétiteurs dans les entrées de
programmation et d'échéance. Le mode Org émet des avertissements précoces et
tardifs en partant du principe que l'horodatage représente l'instance la plus proche du
répétiteur. Toutefois, l'utilisation d'expressions d'agenda telles que
<%%(journal-float t 42)>
Chapitre 8 : Dates et heures 14
2

7
Il sera toujours répertorié à cette date après avoir été marqué comme terminé. Si cela ne vous convient pas, définissez la
variable
org-agenda-skip-scheduled-if-done.
Chapitre 8 : Dates et heures 14
3

Le mode Org ne connaît pas suffisamment les aspects internes de chaque fonction pour
émettre des avertissements précoces et tardifs. Le mode Org n'en sait pas assez sur les
aspects internes de chaque fonction pour émettre des avertissements précoces et
tardifs. Cependant, il affiche chaque jour l'élément pour lequel l'entrée de l'expression
correspond.

8.3.1 Insertion de délais ou de calendriers


Les commandes suivantes permettent d'insérer rapidement une échéance ou de planifier un élément :8
C-c C-d (org-deadline)
Insérer le mot-clé "DEADLINE" accompagné d'un cachet. L'insertion se fait
dans la ligne qui suit directement le titre. Supprimer l'horodatage "CLOSED".
Lorsqu'il est appelé avec un argument préfixe, il supprime également tout
délai existant dans l'entrée. En fonction de la variable org-log-redeadline,
prendre note de la modification d'une date limite existante9 .
C-c C-s (org-schedule)
Insérer le mot-clé "SCHEDULED" accompagné d'un cachet. L'insertion se fait
dans la ligne qui suit directement le titre. Supprimer l'horodatage 'CLOSED'.
Lorsqu'il est appelé avec un argument préfixe, il supprime également la date
d'ordonnancement de l'entrée. En fonction de la variable org-log-
reschedule, prendre note de la modification d'une heure d'ordonnancement
existante10 .
C-c / d (org-check-deadlines)
Créer un arbre clairsemé avec toutes les échéances qui sont dépassées ou
qui arriveront à échéance dans les org-deadline-warning-days. Avec le
préfixe C-u, afficher toutes les échéances du fichier. Avec un préfixe
numérique, vérifier le nombre de jours. Par exemple, C-1 C-c / d affiche toutes
les échéances de demain.
C-c / b (org-check-before-date)
Arbre clair pour les échéances et les éléments programmés avant une date donnée.
C-c / a (org-check-after-date)
Arbre clair pour les échéances et les éléments programmés après une date donnée.
Notez que org-schedule et org-deadline permettent de fixer la date en indiquant
un temps relatif, par exemple, '+1d' fixe la date au jour suivant celui d'aujourd'hui, et '--
1w' fixe la date à la semaine précédente avant l'horodatage actuel.

8.3.2 Tâches répétées


Certaines tâches doivent être répétées encore et encore. Le mode Org permet
d'organiser ces tâches à l'aide d'un répétiteur dans un format "DEADLINE", "SCHEDULED",
ou de simples horodatages11 . Dans l'exemple suivant :
** TODO Payer le loyer
DATE LIMITE : <2005-10-01 Sat +1m>
8
Les dates "PROGRAMME" et "DÉLAI" sont insérées sur la ligne située juste en dessous du titre. Ne
mettez pas de texte entre cette ligne et le titre.
9
Note les correspondant STARTUP correspondantes 'logredeadline',
'lognoteredeadline', et "nologredeadline".
10
Note les correspondant STARTUP correspondantes 'logreschedule',
'lognotereschedule', et "nologreschedule".
11
Org ne répète pas les horodatages inactifs. Voir la section 8.1 [Horodatage], page 76.
Chapitre 8 : Dates et heures 14
4

le "+1m" est un répéteur ; l'interprétation voulue est que la tâche a une échéance le
"<2005-10-01>" et se répète tous les (un) mois à partir de cette date. Vous pouvez
utiliser des témoins de répétition annuels, mensuels, hebdomadaires, quotidiens et
horaires en utilisant les lettres "y", "m", "w", "d" et "h". Si vous avez besoin à la fois
d'une répétition et d'une période d'avertissement spéciale dans une entrée de délai, la
répétition doit être placée en premier et la période d'avertissement en dernier.
DATE LIMITE : <2005-10-01 sam +1m -3d>
Les échéances et les éléments planifiés produisent des entrées dans l'agenda lorsqu'ils
sont en retard, il est donc important de pouvoir marquer un tel élément comme étant fait
une fois que vous l'avez fait. Lorsque vous marquez un "DEADLINE" ou un "SCHEDULED"
avec le mot-clé TODO "DONE", il ne produit plus d'entrées dans l'agenda. Le problème
est que la prochaine occurrence de l'entrée répétée ne sera pas non plus active. Le
mode Org gère ce problème de la manière suivante : lorsque vous essayez de marquer
une telle entrée comme terminée, en utilisant C-c C-t, il décale la date de base de
l'horodatage répété de l'intervalle du répétiteur, et remet immédiatement l'état de l'entrée
à TODO12 . Dans l'exemple ci-dessus, le fait de mettre l'état à "FAIT" modifierait en fait la
date comme suit :
** TODO Payer le loyer
DATE LIMITE : <2005-11-01 Mar +1m>
Pour marquer une tâche avec un répétiteur comme étant FAITE, utilisez C-- 1 C-c
C-t, c'est-à-dire org-todo avec un préfixe numérique de '-1'.
Un horodatage (13 ) est ajouté sous le délai, afin de garder une trace du fait que vous
avez effectivement agi lors de la précédente occurrence de ce délai.
En raison du décalage de la date de base, cette entrée n'est plus visible dans
l'agenda lors de la vérification des dates passées, mais toutes les instances futures le
seront.
Avec le cookie "+1m", le décalage de la date est toujours d'un mois exactement. Ainsi,
si vous n'avez pas payé le loyer depuis trois mois, le fait de marquer cette entrée "FAIT"
la maintient comme une échéance en retard. En fonction de la tâche, ce n'est peut-être
pas la meilleure façon de la gérer. Par exemple, si vous avez oublié d'appeler votre père
pendant trois semaines, il n'est pas judicieux de l'appeler trois fois en une seule journée
pour rattraper le coup. Enfin, certaines tâches, comme le changement de piles, doivent
toujours être répétées un certain temps après la dernière fois que vous les avez
effectuées. Pour ces tâches, le mode Org dispose de répétiteurs spéciaux '++' et '.+'. En
voici un exemple :
** TODO Call Father
DATE LIMITE : <2008-02-10 Sun ++1w>
Le fait de marquer "FAIT" décale la date d'au moins une
semaine, mais aussi d'autant de semaines qu'il est nécessaire
pour que cette date soit reportée dans le futur.
Cependant, il reste un dimanche, même si vous avez appelé et
indiqué qu'il avait été fait le samedi.

** TODO Vider la poubelle de la cuisine


DATE LIMITE : <2008-02-08 Fri 20:00 ++1d>
Le fait de marquer "FAIT" décale la date d'au moins un jour.
12
En fait, l'état cible est tiré, dans cette séquence, de la propriété 'REPEAT_TO_STATE', de la variable
Chapitre 8 : Dates et heures 14
5
org-todo-repeat-to-state si c'est une chaîne, de l'état TODO précédent si org-todo-repeat-to-
state est t, ou du premier état de la séquence d'états TODO.
13
Vous pouvez changer cela en utilisant l'option org-log-repeat, ou les options 'STARTUP' 'logrepeat',
'lognoterepeat', et 'nologrepeat'. Avec l'option 'lognoterepeat', une note vous sera également
demandée.
Chapitre 8 : Dates et heures 14
6

d'autant de jours qu'il faut pour que l'horodatage se situe dans


le futur. Étant donné que l'horodatage comporte une heure, la
prochaine échéance dans le futur se situera à la date
d'aujourd'hui si vous terminez la tâche avant 20h00.

** TODO Vérifier les piles des détecteurs de


fumée DEADLINE : <2005-11-01 Tue .+1m>
Le fait de marquer "FAIT" déplace la date à un mois après aujourd'hui.

** TODO Laver mes mains


DATE LIMITE : <2019-04-05 08:00 Fri .+1h>
Le fait de marquer "FAIT" déplace la date à exactement une heure de maintenant.
Il se peut que vous disposiez à la fois d'informations relatives à la planification et à
l'échéance pour une tâche spécifique. Si le répétiteur n'est défini que pour les
informations de planification, vous souhaitez probablement que le répétiteur soit ignoré
après l'échéance. Dans ce cas, définissez la variable org-agenda-skip-scheduled-if-
deadline-is-shown à repeated-after-deadline. Cependant, toute information de
planification sans répétiteur n'est plus pertinente une fois la tâche terminée, et est donc
supprimée lors de la répétition de la tâche. Si vous souhaitez que les informations
relatives à la planification et à l'échéance soient répétées après le même intervalle,
définissez le même répéteur pour les deux horodatages.
Une alternative à l'utilisation d'un répéteur est de créer un certain nombre de copies
d'un sous-arbre de tâches, avec des dates décalées dans chaque copie. La commande
C-c C-x c a été créée dans ce but ; elle est décrite à la section 2.4 [Édition de la structure],
page 9.

8.4 Horodatage du temps de travail


Le mode Org vous permet de chronométrer le temps que vous passez sur des tâches
spécifiques d'un projet. Lorsque vous commencez à travailler sur un élément, vous
pouvez démarrer l'horloge. Lorsque vous arrêtez de travailler sur cette tâche, ou lorsque
vous marquez que la tâche est terminée, l'horloge est arrêtée et l'intervalle de temps
correspondant est enregistré. Le logiciel calcule également le temps total passé sur
chaque sous-arbre14 d'un projet. Il garde en mémoire l'historique des tâches récemment
chronométrées, ce qui vous permet de passer rapidement d'une tâche à l'autre en
absorbant votre temps.
Pour sauvegarder l'historique de l'horloge à travers les sessions Emacs, utilisez :
(setq org-clock-persist
'history) (org-clock-persistence-
insinuate)
Lorsque vous entrez dans une nouvelle tâche après avoir repris Emacs, l'horloge
incomplète15 est récupérée (voir [Résoudre les temps morts (1)], page 89) et on vous
demande ce qu'il faut en faire.

8.4.1 Commandes d'horloge


C-c C-x C-i (org-clock-in)
Démarrer l'horloge de l'élément en cours (clock-in). Cette opération consiste
à insérer le mot-clé "CLOCK" accompagné d'un horodatage. S'il ne s'agit pas
Chapitre 8 : Dates et heures 14
de la première mise à l'heure de cet élément, le mot-clé 7

14 L'
horloge ne fonctionne que si tous les titres sont indentés avec moins de 30 étoiles. Il s'agit d'une
limitation codée en dur de lmax dans org-clock-sum.
15
Pour reprendre l'horloge en supposant que vous avez travaillé sur cette tâche en dehors d'Emacs, utilisez
'(setq org-clock-persist t)'.
Chapitre 8 : Dates et heures 14
8

plusieurs lignes 'CLOCK' sont regroupées dans un tiroir 'LOGBOOK' (voir aussi la
variable org-clock-into-drawer). Vous pouvez également annuler la
configuration de cette variable pour une sous-arborescence en définissant
une propriété 'CLOCK_INTO_DRAWER' ou 'LOG_INTO_DRAWER'. Lorsqu'il est
appelé avec un argument préfixe C-u, il sélectionne la tâche dans une liste
de tâches récemment cadencées. Avec deux préfixes C-u C-u, la tâche est
cadencée au point et marquée comme tâche par défaut ; la tâche par défaut
est toujours disponible avec la lettre d lors de la sélection d'une tâche de
cadencement. Avec trois préfixes C-u C-u C-u, forcer le cadencement continu
en démarrant l'horloge lorsque la dernière horloge s'est arrêtée.
Pendant que l'horloge fonctionne, Org affiche le temps d'horloge actuel dans
la ligne de mode, ainsi que le titre de la tâche. Le temps d'horloge affiché est
tout le temps d'horloge jamais enregistré pour cette tâche et ses enfants. Si
la tâche a une estimation de l'effort (voir Section 8.5 [Estimation de l'effort],
page 91), la ligne de mode affiche le temps de pointage actuel par rapport à
cette estimation16 . Si la tâche est répétitive (voir Section 8.3.2 [Tâches
répétées], page 82), elle n'affiche que le temps écoulé depuis la dernière
réinitialisation de la tâche17 . Vous pouvez exercer un plus grand contrôle sur
l'affichage de l'heure avec la propriété 'CLOCK_MODELINE_TOTAL'. Elle peut
prendre les valeurs 'current' pour n'afficher que l'instance d'horloge
actuelle, 'today' pour afficher tout le temps enregistré sur cette tâche
aujourd'hui - voir aussi la variable org-extend-today-until, all pour
inclure tout le temps, ou auto qui est la valeur par défaut18 . En cliquant
avec la souris sur l'entrée de la ligne de mode, un menu d'options de
pointage apparaît.
C-c C-x C-o (blocage de l'org)
Arrêter l'horloge (clock-out). Cette opération insère un autre horodatage à
l'endroit où l'horloge a été démarrée pour la dernière fois. Elle calcule aussi
directement l'heure résultante et l'insère après l'intervalle de temps sous la
forme '=>HH:MM'. Voir la variable org-log-note- clock-out pour la
possibilité d'enregistrer une note supplémentaire avec l'horodatage clock-
out19 .
C-c C-x C-x (org-clock-in-last)
Re-cadence la dernière tâche cadencée. Avec un préfixe C-u, sélectionner la
tâche dans l'historique de l'horloge. Avec deux préfixes C-u, forcer une
horloge continue en démarrant l'horloge lorsque la dernière horloge s'est
arrêtée.
C-c C-x C-e (org-clock-modify-effort-estimate)
Mettre à jour l'estimation de l'effort pour la tâche d'horloge en cours.
C-c C-c ou C-c C-y (org-evaluate-time-range)
Recalculer l'intervalle de temps après avoir modifié l'un des horodateurs.
Cette opération n'est nécessaire que si vous modifiez directement les
horodateurs. Si vous les modifiez à l'aide des touches S-<curseur>, la mise
à jour est automatique.
C-S-UP (org-clock-timestamps-up)
C-S-DOWN (org-clock-timestamps-down)
Sur les lignes d'enregistrement CLOCK, augmentez/diminuez les deux
horodatages de manière à ce que la durée de l'horloge conserve la même
valeur.
Chapitre 8 : Dates et heures 14
9
16
Pour ajouter une estimation de l'effort "à la volée", ajoutez une fonction à org-clock-in-prepare-hook.
17
La dernière réinitialisation de la tâche est enregistrée par la propriété "LAST_REPEAT".
18
Voir aussi la variable org-clock-mode-line-total.
19
Le paramètre correspondant dans la mémoire tampon est : '#+STARTUP : lognoteclock-out'.
Chapitre 8 : Dates et heures 15
0

S-M-UP (org-timestamp-up)
S-M-DOWN (org-timestamp-down)
Sur les lignes de journal "CLOCK", augmentez/diminuez l'horodatage au point
et celui de l'horodatage précédent ou suivant de la même durée. Par
exemple, si vous appuyez sur S-M-UP pour augmenter l'horodatage d'une
horloge de sortie de cinq minutes, l'horodatage d'entrée de l'horloge suivante
est augmenté de cinq minutes.
C-c C-t (org-todo)
Changer l'état TODO d'un élément en DONE arrête automatiquement
l'horloge si elle est en cours d'exécution dans ce même élément.
C-c C-x C-q (annulation de l'horloge)
Annule l'horloge en cours. Cette fonction est utile si une horloge a été lancée
par erreur ou si vous avez fini par travailler sur autre chose.
C-c C-x C-j (org-clock-goto)
Sauter à la tête de la tâche actuellement cadencée. Avec un argument
préfixe C-u, sélectionner la tâche cible dans une liste de tâches récemment
pointées.
C-c C-x C-d (affichage de l'horloge)
Affiche des résumés temporels pour chaque sous-arbre dans la mémoire
tampon actuelle. Cela permet d'afficher des superpositions à la fin de
chaque titre, montrant le temps total enregistré sous ce titre, y compris le
temps de tous les sous-titres. Vous pouvez utiliser le cycle de visibilité pour
étudier l'arbre, mais les surimpressions disparaissent lorsque vous changez
de tampon (voir la variable org-remove-highlights-with-change) ou
lorsque vous appuyez sur C-c C-c.
La touche l peut être utilisée dans l'agenda (voir section 11.3.1 [Agenda
hebdomadaire/journalier], page 111) pour indiquer les tâches qui ont été travaillées ou
clôturées au cours d'une journée.
Important : les options org-clock-out et org-clock-in-last peuvent avoir un
raccourci clavier global et ne modifient pas la disposition de la fenêtre.

8.4.2 La table de l'horloge


Le mode Org peut produire des rapports assez complexes basés sur les informations de
pointage. Un tel rapport est appelé tableau d'horloge, parce qu'il est formaté comme un
ou plusieurs tableaux Org.
org-clock-report
Insérer ou mettre à jour une table d'horloge. Lorsqu'il est appelé avec un
argument préfixe, il passe au premier tableau d'horloge du document en
cours et le met à jour. La table d'horloge inclut les arbres archivés.
Cette commande peut être invoquée en appelant org-dynamic-block-
insert-dblock (C-c C-x x) et en sélectionnant "clocktable" (voir Section
A.6 [Blocs dynamiques], page 270).
C-c C-c ou C-c C-x C-u (org-dblock-update)
Mettre à jour le bloc dynamique au point. Le point doit se trouver dans la
ligne "BEGIN" du bloc dynamique.
C-u C-c C-x C-u
Chapitre 8 : Dates et heures 15
Mettre à jour tous les blocs dynamiques (voir section A.6 [Blocs 1
dynamiques], page 270). Cette fonction est utile si vous avez plusieurs blocs
de table d'horloge dans une mémoire tampon.
Chapitre 8 : Dates et heures 15
2

S-GAUCHE
S-RIGHT (org-clocktable-try-shift)
Décale l'intervalle ':block' actuel et met à jour la table. Le point doit se
trouver dans la ligne '#+BEGIN : clocktable' pour cette commande. Si
':block' est 'today', il est décalé à 'today-1', etc.
Voici un exemple de la trame d'une table d'horloge telle qu'elle est insérée dans la mémoire tampon par
org-clock-report :
#+BEGIN : clocktable :maxlevel 2 :emphasize nil :scope file
#+END :
La ligne '#+BEGIN' contient des options permettant de définir la portée, la structure et
le formatage du rapport. Les valeurs par défaut de toutes ces options peuvent être
configurées dans la variable org-clocktable- defaults.
Tout d'abord, des options permettent de déterminer quelles entrées d'horloge doivent être sélectionnées
:
':maxlevel'
Profondeur maximale du niveau jusqu'à laquelle les heures sont indiquées dans le tableau.
Horloges à des niveaux plus profonds
sont additionnés dans le niveau supérieur.
':scope' Le champ d'application à prendre en compte. Il peut s'agir de l'un des éléments suivants :
'nil' le tampon actuel ou la région rétrécie
fichier le tampon actuel complet
'subtree' le sous-arbre dans lequel se trouve la table d'horloge
arbreN l'arbre environnant de niveau N, par exemple "arbre3".
arbre" l'arbre environnant de niveau 1
agenda tous les fichiers de l'agenda
'("fichier" ...)' analyse ces fichiers
'FONCTION' analyse les fichiers retournés par l'appel à FUNCTION
sans argument 'file-with-archives' (fichier avec archives) fichier
actuel et ses archives
Agenda-with-archives Tous les fichiers de l'agenda, y compris les archives.
':bloc' Le bloc de temps à prendre en compte. Ce bloc est spécifié soit de manière
absolue, soit de manière relative à l'heure actuelle et peut prendre l'un de
ces formats :
'2007-12-31'
2007-12"
"2007-
W50"
"2007-Q2"
"2007
aujourd'hui", "hier", "aujourd'hui-N"
"cette semaine", "cette dernière
semaine", "cette semaine-N" "ce mois",
"ce dernier mois", "ce mois-N" "cette
année", "cette dernière année", "cette
année-N" "jusqu'à présent".20
Lorsque cette option n'est pas définie, Org revient à la valeur de org-clock-
display- default-range, qui est par défaut l'année en cours.
Utilisez S-LEFT ou S-RIGHT pour décaler l'intervalle de temps.
Chapitre 8 : Dates et heures 15
3
20
Lors de l'utilisation de :step, untilnow commence au début de l'année 2003, et non au début du temps.
Chapitre 8 : Dates et heures 15
4

' :tstart' Chaîne de temps spécifiant quand commencer à considérer les temps. Des
temps relatifs comme '"<-2w>"' peuvent également être utilisés. Voir Section
11.3.3 [Correspondance des balises et des propriétés], page 115 pour la
syntaxe des temps relatifs.
':tend' Chaîne de temps spécifiant quand cesser de prendre en compte les temps.
Des temps relatifs comme '"<now>"' peuvent également être utilisés. Voir
Section 11.3.3 [Correspondance des balises et des propriétés], page 115
pour la syntaxe des temps relatifs.
':wstart' Le jour de la semaine qui commence. La valeur par défaut
est 1 pour le lundi. ':mstart' Le jour du début du mois. La valeur par
défaut est 1 pour le premier.
':step' Indique 'day', 'week', 'semimonth', 'month', 'quarter', ou 'year' pour diviser le
tableau en morceaux. Pour l'utiliser, il faut soit ':block', soit ':tstart' et
':tend'.
':stepskip0'
Si elle est non nulle, ne pas afficher les étapes dont la durée est nulle.
':fileskip0'
S'il est non nul, ne pas afficher les sections de tableau des fichiers qui n'ont pas contribué.
':match' Une correspondance de balises pour sélectionner les entrées qui devraient
contribuer. Voir Section 11.3.3 [Correspondance des balises et des
propriétés], page 115 pour la syntaxe de correspondance.
Il existe ensuite des options qui déterminent le formatage du tableau. Ces options
sont interprétées par la fonction org-clocktable-write-default, mais vous pouvez
spécifier votre propre fonction en utilisant le paramètre ':formatter'.
':souligner'
Si elle est non nulle, elle met l'accent sur les éléments de niveau 1 et de niveau 2.
':lang' Langue21 à utiliser pour les cellules descriptives
telles que "Task". ':link' Relier les titres des éléments du
tableau à leurs origines.
':narrow' Un nombre entier pour limiter la largeur de la colonne des titres dans le
tableau Org. Si vous l'écrivez comme '50!', le titre sera également raccourci
à l'exportation.
':indent' Indenter chaque champ du titre en fonction de
son niveau. ':filetitle'
Afficher le titre dans la colonne du fichier si le fichier a un '#+titre'.
':hidefiles'
Masquer la colonne du fichier lorsque plusieurs fichiers sont utilisés pour produire le tableau.
':tcolumns'
Nombre de colonnes à utiliser pour les temps. Si ce nombre est inférieur à
':maxlevel', les niveaux inférieurs sont regroupés en une seule colonne.
':level' Faut-il inclure une colonne de numéro de niveau ?
Chapitre 8 : Dates et heures 15
5
':sort' Une cellule cons contenant la colonne à trier et un type de tri. Par exemple, ':sort (1 .
?a)' trie la première colonne par ordre alphabétique.
21 Les
termes linguistiques peuvent être définis à l'aide de la variable org-clock-clocktable-language-setup.
Chapitre 8 : Dates et heures 15
6

':compact'
Abréviation de ':level nil :indent t :narrow 40 ! :tcolumns 1'. Tous ces
éléments sont écrasés, sauf s'il y a un ':narrow' explicite.
':timestamp'
Un horodatage de l'entrée, s'il est disponible. Recherchez les propriétés
spéciales "SCHEDULED", "DEADLINE", "TIMESTAMP" et "TIMESTAMP_IA" (voir
section 7.2 [Propriétés spéciales], page 69), dans cet ordre.
':tags' Lorsque ce drapeau est non nul, les tags du titre sont
affichés. ':properties'
Liste des propriétés figurant dans le tableau. Chaque propriété a sa propre colonne.
':inherit-props'
Lorsque cet indicateur est non nul, les valeurs de ':properties' sont héritées.
':formule'
Contenu d'un mot-clé "TBLFM" à ajouter et à évaluer. Dans un cas particulier,
':formula %' ajoute une colonne avec % de temps. Si vous ne spécifiez pas
de formule ici, toute formule existante sous le tableau de l'horloge survit aux
mises à jour et est évaluée.
':formatter'
Une fonction pour formater les données d'horloge et les insérer dans le tampon.
Pour obtenir un résumé de l'horloge de l'arbre actuel de niveau 1, pour le jour en
cours, vous pouvez écrire : #+BEGIN : clocktable :maxlevel 2 :block today
:scope tree1 :link t #+END :
Pour utiliser un intervalle de temps spécifique, vous pouvez écrire22
#+BEGIN : clocktable :tstart "<2006-08-10 Thu 10:00>"
:tend "<2006-08-10 Thu 12:00>"
#+END :
Un intervalle commençant il y a une semaine et se terminant
maintenant pourrait être écrit comme #+BEGIN : clocktable
:tstart "<-1w>" :tend "<now>" #+END :
Un résumé de la sous-arborescence actuelle avec % de temps serait
#+BEGIN : clocktable :scope subtree :link t :formula
% #+END :
Une représentation horizontale compacte de tout ce qui a été enregistré au cours de la semaine dernière
serait la suivante
#+BEGIN : clocktable :scope agenda :block lastweek :compact t
#+END :

8.4.3 Résoudre les problèmes de temps morts et d'horloge continue


22
Notez que tous les paramètres doivent être spécifiés sur une seule ligne - la ligne est interrompue ici
uniquement pour tenir dans le manuel.
Chapitre 8 : Dates et heures 15
7

Résoudre les temps morts


Si vous pointez sur un élément de travail, puis quittez votre ordinateur - peut-être pour
répondre à un appel téléphonique - vous devez souvent "résoudre" le temps d'absence
en le soustrayant de l'horloge en cours ou en l'appliquant à une autre horloge.
En personnalisant la variable org-clock-idle-time avec un nombre entier, comme
10 ou 15, Emacs peut vous alerter lorsque vous revenez à votre ordinateur après avoir
été inactif pendant ce nombre de minutes23 , et vous demander ce que vous voulez faire
de ce temps d'inactivité. Une question vous attendra à votre retour, indiquant combien
de temps d'inactivité s'est écoulé, constamment mise à jour avec la quantité actuelle,
ainsi qu'un ensemble de choix pour corriger l'écart :
k Pour conserver tout ou partie des minutes et rester à l'heure, appuyez sur k.
Org vous demande combien de minutes conserver. Appuyez sur RET pour
les conserver toutes, sans rien changer, ou entrez un nombre pour
conserver ce nombre de minutes.
K Si vous utilisez la touche majuscule et appuyez sur K, le système conserve le
nombre de minutes que vous avez demandé et quitte immédiatement cette
tâche. Si vous conservez toutes les minutes, cela revient à quitter la tâche
en cours.
s Pour ne conserver aucune minute, utilisez s pour soustraire toutes les
heures d'absence de l'horloge, puis enregistrez à nouveau à partir du
moment où vous êtes revenu.
S Pour ne conserver aucune minute et pointer au début de la période
d'absence, utilisez la touche majuscule et appuyez sur S. Rappelez-vous que
l'utilisation de la touche majuscule vous fait toujours pointer au début de la
période d'absence, quelle que soit l'option que vous choisissez.
C Pour annuler complètement l'horloge, utilisez C. Notez que si, au lieu
d'annuler l'horloge, vous soustrayez le temps d'absence et que le résultat est
inférieur à une minute, l'horloge est quand même annulée au lieu
d'encombrer le journal avec une entrée vide.
Que se passe-t-il si vous avez soustrait ces minutes de l'horloge actuelle et que vous
souhaitez les appliquer à une nouvelle horloge ? Il vous suffit de pointer sur n'importe
quelle tâche immédiatement après la soustraction. Org remarquera que vous avez
soustrait du temps "dans les livres", pour ainsi dire, et vous demandera si vous voulez
appliquer ces minutes à la prochaine tâche sur laquelle vous pointerez.
Il existe un autre cas où la magie de la résolution de l'horloge se produit. Supposons
que vous étiez à l'heure et que vous travailliez, et que soudain votre chat a chassé une
souris qui a effrayé un hamster qui s'est écrasé sur le bouton d'alimentation de votre
onduleur ! Vous perdez soudainement tous vos tampons, mais grâce à la sauvegarde
automatique, vous avez toujours vos récents changements de mode Org, y compris
votre dernière horloge.
Si vous redémarrez Emacs et que vous commencez une tâche, Org remarquera que
vous avez une horloge suspendue qui n'a jamais été arrêtée lors de votre dernière
session. En utilisant l'heure de départ de cette horloge comme début de la période non
comptabilisée, Org vous demandera comment vous souhaitez résoudre ce problème. La
logique et le comportement sont identiques à ceux de la gestion des temps morts dus à
l'oisiveté ; il s'agit simplement d'un événement de récupération plutôt que d'un temps
mort défini.
Chapitre 8 : Dates et heures 15
8
Vous pouvez également vérifier à tout moment que tous les fichiers visités par votre
agenda Org ne contiennent pas d'horloges pendantes en utilisant M-x org-resolve-
clocks RET (ou C-c C-x C-z).
23
Sur les ordinateurs utilisant macOS, l'inactivité est basée sur l'inactivité réelle de l'utilisateur, et pas
seulement sur le temps d'inactivité d'Emacs. Pour X11, vous pouvez installer un programme
utilitaire 'x11idle.c', disponible dans le dépôt 'org-contrib/', ou installer le paquet xprintidle et lui
affecter la variable org-clock-x11idle-program-name si vous utilisez Debian, pour obtenir le même
traitement général de l'inactivité. Sur d'autres systèmes, le temps d'inactivité se réfère uniquement au
temps d'inactivité d'Emacs.
Chapitre 8 : Dates et heures 15
9

Horloge continue
Il se peut que vous souhaitiez commencer le cadencement à partir du moment où vous
avez cadencé la tâche précédente. Pour activer cela systématiquement, mettez org-
clock-continuously à non-nil. À chaque fois que vous pointez, Org récupère l'heure
de sortie de la dernière entrée pointée pour cette session, et démarre la nouvelle
horloge à partir de là.
Si vous ne voulez le faire que de temps en temps, utilisez trois arguments préfixes universels avec
org-clock-in et deux C-u C-u avec org-clock-in-last.
Déconnexion automatique après un certain temps d'inactivité
Si vous oubliez souvent de pointer avant d'être inactif et que vous ne voulez pas régler
manuellement le temps d'horloge pour en tenir compte, vous pouvez régler org-clock-
auto-clockout-timer à un certain nombre de secondes et ajouter '(org-clock-auto-
clockout-insinuate)' à votre fichier '.emacs'.
Lorsque l'horloge fonctionne et qu'Emacs est inactif pendant plus de ce nombre de
secondes, l'horloge est automatiquement arrêtée.
Utilisez 'M-x org-clock-toggle-auto-clockout RET' pour activer ou désactiver temporairement cette
fonction.

8.5 Estimation de l'effort


Si vous souhaitez planifier votre travail de manière très détaillée, ou si vous devez
produire des offres avec des estimations de l'effort de travail, vous pouvez assigner des
estimations d'effort à des entrées. Si vous chronométrez également votre travail, vous
pourrez par la suite comparer l'effort planifié avec le temps de travail réel, ce qui
constitue un excellent moyen d'améliorer les estimations de planification.
Les estimations de l'effort sont stockées dans une propriété spéciale "EFFORT".
Plusieurs formats sont pris en charge, tels que '3:12', '1:23:45' ou '1d3h5min' ; voir le
fichier 'org-duration.el' pour des informations plus détaillées sur le format.
Vous pouvez définir l'effort d'une entrée à l'aide des commandes suivantes :
C-c C-x e (org-set-effort)
Fixe l'estimation de l'effort pour l'entrée en cours. Avec un argument préfixe,
elle est fixée à la valeur suivante autorisée - voir ci-dessous. Cette
commande est également accessible depuis l'agenda avec la touche e.
C-c C-x C-e (org-clock-modify-effort-estimate)
Modifier l'estimation de l'effort de l'élément en cours de pointage.
Il est clair que la meilleure façon de travailler avec les estimations de l'effort est d'utiliser
la vue en colonnes (voir Section 7.5 [Vue en colonnes], page 71). Vous devez commencer
par définir des valeurs discrètes pour les estimations de l'effort, ainsi qu'un format
"COLUMNS" qui affiche ces valeurs avec les sommes de l'horloge, si vous souhaitez
chronométrer votre temps. Pour un tampon spécifique, vous pouvez utiliser
#+PROPERTY : Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00
#+COLUMNS : %40ITEM(Tâche) %17Effort(Effort estimé){:} %CLOCKSUM
ou, mieux encore, vous pouvez définir ces valeurs globalement en personnalisant les
variables org-global-properties et org-columns-default-format. En particulier, si
vous souhaitez utiliser cette configuration dans l'agenda, une configuration globale peut
être conseillée.
Pour affecter des estimations à des postes individuels, il faut passer en mode
colonne et utiliser les touches S-DROITE et S-GAUCHE pour modifier la valeur. Les valeurs
Chapitre 8 : Dates et heures 16
que vous saisissez sont immédiatement additionnées dans la hiérarchie. Dans 0la
colonne voisine, les heures chronométrées sont affichées.
Chapitre 8 : Dates et heures 16
1

Si vous passez à l'affichage en colonnes dans l'agenda quotidien/hebdomadaire, la


colonne effort résume l'effort de travail estimé pour chaque jour24 , et vous pouvez l'utiliser
pour trouver de l'espace dans votre emploi du temps. Pour obtenir une vue d'ensemble
de toute la partie de la journée qui est engagée, vous pouvez activer l'option org-
agenda-columns-add-appointments-to-effort-sum. Les rendez-vous d'une journée
qui se déroulent sur un intervalle de temps spécifié sont alors également ajoutés à
l'estimation de la charge de la journée.
Les estimations de l'effort peuvent être utilisées dans le filtrage secondaire de
l'agenda qui est déclenché par la touche / dans l'agenda (voir Section 11.5 [Commandes
de l'agenda], page 123). Si ces estimations sont définies de manière cohérente, deux ou
trois pressions sur la touche permettent de réduire la liste à ce qui correspond à un
créneau horaire disponible.

8.6 Prendre des notes avec un chronomètre relatif


Org propose deux types de minuterie. Il y a un minuteur relatif qui compte à rebours, ce
qui peut être utile pour prendre des notes pendant, par exemple, une réunion ou la
visualisation d'une vidéo. Il existe également un compte à rebours.
Le relatif et le compte à rebours sont lancés par des commandes distinctes.
C-c C-x 0 (org-timer-start)
Démarrer ou réinitialiser le minuteur relatif. Par défaut, le minuteur est fixé à
0. Lorsqu'il est appelé avec un préfixe C-u, il invite l'utilisateur à indiquer un
décalage de départ. L'invite sera par défaut une chaîne de minuterie au point
(s'il y en a une), fournissant un moyen pratique de recommencer à prendre
des notes après une pause dans le processus. Lorsqu'il est appelé avec un
double préfixe C-u C-u, il modifie toutes les chaînes de minuterie de la région
active d'une certaine valeur. Ceci peut être utilisé pour corriger les chaînes
de minuterie si la minuterie n'a pas été démarrée exactement au bon
moment.
C-c C-x ; (org-timer-set-timer)
Lance un compte à rebours. L'utilisateur est invité à indiquer une durée.
org-timer- default-timer définit la valeur par défaut du compte à
rebours. L'ajout d'un préfixe numérique remplace cette valeur par défaut.
Cette commande est disponible en tant que ; dans les tampons d'agenda.
Une fois lancées, les minuteries relatives et à rebours sont contrôlées par les mêmes commandes.
C-c C-x . (org-timer)
Insérer une heure relative dans la mémoire tampon. La première fois que
vous utilisez cette fonction, la minuterie démarre. L'utilisation d'un argument
préfixe le redémarre.
C-c C-x - (org-timer-item)
Insère un élément de la liste de description avec l'heure relative actuelle.
Avec un argument préfixe, réinitialiser d'abord la minuterie à 0.
M-RET (org-insert-heading)
Une fois que la liste des minuteries est lancée, vous pouvez également utiliser M-RET pour
insérer de nouveaux éléments de minuterie.
C-c C-x , (org-timer-pause-or-continue)
Mettre en pause le minuteur ou le poursuivre s'il est déjà en pause.
Chapitre 8 : Dates et heures 16
24 2
Veuillez noter les pièges de l'addition de données hiérarchiques dans une liste plate (voir la section 11.8
[Vue en colonnes de l'agenda], page 135).
Chapitre 8 : Dates et heures 16
3

C-c C-x _ (org-timer-stop)


Arrêtez la minuterie. Après cela, vous ne pouvez que démarrer une nouvelle
minuterie, pas continuer l'ancienne. Cette commande supprime également la
minuterie de la ligne de mode.
Chapitre 9 : Remise en forme et 16
archivage 4

9 Remise en forme et archivage


Une fois que les informations sont dans le système, elles peuvent avoir besoin d'être
déplacées. Org fournit les commandes Refile, Copy et Archive à cet effet. Refile et Copy
permettent de déplacer et de copier des contours. L'archivage permet de conserver un
système compact et rapide.

9.1 Refaire et copier


Lorsque vous examinez les données capturées, vous pouvez vouloir les reclasser ou
copier certaines entrées dans une liste différente, par exemple dans un projet. Couper,
trouver le bon emplacement, puis coller la note est fastidieux. Pour simplifier ce
processus, vous pouvez utiliser la commande spéciale suivante :
C-c C-w (org-refile)
Refaire le classement de l'entrée ou de la région à un point donné. Cette
commande propose des emplacements possibles pour le reclassement de
l'entrée et vous permet d'en sélectionner un avec achèvement. L'élément (ou
tous les éléments de la région) est classé sous la vedette cible en tant que
sous-article. Selon l'ordre org-reverse-note, il s'agit du premier ou du
dernier sous-article.
Par défaut, tous les titres de niveau 1 du tampon actuel sont considérés comme
des cibles, mais vous pouvez avoir des définitions plus complexes pour un
certain nombre de fichiers. Voir la rubrique org-refile-targets pour plus de
détails. Si vous souhaitez sélectionner un emplacement par le biais d'une
complétion de type chemin de fichier le long du chemin de contour,
consultez les variables org-refile- use-outline-path et org-outline-
path-complete-in-steps. Si vous souhaitez pouvoir créer de nouveaux
noeuds comme nouveaux parents pour le refiling à la volée, cochez la
variable org-refile-allow-creating-parent-nodes. Lorsque la variable
org-log-refile1 est définie, un horodatage ou une note sont enregistrés
chaque fois qu'une entrée est reclassée.
C-u C-c C-w
Utilisez l'interface de refichage pour passer à une rubrique.
C-u C-u C-c C-w (org-refile-goto-last-stored)
Sauter à l'endroit où org-refile a déplacé un arbre pour la dernière fois.
C-2 C-c C-w
Refile en tant qu'enfant de l'élément en cours de cadencement.
C-3 C-c C-w
Refile et conserve l'entrée en place. Voir aussi org-refile-keep pour que ce
soit le comportement par défaut, et attention au fait que cela peut entraîner
une duplication des propriétés 'ID'.
C-0 C-c C-w ou C-u C-u C-u C-c C-w (org-refile-cache-clear)
Effacer le cache des cibles. La mise en cache des cibles de refichage peut
être activée en configurant org-refile-use-cache. Pour que la commande
puisse voir de nouvelles cibles possibles, vous devez vider le cache avec
cette commande.
C-c M-w (org-refile-copy)
Chapitre 9 : Remise en forme et 16
archivage 5
La copie fonctionne comme le reclassement, sauf que la note originale n'est pas supprimée.
1
Notez les options 'STARTUP' correspondantes 'logrefile', 'lognoterefile' et 'nologrefile'.
Chapitre 9 : Remise en forme et 16
archivage 6

C-c C-M-w (org-refile-reverse)


Fonctionne comme le refiling, sauf qu'il bascule temporairement la façon
dont la valeur de org-reverse-note-order s'applique au tampon actuel.
Ainsi, si org-refile ajoute l'entrée en tant que dernière entrée sous l'en-
tête cible, org-refile-reverse l'ajoute en tant que première entrée, et
vice-versa.

9.2 Archivage
Lorsqu'un projet représenté par un (sous-)arbre est terminé, il se peut que vous
souhaitiez déplacer l'arbre et l'empêcher de contribuer à l'agenda. L'archivage est
important pour que vos fichiers de travail restent compacts et que les recherches
globales, comme la construction des vues de l'agenda, soient rapides.
C-c C-x C-a (org-archive-subtree-default)
Archiver l'entrée actuelle en utilisant la commande spécifiée dans la variable
org-archive-default-command.
9.2.1 Déplacer un arbre vers un fichier d'archive
L'action d'archivage la plus courante consiste à déplacer l'arborescence d'un projet dans un autre fichier, le
fichier d'archive.
C-c C-x C-s ou court C-c $ (org-archive-subtree)
Archive le sous-arbre commençant à la position du point à l'emplacement donné par
org-archive-location.
C-u C-c C-x C-s
Vérifier si des enfants directs du titre actuel pourraient être déplacés vers
l'archive. Pour ce faire, la commande vérifie chaque sous-arbre pour les
entrées TODO ouvertes. Si aucune n'est trouvée, la commande propose de
la déplacer vers l'archive. Si le point n'est pas sur un titre lorsque cette
commande est invoquée, vérifiez les arbres de niveau 1.
C-u C-u C-c C-x C-s
Comme ci-dessus, mais en vérifiant la présence d'horodatages dans la
sous-arborescence au lieu d'entrées TODO. La commande propose
d'archiver la sous-arborescence si elle contient un horodatage, et que cet
horodatage se situe dans le passé.
L'emplacement par défaut de l'archive est un fichier situé dans le même répertoire
que le fichier actuel, dont le nom est obtenu en ajoutant "_archive" au nom du fichier
actuel. Vous pouvez également choisir l'intitulé des éléments archivés, avec la
possibilité de les ajouter à un arbre de données dans un fichier. Pour des informations et
des exemples sur la manière de spécifier le fichier et le titre, voir la chaîne de
documentation de la variable org-archive-location.
Il existe également une option dans la mémoire tampon pour définir cette variable, par exemple :
#+ARCHIVE : %s_done: :
Si vous souhaitez disposer d'un emplacement d'archivage spécial pour une entrée
unique ou un (sous-)arbre, attribuez à l'entrée une propriété "ARCHIVE" avec
l'emplacement comme valeur (voir le chapitre 7 [Propriétés et colonnes], page 67).
Lorsqu'une sous-arborescence est déplacée, elle reçoit un certain nombre de
propriétés spéciales qui enregistrent des informations contextuelles comme le fichier
d'où provient l'entrée, son chemin d'accès, l'heure d'archivage, etc. Configurez la
Chapitre 9 : Remise en forme et 16
archivageorg-archive-save-context-info
variable 7
pour ajuster la quantité d'informations
ajoutées.
Lorsque org-archive-subtree-save-file-p est non nul, sauvegarde le tampon de l'archive cible.
Chapitre 9 : Remise en forme et 16
archivage 8

9.2.2 Archivage interne


Si vous souhaitez simplement désactiver certaines sous-arborescences dans l'agenda
sans les déplacer dans un autre fichier, vous pouvez utiliser la balise "ARCHIVE".
Un titre marqué par la balise 'ARCHIVE' (voir Chapitre 6 [Balises], page 61) reste à son
emplacement dans l'arbre des contours, mais se comporte de la manière suivante :
• Il ne s'ouvre pas lorsque vous tentez de le faire avec une commande de cycle de
visibilité (voir Section 2.2 [Cycle de visibilité], page 6). Vous pouvez forcer le cycle
des sous-arbres archivés avec C-c C-TAB, ou en définissant l'option org-cycle-
open-archived-trees. Les commandes outline normales, comme org-show-all,
ouvrent également les sous-arbres archivés.
• Lors de la construction d'un arbre clair (voir Section 2.5 [Arbres clairsemés], page 11),
les correspondances dans les sous-arbres archivés ne sont pas exposées, sauf si
vous configurez l'option org-sparse-tree- open-archived-trees.
• Lors de la construction des vues de l'agenda (voir chapitre 11 [Vues de l'agenda],
page 109), le contenu des arbres archivés est ignoré à moins que vous ne
configuriez l'option org-agenda-skip- archived-trees, auquel cas ces arbres sont
toujours inclus. Dans l'agenda, vous pouvez appuyer sur v a pour que les archives
soient temporairement incluses.
• Les arbres archivés ne sont pas exportés (voir Chapitre 13 [Exportation], page 147),
seule la ligne de tête l'est. Configurez les détails en utilisant la variable org-export-
with-archived-trees.
• Les arbres archivés sont exclus de l'affichage des colonnes à moins que la variable
org-columns-skip- archived-trees ne soit configurée à zéro.
Les commandes suivantes permettent de gérer la balise 'ARCHIVE' :
C-c C-x a (org-toggle-archive-tag)
Bascule la balise d'archive pour le titre actuel. Lorsque la balise est activée, le
titre prend la forme d'un visage ombré et la sous-arborescence située en
dessous est masquée.
C-u C-c C-x a
Vérifier si des enfants directs du titre actuel doivent être archivés. Pour ce
faire, la commande vérifie dans chaque sous-arbre s'il existe des entrées
TODO ouvertes. Si aucune n'est trouvée, la commande propose de définir la
balise 'ARCHIVE' pour l'enfant. Si le point n'est pas sur un titre lorsque cette
commande est invoquée, vérifiez les arbres de niveau 1.
C-c C-TAB (org-cycle-force-archivé)
Cyclez un arbre même s'il est étiqueté avec 'ARCHIVE'.
C-c C-x A (org-archive-to-archive-sibling)
Déplacer l'entrée actuelle vers l'Archive Sibling. Il s'agit d'un frère de l'entrée
avec le titre "Archive" et la balise d'archive. L'entrée devient un enfant de ce
frère et conserve ainsi une grande partie de son contexte d'origine, y
compris les balises héritées et sa position approximative dans le plan.
Chapitre 10 : Capture et pièces jointes 169

10 Capture et pièces jointes


Un élément important de tout système d'organisation est la capacité de capturer
rapidement de nouvelles idées et tâches, et d'y associer du matériel de référence. Pour
ce faire, Org utilise un processus appelé capture. Il peut également stocker des fichiers
liés à une tâche (pièces jointes) dans un répertoire spécial. Enfin, il peut analyser les flux
RSS pour en extraire des informations. Pour apprendre comment laisser des
programmes externes (par exemple un navigateur web) déclencher la capture de
documents par Org, voir Section 17.16 [Protocoles], page 259.

10.1 Capture
La capture vous permet de stocker rapidement des notes sans trop interrompre votre
flux de travail. La méthode d'Org pour capturer de nouveaux éléments est fortement
inspirée de l'excellent logiciel Remember de John Wiegley.

10.1.1 Mise en place de la capture


La personnalisation suivante définit un fichier cible par défaut pour les notes.
(setq org-default-notes-file (concat org-directory "/notes.org"))
Vous pouvez également définir une clé globale pour la capture de nouveaux matériaux
(voir Section 1.3 [Activation], page 3).

10.1.2 Utilisation de la capture


M-x org-capture (org-capture)
Affiche le menu des modèles de capture. Si vous avez défini des modèles
(voir Section 10.1.3 [Modèles de capture], page 98), il propose ces modèles
à la sélection ou utilise un nouveau nœud de contour d'orgue comme
modèle par défaut. Il insère le modèle dans le fichier cible et passe à un
tampon indirect réduit à ce nouveau nœud. Vous pouvez alors insérer les
informations que vous souhaitez.
C-c C-c (org-capture-finalize)
Une fois que vous avez fini de saisir des informations dans le tampon de
capture, C-c C-c vous ramène à la configuration de la fenêtre avant le
processus de capture, afin que vous puissiez reprendre votre travail sans être
distrait. Lorsqu'il est appelé avec un argument préfixe, il finalise et passe
ensuite à l'élément capturé.
C-c C-w (org-capture-refile)
Terminez le processus de capture en refilmant la note à un autre endroit
(voir Section 9.1 [Refilmage et copie], page 94). Il faut savoir qu'il s'agit
d'une commande de refiling normale qui sera exécutée - la position du point
au moment où vous exécutez cette commande est donc importante. Si vous
avez inséré un arbre avec un parent et des enfants, déplacez d'abord le
point vers le parent. Tout argument préfixe donné à cette commande est
transmis à la commande org-refile.
C-c C-k (org-capture-kill)
Abandonner le processus de capture et revenir à l'état précédent.
Vous pouvez également appeler org-capture d'une manière spéciale à partir de
l'agenda, en utilisant la combinaison de touches k c. Avec cet accès, tout horodatage
inséré par le modèle de capture sélectionné prend par défaut la date du moment dans
Chapitre 10 : Capture et pièces jointes 170
l'agenda, plutôt que la date du jour.
Pour trouver l'emplacement de la dernière capture stockée, utilisez org-capture avec les commandes
de préfixe :
Chapitre 10 : Capture et pièces jointes 171

C-u M-x org-capture


Visitez l'emplacement cible d'un modèle de capture. Vous pouvez
sélectionner le modèle de la manière habituelle.
C-u C-u M-x org-capture
Visite le dernier élément de capture stocké dans sa mémoire tampon.
Vous pouvez également accéder au signet org-capture-last-stored, qui est
automatiquement créé à moins que vous ne donniez la valeur nil à org-capture-
bookmark.
Pour insérer la capture à un point dans un tampon Org, appelez org-capture avec
un argument préfixe C-0.

10.1.3 Modèles de capture


Vous pouvez utiliser des modèles pour différents types d'éléments de capture et pour
différents lieux cibles. La manière la plus simple de créer de tels modèles est d'utiliser
l'interface de personnalisation.
C Personnaliser la variable org-capture-templates.
Avant de donner une description formelle des définitions de modèles, prenons un
exemple. Supposons que vous souhaitiez utiliser un modèle pour créer des entrées
TODO générales, et que vous vouliez placer ces entrées sous le titre "Tâches" dans
votre fichier "~/org/gtd.org". De même, un arbre de dates dans le fichier
"journal.org" devrait capturer les entrées de journal. Une configuration possible serait
la suivante :
(setq org-capture-templates
'(("t" "Todo" entry (file+headline "~/org/gtd.org"
"Tasks") "* TODO %?\n %i\n %a")
("j" "Journal" entry (file+datetree "~/org/journal.org")
"* %?\nEntrée le %U\n %i\n % a ")))
Si vous appuyez ensuite sur t dans le menu de capture, Org préparera le modèle
comme suit :
* TODO
[[file:LINK TO WHERE YOU INITIATED CAPTURE]] (en anglais)
Lors de l'expansion du modèle, "%a" a été remplacé par un lien vers l'emplacement à
partir duquel vous avez appelé la commande de capture. Cela peut s'avérer
extrêmement utile pour dériver des tâches à partir d'e-mails, par exemple. Vous
remplissez la définition de la tâche, appuyez sur C-c C-c et Org vous renvoie à l'endroit où
vous avez lancé le processus de capture.
Pour définir des clés spéciales permettant de capturer un modèle particulier sans
passer par la sélection interactive du modèle, vous pouvez créer votre liaison de clé
comme suit :
(define-key global-map (kbd "C-c x")
(lambda () (interactive) (org-capture nil "x")))

10.1.3.1 Éléments du modèle


Examinons maintenant les éléments d'une définition de modèle. Chaque entrée dans
org-capture- templates est une liste contenant les éléments suivants :
keysLes touches qui sélectionnent le modèle, sous la forme d'une chaîne de
caractères, par exemple '"a"', pour un modèle à sélectionner avec une seule
Chapitre 10 : Capture et pièces jointes 172
touche, ou '"bt"' pour une sélection avec deux touches. Lors de l'utilisation
de plusieurs touches, les touches utilisant le même préfixe doivent
Chapitre 10 : Capture et pièces jointes 173

doivent être séquentiels dans la liste et précédés d'une entrée à 2 éléments


expliquant la clé de préfixe, par exemple :
("b" "Modèles de marquage des produits à acheter")
Si vous ne définissez pas de modèle pour la touche C, cette touche ouvre la
mémoire tampon personnalisée pour cette variable complexe.
description
Une courte chaîne décrivant le modèle, affichée lors de la sélection.
typeLe type d'entrée, un symbole. Les valeurs valides sont les suivantes :
entry Un nœud en mode Org, avec un titre. Il sera classé en tant qu'enfant
de l'entrée cible ou en tant qu'entrée de premier niveau. Le
fichier cible doit être un fichier Org.
item Un élément de liste simple, placé dans la première liste simple à l'emplacement cible.
Là encore, le fichier cible doit être un fichier Org.
checkitem
Un élément de type case à cocher. Il ne diffère de l'élément de
liste ordinaire que par le modèle par défaut.
ligne de
table Une nouvelle ligne dans le premier tableau à l'emplacement cible.
L'endroit exact où la ligne sera insérée dépend des propriétés
:prepend et
:table-line-pos (voir ci-dessous).
le texte brut doit être inséré tel quel.
target Spécification de l'endroit où l'élément capturé doit être placé. Dans les fichiers
Org, les cibles définissent généralement un nœud. Les entrées deviennent
des enfants de ce nœud. Les autres types seront ajoutés au tableau ou à la
liste dans le corps de ce nœud. La plupart des spéci- fications de cibles
contiennent un nom de fichier. Si ce nom de fichier est une chaîne vide, la
valeur par défaut est org-default-notes-file. Un fichier peut également
être donné comme une variable ou comme une fonction appelée sans
argument. Lorsqu'un chemin absolu n'est pas spécifié pour une cible, il est
considéré comme relatif à org-directory.
Les valeurs valides sont les suivantes :
(fichier "chemin/vers/fichier")'
Le texte sera placé au début ou à la fin de ce fichier.
(id "id de l'entrée existante de l'org")'
Classement en tant qu'enfant de cette entrée, ou dans le corps de l'entrée.
(fichier+titre "nom du fichier" "titre du nœud")'
Configuration rapide si la rubrique cible est unique dans le fichier.
'(fichier+olp "nom du fichier" "Titre de niveau 1"
"Titre de niveau 2" ...)' Pour les titres non
uniques, le chemin complet est plus sûr.
'(fichier+expression rationnelle "nom de fichier"
"expression rationnelle pour trouver
l'emplacement")' Utiliser une expression
Chapitre 10 : Capture et pièces jointes 174

régulière pour positionner un point.


Chapitre 10 : Capture et pièces jointes 175

'(file+olp+datetree "filename" [ "Level 1 heading" ...])'


Cette cible1 crée un titre dans un arbre de dates2 pour la date
d'aujourd'hui. Si le chemin d'accès optionnel est donné, l'arbre
sera construit sous le noeud vers lequel il pointe, au lieu d'être
construit au niveau supérieur. Consultez les propriétés :time-
prompt et :tree-type ci-dessous pour des options
supplémentaires.
(file+function "filename" function-finding-location)'
Une fonction pour trouver le bon endroit dans le
fichier.
'(clock)' Fichier vers l'entrée qui est en train d'être
cadencée. '(function function-finding-location)'
La méthode la plus générale consiste à écrire sa propre fonction qui visite à la fois
le fichier
et déplace le point au bon endroit.
template Modèle de création de l'élément de capture. Si vous laissez ce champ vide, un
modèle par défaut approprié sera utilisé. Sinon, il s'agit d'une chaîne avec
des codes d'échappement, qui sera remplacée en fonction du moment et du
contexte de l'appel de capture. Vous pouvez également obtenir cette chaîne
de modèle à partir d'un fichier3 , ou dynamiquement, à partir d'une fonction
utilisant l'une ou l'autre syntaxe :
(fichier "/path/to/template-file")
(fonction FONCTION-RETURNING-THE-TEMPLATE)
properties Le reste de l'entrée est une liste d'options supplémentaires. Les propriétés
reconnues sont :
:prepend Normalement, les nouvelles informations capturées seront
ajoutées à l'emplacement cible (dernier enfant, dernière ligne de
tableau, dernier élément de liste, . . . ). La définition de cette
propriété modifie cette situation.
:immediate-finish
Lorsqu'elles sont définies, ne proposez pas d'éditer les
informations, mais classez-les immédiatement. Cette solution est
judicieuse si le modèle ne nécessite que des informations
pouvant être ajoutées automatiquement.
:jump-to-captured
Lorsqu'il est activé, il permet de passer à l'entrée capturée lorsque l'opération est
terminée.
:empty-lines
Indique le nombre de lignes à insérer avant et après le nouvel
élément. La valeur par défaut est 0, et la seule autre valeur
courante est 1.
1 Org
proposait auparavant quatre cibles différentes pour la capture de l'arbre date/semaine. Désormais,
Org les traduit automatiquement en utilisant file+olp+datetree, en appliquant les propriétés :time-
prompt et :tree-type. Veuillez réécrire vos cibles date/semaine en utilisant file+olp+datetree
puisque les anciennes cibles sont maintenant obsolètes.
2
Un arbre des dates est une structure hiérarchique dont le niveau le plus élevé est l'année, les sous-
niveaux sont les mois ou les semaines ISO, et le niveau le plus bas est la date.
Chapitre 10 : Capture et pièces jointes 176
* 2022
** 2022-10 octobre
*** 2022-10-07 vendredi
*** 2022-10-08 Samedi
Les balises sont autorisées dans l'arborescence.
3
Lorsque le nom du fichier n'est pas absolu, Org suppose qu'il est relatif à org-directory.
Chapitre 10 : Capture et pièces jointes 177

:empty-lines-after
Indique le nombre de lignes à insérer après le nouvel élément.
Remplace :empty-lines pour le nombre de lignes insérées
après.
:empty-lines-before
Indique le nombre de lignes à insérer avant le nouvel élément.
Remplace :empty-lines pour le nombre de lignes insérées
avant.
:clock-in
Démarrer l'horloge dans ce poste.
:clock-keep
Faites tourner l'horloge lors de l'enregistrement de l'entrée saisie.
:clock-resume
Si le démarrage de la capture a interrompu une horloge,
redémarrer cette horloge une fois la capture terminée. Notez que
:clock-keep a la priorité sur :clock-resume. Si les deux
paramètres sont non nuls, l'horloge en cours fonctionnera et
l'horloge précédente ne sera pas reprise.
:time-prompt
Demande une date/heure à utiliser pour les arbres date/semaine
et lors du remplissage du modèle. Sans cette propriété, la
capture utilise la date et l'heure actuelles. Même si cette
propriété n'a pas été définie, vous pouvez forcer le même
comportement en appelant org-capture avec un argument de
préfixe C-1.
:type
d'arbre Utilisez semaine pour créer une arborescence hebdomadaire au
lieu de l'arborescence mois-jour, c'est-à-dire pour placer les
rubriques de chaque jour sous une rubrique indiquant la semaine
ISO en cours. Utiliser mois pour regrouper les entrées par mois
uniquement. Par défaut, les entrées sont regroupées par jour.
:unnarrowed
Ne réduisez pas le tampon cible, montrez simplement le tampon
complet. L'erreur consiste à réduire la zone tampon de manière
à ne voir que le nouveau matériel.
:table-line-pos
Spécification de l'emplacement dans le tableau où la nouvelle
ligne doit être insérée. Il doit s'agir d'une chaîne comme "II-3",
ce qui signifie que la nouvelle ligne doit devenir la troisième ligne
avant la deuxième ligne de séparation horizontale.
:kill-buffer
Si le fichier cible n'a pas encore été visité lorsque la capture a
été invoquée, tuer le tampon à nouveau après la fin de la
capture.
:no-save Ne pas enregistrer le fichier cible après avoir terminé la capture.
:refile-targets
Chapitre 10 : Capture et pièces jointes 178

Définir temporairement org-refile-targets à la valeur de cette propriété.


Chapitre 10 : Capture et pièces jointes 179

:hook Une fonction nulle ou une liste de fonctions nulles exécutées avant le
org-capture-mode-hook lorsque le modèle est sélectionné.
:préparer-finaliser
Une fonction nullaire ou une liste de fonctions nullaires
exécutées avant org-capture-prepare-finalize-hook
lorsque le modèle est sélectionné.
:before-finalize
Une fonction nullaire ou une liste de fonctions nullaires
exécutées avant org-capture-before-finalize-hook lorsque
le modèle est sélectionné.
:after-finalize
Une fonction nullaire ou une liste de fonctions nullaires
exécutées avant org-capture-after-finalize-hook lorsque
le modèle est sélectionné.

10.1.3.2 Extension du modèle


Dans le modèle lui-même, des "%-escapes" spéciaux4 permettent l'insertion dynamique
de contenu. Les modèles sont développés dans l'ordre indiqué ici :
'%[FICHIER]' Insérer le contenu du fichier indiqué par FICHIER.
'%(EXP)' Évalue l'expression Elisp EXP et la remplace par le résultat. La forme EXP doit
renvoyer une chaîne de caractères. Seuls les espaces réservés préexistants
dans le modèle, ou introduits avec '%[file]', sont développés de cette
manière. Puisque cela se produit après l'expansion des "%-escapes" non
interactifs, ceux-ci peuvent être utilisés pour remplir l'expression.
%<FORMAT>
Le résultat du formatage de la chaîne de temps sur la spécification FORMAT.
'%t' Horodatage, date uniquement.
'%T' Horodatage, avec la date et l'heure.
'%u', '%U' Comme '%t', '%T' ci-dessus, mais avec des horodatages inactifs.
'%i' Contenu initial, la région lorsque la capture est appelée alors que la région
est active. S'il y a du texte avant '%i' sur la même ligne, comme une
indentation, et que '%i' n'est pas à l'intérieur d'une forme '%(exp)', ce préfixe
est ajouté avant chaque ligne du texte inséré.
'%a' Annotation, normalement le lien créé avec org-store-
link. '%A' Identique à '%a', mais demande la partie description.
'%l' Comme "%a", mais en insérant uniquement le lien littéral.
'%L' Comme "%l", mais sans les crochets (le contenu du
lien lui-même). '%c'Tête d'anneau de mise à mort actuelle.
'%x' Contenu du presse-papiers X.
4
Si vous avez besoin d'une de ces séquences littéralement, échappez le "%" avec une barre oblique inverse.
Chapitre 10 : Capture et pièces jointes 180

'%k' Titre de la tâche en cours de


cadencement. '%K' Lien vers la tâche en
cours d'exécution.
'%n' Nom d'utilisateur (tiré de user-full-name).
'%f' Fichier visité par le tampon actuel lorsque org-capture a
été appelé. '%F' Chemin complet du fichier ou du répertoire visité
par le tampon actuel. '%:mot-clé'
Informations spécifiques pour certains types de liens, voir ci-dessous.
'%^g' Demande de balises, avec achèvement des balises dans
le fichier cible. '%^G' Demande de balises, avec complétion de toutes
les balises dans tous les fichiers de l'agenda.
'%^t' Comme '%t', mais en demandant la date. De même, '%^T', '%^u', '%^U'. Vous
pouvez définir une invite telle que "%^{Anniversaire}t".
'%^C'Sélection interactive de l'animal ou du clip à
utiliser. '%^L' Identique à '%^C', mais inséré sous forme de
lien.
'%^{PROP}p'
Invite l'utilisateur à indiquer une valeur pour la propriété PROP. Vous pouvez spécifier une
valeur par défaut
avec '%^{PROP|default}'.
'%^{PROMPT}'
Demander à l'utilisateur une chaîne de caractères et remplacer cette
séquence par celle-ci. Vous pouvez spécifier une valeur par défaut et une
table de complétion avec
'%^{prompt|default|completion2|completion3...}' Les touches
fléchées permettent d'accéder à un historique spécifique à l'invite.
%\N' Insérer le texte saisi à la Nième '%^{PROMPT}', où N est un nombre, à partir
de 1.
'%?' Après avoir complété le modèle, positionnez le
point ici. Pour des types de liens spécifiques, les mots-clés
suivants sont définis5 :

Type de lien Mots clés disponibles


bbdb '%:nom', '%:société'
irc '%:server', '%:port', '%:nick'
mh, rmail "%:type", "%:subject", "%:message-id
%:from", "%:fromname",
"%:fromaddress" "%:to", "%:toname",
"%:toaddress" "%:date" (champ d'en-
tête de la date du message)
'%:date-timestamp' (date en tant qu'horodatage actif)
'%:date-timestamp-inactive' (date sous forme d'horodatage
Chapitre 10 : Capture et pièces jointes 181
inactif) '%:fromto' (soit "to NAME", soit "from NAME")6
5
Si vous définissez vos propres types de liens (voir Section A.3 [Ajout de types de liens hypertextes], page
265), toute propriété stockée avec org-store-link-props est accessible dans les modèles de capture
de la même manière.
6
Il s'agit toujours de l'autre, et non de l'utilisateur. Voir la variable org-link-from-user-regexp.
Chapitre 10 : Capture et pièces jointes 182

gnus '%:group', pour les messages, également tous les champs d'email
w3, w3m '%:url'
info '%:fichier', '%:nœud'
calendrier '%:date'
org-protocol '%:link', '%:description', '%:annotation'
10.1.3.3 Modèles en contexte
Pour contrôler si un modèle de capture doit être accessible à partir d'un contexte
spécifique, vous pouvez personnaliser org-capture-templates-contexts. Disons, par
exemple, que vous avez un modèle de capture "p" pour stocker les courriels Gnus
contenant des correctifs. Vous devez alors configurer cette option comme suit :
(setq org-capture-templates-contexts
'(("p" ((in-mode . "message-mode")))))
Vous pouvez également indiquer que la clé de commande p doit faire référence à un
autre modèle. Dans ce cas, ajoutez cette clé de commande comme suit :
(setq org-capture-templates-contexts
'(("p" "q" ((in-mode . "message-mode")))))
Voir la docstring de la variable pour plus d'informations.

10.2 Pièces jointes


Il est souvent utile d'associer des documents de référence à un nœud de schéma. De
petits morceaux de texte brut peuvent simplement être stockés dans la sous-
arborescence d'un projet. Les hyperliens (voir chapitre 4 [Hyperliens], page 38) peuvent
établir des associations avec des fichiers qui se trouvent ailleurs sur un ordinateur local,
ou même distant, comme des courriers électroniques ou des fichiers de code source
appartenant à un projet.
Une autre méthode est celle des pièces jointes, qui sont des fichiers situés dans un
répertoire appartenant à un nœud de contour. Org utilise des répertoires nommés soit
par un identifiant unique pour chaque entrée, soit par une propriété "DIR".

10.2.1 Défauts d'attachement et répartiteur


Par défaut, Org attach utilise les propriétés ID lors de l'ajout de pièces jointes aux
nœuds de contour. Le travail avec les pièces jointes est ainsi entièrement automatisé. Il
n'est pas nécessaire de décider du nom ou de l'emplacement du dossier. Les répertoires
basés sur l'ID sont par défaut situés dans le répertoire 'data/', qui se trouve dans le
même répertoire que votre fichier Org7 .
Lorsque des pièces jointes sont créées à l'aide d'org-attach, une balise par défaut
"ATTACH" est ajoutée au nœud qui reçoit les pièces jointes.
Pour plus de contrôle sur la configuration, voir la section 10.2.2 [Options des
pièces jointes], page 105. Les commandes suivantes concernent les pièces
jointes :
C-c C-a (org-attach)
Le répartiteur pour les commandes liées au système d'attache. Après ces
touches, une liste de commandes s'affiche et vous devez appuyer sur une
touche supplémentaire pour sélectionner une commande :
7
Si vous déplacez des entrées ou des fichiers Org d'un répertoire à un autre, vous pouvez configurer
org-attach- id-dir pour qu'il contienne un chemin absolu.
Chapitre 10 : Capture et pièces jointes 183

a (org-attach-attach)
Sélectionnez un fichier et déplacez-le dans le répertoire des
pièces jointes de la tâche. Le fichier est copié, déplacé ou lié,
selon la méthode org-attach. Notez que les liens en dur ne sont
pas pris en charge sur tous les systèmes.
c/m/l Attachez un fichier en utilisant la méthode de
copie/déplacement/lien. Notez que les liens en dur ne sont pas
pris en charge sur tous les systèmes.
b (org-attach-buffer)
Sélectionnez un tampon et enregistrez-le en tant que fichier dans le répertoire des
pièces jointes de la tâche.
n (org-attach-new)
Créer une nouvelle pièce jointe sous forme de tampon Emacs.
z (org-attach-sync)
Synchroniser la tâche en cours avec son répertoire de pièces
jointes, au cas où vous auriez ajouté des pièces jointes vous-
même.
o (org-attach-open)
Ouvrir la pièce jointe de la tâche en cours. S'il y en a plusieurs,
un nom de fichier est d'abord demandé. L'ouverture suit les
règles établies par org-file- apps. Pour plus de détails, voir
les informations sur le suivi des hyperliens (voir Section 4.5
[Gestion des liens], page 42).
O (org-attach-open-in-emacs)
Ouvrez également la pièce jointe, mais forcez l'ouverture du fichier dans Emacs.
f (org-attach-reveal)
Ouvrir le répertoire des pièces jointes de la tâche en cours.
F (org-attach-reveal-in-emacs)
Ouvrez également le répertoire, mais forcez l'utilisation de Dired dans Emacs.
d (org-attach-delete-one)
Sélectionner et supprimer une seule pièce jointe.
D (org-attach-delete-all)
Supprimer toutes les pièces jointes d'une tâche. Une méthode
plus sûre consiste à ouvrir le répertoire dans Dired et à le
supprimer à partir de là.
s (org-attach-set-directory)
Définir un répertoire spécifique comme répertoire d'attachement
de l'entrée. Pour ce faire, il suffit d'indiquer le chemin d'accès au
répertoire dans la propriété "DIR".
S (org-attach-unset-directory)
Supprimer le répertoire de pièces jointes. Cette commande
supprime la propriété 'DIR' et demande à l'utilisateur de déplacer le
contenu dans ce dossier, si une propriété 'ID' est définie, de
supprimer le contenu, ou de laisser le répertoire de pièces
jointes tel quel, mais de ne plus l'attacher au nœud de contour.
10.2.2 Options d'attachement
Chapitre 10 : Capture et pièces jointes 184
Il existe quelques options pour les pièces jointes qui méritent d'être mentionnées.
org-attach-id-dir
Répertoire dans lequel les pièces jointes sont stockées lorsque la méthode utilisée est "ID".
Chapitre 10 : Capture et pièces jointes 185

org-attach-dir-relative
Lorsque l'on définit la propriété 'DIR' sur un noeud en utilisant C-c C-a s (org-
attach-set- directory), les liens absolus sont saisis par défaut. Cette
option les remplace par des liens relatifs.
org-attach-use-inheritance
Par défaut, les dossiers attachés à un nœud de contour sont hérités des
parents conformément à org-use-property-inheritance. Si l'on souhaite
au contraire définir l'héritage spécifiquement pour Org attach, on peut le faire
en utilisant org-attach-use- inheritance. L'héritage de documents à
travers la hiérarchie des nœuds est très utile dans la plupart des cas. En
particulier lors de l'utilisation de liens d'attachement (voir Section 10.2.3 [Liens
d'attachement], page 107). L'exemple suivant montre un cas d'utilisation de
l'héritage de pièces jointes :
* Chapitre A ...
:PROPRIÉTÉS :
DIR : Chapitre A/
:FIN :
** Introduction
Quelques textes

#+NAME : Image 1
[[attachment:image 1.jpg]]
Sans l'héritage, il serait impossible de résoudre le lien vers "image 1.jpg",
puisque le lien se trouve dans un sous-titre du "chapitre A".
L'héritage fonctionne de la même manière pour les propriétés "ID" et "DIR".
Si les deux propriétés sont définies sur le même titre, c'est "DIR" qui a la
priorité. Il en va de même si l'héritage est activé. Si la propriété "DIR" est
héritée d'un nœud parent dans le plan, cette propriété a toujours la priorité
sur la propriété "ID" définie sur le nœud lui-même.
org-attach-method
Lors de l'attachement de fichiers à l'aide du distributeur C-c C-a, les fichiers
sont copiés par défaut. Ce comportement peut être modifié en personnalisant
org-attach-method. Les options sont Copy, Move/Rename, Hard link ou
Symbolic link.
org-attach-preferred-new-method
Cette personnalisation vous permet de choisir le mode d'attachement par
défaut aux nœuds sans propriétés "ID" et "DIR" existantes. La valeur par
défaut est id, mais elle peut également être fixée à dir, ask ou nil.
org-attach-archive-delete
Ce paramètre permet de déterminer si les pièces jointes doivent être
supprimées ou non lors de l'archivage d'une sous-arborescence contenant
des pièces jointes.
org-attach-auto-tag
Lorsque des fichiers sont joints à une rubrique, une étiquette leur est
attribuée en fonction des paramètres définis ici.
Chapitre 10 : Capture et pièces jointes 186

org-attach-id-to-path-function-list
Lorsque 'ID' est utilisé pour les pièces jointes, l'ID est analysé comme une
partie d'un chemin de répertoire. Voir org-attach-id-uuid-folder-format
pour la fonction par défaut. Définissez-en une nouvelle et ajoutez-la comme
premier élément de la liste des fonctions org-attach-id-to- path si
vous souhaitez que la structure du dossier soit différente. Toutes les
fonctions de cette liste seront essayées lors de la résolution des ID existants
en chemins d'accès, afin de maintenir une compatibilité ascendante avec les
dossiers existants dans votre système.
org-attach-store-link-p
Enregistre un lien vers le fichier joint. Le lien est stocké dans org-
stored-links pour être inséré ultérieurement avec C-c C-l (voir Section 4.5
[Traitement des liens], page 42). En fonction de l'option définie dans org-
attach-store- link-p, le lien est stocké soit à l'emplacement d'origine
en tant que lien de fichier, soit à l'emplacement de la pièce jointe en tant
que lien de pièce jointe, soit à l'emplacement de la pièce jointe en tant que
lien de fichier.
org-attach-commandes
Liste de toutes les commandes utilisées dans le répartiteur de pièces jointes.
org-attach-expert
Ne pas afficher le splash buffer avec le distributeur d'attachement lorsque
org-attach- expert est positionné à non-nil.
Voir le groupe de personnalisation 'Org Attach' si vous souhaitez modifier les paramètres par défaut.

10.2.3 Liens vers les pièces jointes


Les fichiers et dossiers joints peuvent être référencés à l'aide de liens de pièces jointes.
Il est ainsi facile de se référer au matériel ajouté à un nœud de contour. Surtout s'il a été
joint à l'aide de l'identifiant unique de l'entrée !
* TODO Quelques tâches
:PROPRIÉTÉS :
:ID : 95d50008-c12e-479f-a4f2-cc0238205319
:FIN :
Voir le document ci-joint pour plus d'informations : [[attachment:info.org]]
Voir la section 4.4 [Liens externes], page 40 pour plus d'informations sur ces liens.
10.2.4 Contrôle automatique des versions avec Git
Si le répertoire attaché à un nœud outline est un dépôt Git, Org peut être configuré pour
livrer automatiquement les changements dans ce dépôt lorsqu'il les voit.
Pour que le mode Org prenne en charge la gestion des versions des pièces jointes,
ajoutez ce qui suit à la configuration d'Emacs :
(require 'org-attach-git)

10.2.5 Attacher à partir de Dired


Il est possible d'attacher des fichiers à une sous-arborescence à partir d'un tampon
Dired. Pour utiliser cette fonctionnalité, il faut avoir une fenêtre en mode Dired contenant
le(s) fichier(s) à attacher et une autre fenêtre avec un point dans la sous-arborescence
qui recevra les pièces jointes. Dans la fenêtre Dired, avec un point sur un fichier, M-
x org-attach-dired-to-subtree attache le fichier à la sous-arborescence en utilisant
Chapitre 10 : Capture et pièces jointes 187
l'attachement
Chapitre 10 : Capture et pièces jointes 188

définie par la variable org-attach-method. Lorsque des fichiers sont marqués dans la
fenêtre Dired, tous les fichiers marqués sont attachés.
Ajoutez les lignes suivantes au fichier Emacs init pour que C-c C-x a attache les
fichiers dans les tampons Dired.
(add-hook 'dired-mode-hook
(lambda ()
(define-key dired-mode-map
(kbd "C-c C-x a")
#'org-attach-dired-to-subtree)))
Le code suivant montre comment lier la commande précédente à une méthode
d'attachement spécifique.
(add-hook 'dired-mode-hook
(lambda ()
(define-key dired-mode-map (kbd "C-c C-x c")
(lambda ()
(interactif)
(let ((org-attach-method 'cp))
(appel interactif #'org-attach-dired-to-subtree))))))

10.3 Flux RSS


Org peut ajouter et modifier des entrées sur la base des informations contenues dans les
flux RSS et les flux Atom. Vous pouvez ainsi créer une tâche pour chaque nouveau
podcast dans un flux de podcasts. Vous pouvez également utiliser un service de
création de notes par téléphone sur le web pour importer des tâches dans Org. Pour
accéder aux flux, configurez la variable org-feed-alist. La docstring de cette variable
contient des informations détaillées. Avec ce qui suit
(setq org-feed-alist
'(("Slashdot"
"https://rss.slashdot.org/Slashdot/slashdot"
"~/txt/org/feeds.org" "Slashdot Entries")))
les nouveaux éléments du flux fourni par 'rss.slashdot.org' donnent lieu à de
nouvelles entrées dans le fichier '~/org/feeds.org' sous le titre 'Slashdot Entries',
chaque fois que le mandat suivant est utilisé :
C-c C-x g (org-feed-update-all)
Collecter les éléments des flux configurés dans org-feed-alist et agir en conséquence.
C-c C-x G (org-feed-goto-inbox)
Demander un nom de flux et accéder à la boîte de réception configurée pour ce flux.
Sous le même titre, Org crée un tiroir "FEEDSTATUS" dans lequel il stocke des
informations sur l'état des éléments du flux, afin d'éviter d'ajouter plusieurs fois le même
élément.
Pour plus d'informations, notamment sur la manière de lire les flux d'atomes, voir
'org-feed.el' et la docstring de org-feed-alist.
Chapitre 11 : Vues de 189
l'agenda

11 Vues de l'agenda
En raison du mode de fonctionnement d'Org, les éléments TODO, les éléments horodatés
et les titres marqués peuvent être dispersés dans un fichier ou même dans plusieurs
fichiers. Pour avoir une vue d'ensemble des actions en cours ou des événements
importants à une date donnée, ces informations doivent être collectées, triées et
affichées de manière organisée.
Org peut sélectionner des éléments en fonction de divers critères et les afficher dans
une mémoire tampon distincte. Six types d'affichage différents sont proposés :
• un agenda qui ressemble à un calendrier et présente des informations pour des dates précises,
• une liste TODO qui couvre toutes les actions non terminées,
• dans une vue de correspondance, les titres des annonces sont basés sur les
étiquettes, les propriétés et l'état TODO qui leur sont associés,
• une vue de recherche de texte qui affiche toutes les entrées de plusieurs fichiers
contenant les mots-clés spécifiés,
• une vue des projets bloqués montrant les projets qui n'avancent pas actuellement, et
• des vues personnalisées qui sont des recherches spéciales et des combinaisons de vues différentes.
Les informations extraites sont affichées dans un tampon d'agenda spécial. Cette
mémoire tampon est en lecture seule, mais elle fournit des commandes permettant de
visiter les emplacements correspondants dans les fichiers Org originaux, et même de
modifier ces fichiers à distance.
Par défaut, le rapport ignore les entrées commentées (voir Section 13.6 [Lignes de
commentaires], page 155) et archivées (voir Section 9.2.2 [Archivage interne], page 96). Il
est possible d'ignorer ces entrées en fixant org-agenda-skip-comment-trees et org-
agenda-skip-archived-trees à nil.
Deux variables contrôlent l'affichage de la mémoire tampon de l'agenda et la
restauration de la configuration de la fenêtre lorsque l'agenda se termine : org-agenda-
window-setup et org-agenda- restore-windows-after-quit.

11.1 Dossiers de l'ordre du jour


Les informations à afficher sont normalement collectées à partir de tous les fichiers
d'agenda, les fichiers répertoriés dans la variable org-agenda-files1 . Si un répertoire
fait partie de cette liste, tous les fichiers portant l'extension ".org" dans ce répertoire font
partie de la liste.
Ainsi, même si vous ne travaillez qu'avec un seul fichier Org, ce fichier doit être placé
dans la liste2 . Vous pouvez personnaliser org-agenda-files, mais la façon la plus
simple de le maintenir est d'utiliser les commandes suivantes
C-c [ (org-agenda-file-to-front)
Ajouter le fichier actuel à la liste des fichiers à l'ordre du jour. Le dossier est
ajouté au début de la liste. S'il se trouvait déjà dans la liste, il est déplacé
vers le début. Avec un argument préfixe, le fichier est ajouté/déplacé à la fin.
1
Si la valeur de cette variable n'est pas une liste, mais un nom de fichier unique, la liste des fichiers
de l'agenda est conservée dans ce fichier externe.
2
Lorsque vous utilisez le répartiteur, le fait d'appuyer sur < avant de sélectionner une commande limite en
fait la commande au fichier en cours et ignore les fichiers org-agenda jusqu'à la prochaine
commande du répartiteur.
Chapitre 11 : Vues de 190
l'agenda

C-c ] (org-remove-file)
Retirer le fichier actuel de la liste des fichiers à l'ordre du jour.
C-'
C-, (org-cycle-agenda-files)
Parcourez la liste des fichiers de l'agenda, en visitant un fichier après l'autre.
M-x org-switchb
Commande permettant d'utiliser une interface de type Iswitchb pour passer d'un tampon Org à
l'autre.
Le menu Org contient la liste actuelle des fichiers et peut être utilisé pour visiter n'importe lequel d'entre
eux.
Si vous souhaitez concentrer temporairement l'agenda sur un fichier ne figurant pas
dans cette liste, ou sur un seul fichier de la liste, ou même sur une sous-arborescence
d'un fichier, vous pouvez le faire de différentes manières. Pour une seule commande
d'agenda, vous pouvez appuyer sur < une ou plusieurs fois dans le répartiteur (voir Section
11.2 [Répartiteur d'agenda], page 110). Pour restreindre la portée de l'agenda pendant
une période prolongée, utilisez les commandes suivantes :
C-c C-x < (org-agenda-set-restriction-lock)
Restreint l'agenda au sous-arbre actuel. S'il existe déjà une restriction à
point, supprimez-la. Lorsqu'il est appelé avec un argument de préfixe
universel ou avec point avant le premier titre d'un fichier, la portée de
l'agenda est fixée à l'ensemble du fichier. Cette restriction reste en vigueur
jusqu'à ce qu'elle soit supprimée avec C-c C-x >, ou en tapant < ou > dans le
distributeur d'agenda. Si une fenêtre affiche une vue de l'agenda, la nouvelle
restriction prend effet immédiatement.
C-c C-x > (org-agenda-remove-restriction-lock)
Supprime la restriction créée par C-c C-x <.
Lorsque vous travaillez avec Speedbar, vous pouvez utiliser les commandes
suivantes dans le cadre Speedbar :
< (org-speedbar-set-agenda-restriction)
Restreindre l'agenda à l'élément - soit un fichier Org, soit un sous-arbre d'un
tel fichier - à un point du cadre de la barre de vitesse. Si l'agenda est déjà
restreint à cet endroit, supprimez la restriction. Si une fenêtre affiche une
vue de l'agenda, la nouvelle restriction prend effet immédiatement.
> (org-agenda-remove-restriction-lock)
Supprimer la restriction.

11.2 Le répartiteur de l'agenda


Les vues sont créées par un dispatcher, accessible avec M-x org-agenda, ou, mieux, lié à
une clé globale (voir Section 1.3 [Activation], page 3). Il affiche un menu à partir duquel
une lettre supplémentaire est requise pour exécuter une commande. Le répartiteur
propose par défaut les commandes suivantes :
a Créez l'agenda de type calendrier (voir Section 11.3.1 [Agenda
hebdomadaire/journalier], page 111).
t
T Créez une liste de tous les éléments TODO (voir Section 11.3.2 [Liste
globale TODO], page 114).
Chapitre 11 : Vues de 191
l'agenda

m
M Créer une liste de titres correspondant à une expression donnée (voir Section
11.3.3 [Balises et propriétés de correspondance], page 115).
s Créer une liste d'entrées sélectionnées par une expression booléenne de
mots-clés et/ou d'expressions régulières qui doivent ou ne doivent pas
apparaître dans l'entrée.
/ Recherche d'une expression régulière dans tous les fichiers de l'agenda et
en plus dans les fichiers listés dans org-agenda-text-search-extra-
files. Ceci utilise le mandat commun Emacs multi-occur. Un argument
préfixe peut être utilisé pour spécifier le nombre de lignes de contexte pour
chaque correspondance, la valeur par défaut est 1.

# Créer une liste des projets bloqués (voir Section 11.3.5 [Projets bloqués], page 117).
! Configurez la liste des projets bloqués (voir Section 11.3.5 [Projets bloqués],
page 117).
< Restreindre une commande d'agenda à la mémoire tampon actuelle3 . Si un
rétrécissement est en vigueur, restreindre la commande à la partie rétrécie
de la mémoire tampon. Après avoir appuyé sur <, vous devez encore
appuyer sur le caractère sélectionnant la commande.
< S'il existe une région active, la commande suivante de l'agenda est limitée à la
région. Sinon, restreignez-la au sous-arbre actuel4 . Après avoir appuyé sur
< <, vous devez encore appuyer sur le caractère sélectionnant la
commande.
* Permet d'alterner les vues collantes de l'agenda. Par défaut, Org ne
maintient qu'un seul tampon d'agenda et le reconstruit à chaque fois que
vous changez de vue, pour s'assurer que tout est toujours à jour. Si vous
passez souvent d'une vue à l'autre et que le temps de construction vous
dérange, vous pouvez activer les tampons d'agenda collants (faites-en la
valeur par défaut en personnalisant la variable org-agenda-sticky). Avec
les agendas collants, le répartiteur ne passe qu'à la vue sélectionnée, vous
devez la mettre à jour à la main avec r ou g. Vous pouvez basculer
l'affichage de l'agenda collant à tout moment avec org-toggle- sticky-
agenda.

Vous pouvez également définir des commandes personnalisées qui sont accessibles
via le répartiteur, tout comme les commandes par défaut. Cela inclut la possibilité de
créer des tampons d'agenda étendus qui contiennent plusieurs blocs ensemble, par
exemple l'agenda hebdomadaire, la liste TODO globale et un certain nombre de
correspondances d'étiquettes spéciales. Voir Section 11.6 [Vues d'agenda personnalisées],
page 130.

11.3 Les vues de l'agenda intégré


Dans cette section, nous décrivons les vues intégrées.

11.3.1 Agenda hebdomadaire/quotidien


L'objectif de l'agenda hebdomadaire/journalier est d'agir comme une page d'un agenda
Chapitre 11 : Vues de 192
l'agendaen indiquant toutes les tâches de la semaine ou du jour en cours.
papier,

3
Pour des raisons de compatibilité ascendante, vous pouvez également appuyer sur 1 pour vous limiter à la mémoire
tampon actuelle.
4
Pour des raisons de compatibilité ascendante, vous pouvez également appuyer sur 0 pour vous limiter à la région/sous-
arborescence actuelle.
Chapitre 11 : Vues de 193
l'agenda

M-x org-agenda a (org-agenda-list)


Compiler un agenda pour la semaine en cours à partir d'une liste de fichiers
Org. L'agenda affiche les entrées pour chaque jour. Le préfixe numérique5 -
like C-u 2 1 M-x org-agenda a permet de définir le nombre de jours à afficher.
Le nombre de jours affichés par défaut dans l'agenda est défini par la variable org-
agenda- span. Cette variable peut être définie comme le nombre de jours que vous
souhaitez voir apparaître par défaut dans l'agenda, ou comme un nom de période, tel
qu'un jour, une semaine, un mois ou une année. Pour les agendas hebdomadaires, la
date de début par défaut est le lundi précédent (voir org-agenda-start-on-weekday).
Vous pouvez également définir la date de début en utilisant un décalage de date : '(setq
org-agenda-start-day "+10d")' démarre l'agenda dans dix jours à partir d'aujourd'hui
dans le futur. org-agenda-start-on-weekday a la priorité sur org-agenda-start-day
dans les agendas hebdomadaires et bihebdomadaires.
L'édition à distance à partir de la mémoire tampon de l'agenda signifie, par exemple,
que vous pouvez modifier les dates des échéances et des rendez-vous à partir de la
mémoire tampon de l'agenda. Les commandes disponibles dans la mémoire tampon de
l'agenda sont énumérées à la section 11.5 [Commandes de l'agenda], page 123.

Intégration du calendrier et de l'agenda


Emacs contient le calendrier et l'agenda d'Edward M. Reingold. Le calendrier affiche un
calendrier de trois mois avec les jours fériés de différents pays et cultures. L'agenda
permet de noter les anniversaires, les phases lunaires, le lever et le coucher du soleil, les
rendez-vous récurrents (hebdomadaires, mensuels) et bien d'autres choses encore. En
ce sens, il est tout à fait complémentaire d'Org. Il peut être très utile de combiner les
résultats d'Org avec ceux de l'agenda.
Pour inclure les entrées du journal Emacs dans l'agenda du mode Org, il suffit de
personnaliser la variable
(setq org-agenda-include-diary t)
Ensuite, tout se passe automatiquement. Toutes les entrées de l'agenda, y compris les
vacances, les anniversaires, etc., sont incluses dans la mémoire tampon de l'agenda
créée par le mode Org. SPC, TAB et RET peuvent être utilisés à partir de la mémoire
tampon de l'agenda pour passer au fichier de l'agenda afin de modifier les entrées
existantes. La commande i pour insérer de nouvelles entrées pour la date actuelle
fonctionne dans la mémoire tampon de l'agenda, de même que les commandes S, M et C
pour afficher les heures de lever/coucher du soleil, montrer les phases lunaires et
convertir vers d'autres calendriers, respectivement. c peut être utilisé pour passer de
l'agenda à la mémoire tampon de l'agenda.
Si vous n'utilisez le journal que pour les entrées d'expression et les vacances, il est
plus rapide de ne pas utiliser le paramètre ci-dessus, mais plutôt de copier ou même de
déplacer les entrées dans un fichier Org. Le mode Org évalue les entrées d'expression
de style journal et le fait plus rapidement parce qu'il n'y a pas de frais généraux pour
créer d'abord l'affichage du journal. Notez que les entrées d'expression doivent
commencer dans la marge de gauche, aucun espace blanc n'est autorisé avant elles,
comme le montre le segment suivant d'un fichier Org :6
* Vacances
:PROPRIÉTÉS :
CATEGORIE : Vacances
5
Pour des raisons de compatibilité ascendante, le préfixe universel C-u fait en sorte que toutes les entrées
TODO soient listées avant l'ordre du jour. Cette fonctionnalité est obsolète, utilisez la liste TODO dédiée,
Chapitre 11 : Vues de 194
l'agenda
ou un agenda en bloc à la place (voir Section 11.6.2 [Agenda en bloc], page 132).
6
La variable org-anniversary utilisée dans l'exemple est identique à diary-anniversary, mais l'ordre
des arguments est toujours conforme à l'ISO et donc indépendant de la valeur de calendar-date-
style.
Chapitre 11 : Vues de 195
l'agenda

:FIN :
%%(org-calendar-holiday) ; fonction spéciale pour les noms de jours fériés

* Anniversaires
:PROPRIÉTÉS :
CATEGORIE : Ann
:FIN :
%%(org-anniversary 1956 5 14) Arthur Dent a %d ans
%%(org-anniversaire 1869 10 2) Mahatma Gandhi aurait %d ans

Anniversaires du BBDB
Si vous utilisez la base de données Insidious Big Brother pour stocker vos contacts,
vous préférez très probablement stocker les anniversaires dans la BBDB plutôt que
dans un fichier Org ou agenda séparé. Org le permet et peut afficher les anniversaires
de la BBDB dans le cadre de l'agenda. Il vous suffit d'ajouter ce qui suit à l'un de vos
fichiers d'agenda :
* Anniversaires
:PROPRIÉTÉS :
CATEGORIE : Anniv
:FIN :
%%(org-bbdb-anniversaires)
Vous pouvez ensuite définir des anniversaires pour un enregistrement BBDB. En fait,
vous avez besoin d'un champ nommé "anniversaire" pour l'enregistrement BBDB, qui
contient la date au format "AAAA-MM-JJ" ou "MM-JJ", suivie d'un espace et de la classe
de l'anniversaire ("anniversaire", "mariage", ou une chaîne de format). Si vous
omettez la classe, la valeur par défaut est "anniversaire". Voici quelques exemples,
l'en-tête du fichier "ol-bbdb.el" contient des informations plus détaillées.
1973-06-22
06-22
1955-08-02 mariage
2008-04-14 %s a publié la version 6.01 du mode Org, il y a %d ans
Après une modification de BBDB, ou pour le premier affichage de l'agenda au cours
d'une session Emacs, l'affichage de l'agenda subit un court délai car Org met à jour son
hachage avec les anniversaires. Cependant, à partir de ce moment, les choses seront
très rapides, beaucoup plus rapides en fait qu'une longue liste d'entrées '%%(diary-
anniversary)' dans un fichier Org ou Diary.
Si vous souhaitez voir les anniversaires à venir avec un peu d'anticipation, vous
pouvez utiliser ce qui suit :
* Anniversaires
:PROPRIÉTÉS :
CATEGORIE : Anniv
:FIN :
%%(org-bbdb-anniversaires-future 3)
Vous serez ainsi averti trois jours à l'avance : à la date anniversaire elle-même et les
deux jours précédents. L'argument est facultatif : s'il est omis, la valeur par défaut est 7.
Chapitre 11 : Vues de 196
l'agenda

Rappels de rendez-vous
Org peut interagir avec la fonction de notification de rendez-vous d'Emacs. Pour ajouter
les rendez-vous de vos fichiers d'agenda, utilisez la commande org-agenda-to-appt.
Cette commande vous permet de filtrer la liste de vos rendez-vous et de n'ajouter que
ceux qui appartiennent à une catégorie spécifique ou qui correspondent à une expression
régulière. Elle lit également une propriété 'APPT_WARNTIME' qui remplace la valeur de appt-
message-warning-time pour ce rendez-vous. Voir la docstring pour plus de détails.

11.3.2 La liste globale TODO


La liste TODO globale contient tous les éléments TODO inachevés, formatés et
rassemblés en un seul endroit.
M-x org-agenda t (org-todo-list)
Afficher la liste globale des TODO. Cette liste rassemble les éléments TODO
de tous les fichiers d'agenda (voir Chapitre 11 [Vues de l'agenda], page 109)
dans une seule mémoire tampon. Par défaut, cette liste énumère les
éléments dont l'état n'est pas l'état DONE. Le tampon est en mode Agenda,
il existe donc des commandes pour examiner et manipuler les entrées
TODO directement à partir de ce tampon (voir Section 11.5 [Commandes
Agenda], page 123).
M-x org-agenda T (org-todo-list)
Comme ci-dessus, mais permet de sélectionner un mot-clé TODO
spécifique. Vous pouvez également le faire en spécifiant un préfixe à t. Un
mot-clé vous est demandé, et vous pouvez également spécifier plusieurs
mots-clés en les séparant par '|', qui est l'opérateur booléen OR. Avec un
préfixe numérique, le Nième mot-clé de org-todo-keywords est
sélectionné.
La touche r dans le tampon de l'agenda le régénère, et vous pouvez donner un
argument préfixe à cette commande pour changer le mot-clé TODO
sélectionné, par exemple 3 r. Si vous avez souvent besoin d'une recherche
pour un mot-clé spécifique, définissez une commande personnalisée pour
cela (voir Section 11.2 [Agenda Dispatcher], page 110).
La correspondance avec des mots-clés spécifiques de l'ODD peut
également être effectuée dans le cadre d'une recherche de balises (voir
Section 6.4 [Recherches de balises], page 65).
L'édition à distance des éléments de l'ODD signifie que vous pouvez modifier l'état
d'un élément de l'ODD en appuyant sur une seule touche. Les commandes disponibles
dans la liste TODO sont décrites dans la Section 11.5 [Commandes de l'agenda], page
123.
Normalement, la liste globale TODO affiche simplement tous les titres contenant des
mots-clés TODO. Cette liste peut devenir très longue. Il existe deux façons de la rendre
plus compacte :
• Certaines personnes considèrent qu'un élément TODO dont l'exécution a été
planifiée ou qui a une date limite (voir Section 8.1 [Horodatage], page 76) n'est plus
ouvert. Configurez les variables org-agenda-todo-ignore-scheduled pour exclure
certains ou tous les éléments planifiés de la liste globale des TODO, org-agenda-
todo-ignore-deadlines pour exclure certains ou tous les éléments ayant une date
limite, org-agenda-todo-ignore-timestamp pour exclure certains ou tous les
éléments ayant un horodatage actif autre qu'un horodatage DEADLINE ou
Chapitre 11 : Vues de 197
l'agenda
SCHEDULED et/ou org-agenda-todo-ignore-with-date pour exclure les éléments
ayant au moins un horodatage actif.
• Les éléments TODO peuvent avoir des sous-niveaux pour diviser la tâche en sous-
tâches. Dans ce cas, il peut être suffisant de ne lister que le titre TODO de plus haut
niveau et d'omettre les sous-niveaux.
Chapitre 11 : Vues de 198
l'agenda

de la liste globale. Configurez la variable org-agenda-todo-list-sublevels pour


obtenir ce comportement.

11.3.3 Correspondance entre les balises et les propriétés


Si les titres des fichiers d'agenda sont marqués par des balises (voir le chapitre 6
[Balises], page 61) ou possèdent des propriétés (voir le chapitre 7 [Propriétés et colonnes],
page 67), vous pouvez sélectionner des titres sur la base de ces métadonnées et les
rassembler dans une mémoire tampon d'agenda. La syntaxe de correspondance décrite
ici s'applique également à la création d'arbres épars avec C-c / m.
M-x org-agenda m (org-tags-view)
Produire une liste de tous les titres qui correspondent à un ensemble donné
de balises. Le com- mand demande un critère de sélection, qui est une
expression logique booléenne avec des balises, comme '+travail+urgence-
avec chef' ou 'travail|domicile' (voir Chapitre 6 [Balises], page 61). Si
vous avez souvent besoin d'une recherche spécifique, définissez une
commande personnalisée (voir Section 11.2 [Agenda Dispatcher], page
110).
M-x org-agenda M (org-tags-view)
Comme m, mais en ne sélectionnant que les titres qui sont aussi des
éléments TODO et en forçant la vérification des sous-éléments (voir la
variable org-tags-match-list-sublevels). Pour exclure les éléments
programmés/deadline, voir la variable org-agenda-tags-todo-honor-
ignore-options. Il est également possible de faire correspondre des mots-
clés TODO spécifiques avec une correspondance de balises, voir Section 6.4
[Recherches de balises], page 65.
Les commandes disponibles dans la liste des balises sont décrites dans la section
11.5 [Agenda Com- mands], page 123.
Une chaîne de recherche peut utiliser les opérateurs booléens "&" pour AND et "|"
pour OR. L'opérateur "&" se lie plus fortement que l'opérateur "|". Les parenthèses ne
sont actuellement pas implémentées. Chaque élément de la recherche est soit une balise,
soit une expression régulière correspondant à des balises, soit une expression telle que
"PROPERTY OPERATOR VALUE" avec un opérateur de comparaison, accédant à une valeur
de propriété. Chaque élément peut être précédé d'un "-" pour le sélectionner, et le "+"
est un sucre syntaxique pour une sélection positive. L'opérateur ET "&" est facultatif
lorsque "+" ou "-" est présent. Voici quelques exemples utilisant uniquement des balises.
'+work-boss'
Sélectionnez les titres étiquetés "travail", mais écartez ceux qui sont également étiquetés
"patron".
'work|laptop' (travail|ordinateur portable)
Sélectionne les lignes étiquetées 'travail' ou 'ordinateur portable'.
'travail|ordinateur portable+nuit'
Comme précédemment, mais en exigeant que les lignes "laptop" soient également marquées
"night".
Au lieu d'une balise, vous pouvez également spécifier une expression régulière entre
accolades (voir Section 17.9 [Expressions régulières], page 254). Par exemple,
'work+{^boss.*}' correspond aux titres qui contiennent la balise ':work:' et toute balise
commençant par 'boss'.
Chapitre 11 : Vues de 199
l'agenda
Les balises de groupe (voir Section 6.3 [Hiérarchie des balises], page 64) sont
développées comme des expressions régulières. Par exemple, si 'work' est une balise
de groupe pour le groupe ':work:lab:conf:', alors la recherche de 'work' recherche
également '{\(?:work\|lab\|conf\)}' et la recherche de '-work' recherche tous les
titres sauf ceux avec une des balises du groupe (c.-à-d. '-{{(?:work\|lab\|conf\)}').
Chapitre 11 : Vues de 200
l'agenda

Il est également possible de tester les propriétés (voir Chapitre 7 [Propriétés et


colonnes], page 67) en même temps que les balises correspondantes. Les propriétés
peuvent être des propriétés réelles ou des propriétés spéciales représentant d'autres
métadonnées (voir Section 7.2 [Propriétés spéciales], page 69). Par exemple, la propriété
'TODO' représente le mot-clé TODO de l'entrée. Ou encore, la propriété 'LEVEL'
représente le niveau d'une entrée. Ainsi, la recherche '+LEVEL=3+boss-TODO="DONE"'
liste tous les titres de niveau 3 qui ont l'étiquette 'boss' et qui ne sont pas marqués avec
le mot-clé TODO 'DONE'. Dans les tampons dont l'option org-odd-levels-only est
activée, 'LEVEL' ne compte pas le nombre d'étoiles, mais 'LEVEL=2' correspond à 3
étoiles, etc.
Voici d'autres exemples :
'travail+TODO="EN ATTENTE"''.
Sélectionner les lignes TODO étiquetées "travail" avec le mot-clé spécifique TODO "EN
ATTENTE".
'travail+TODO="EN ATTENTE"|home+TODO="EN ATTENTE"''.
Tâches d'attente au travail et à la maison.
Lors de la mise en correspondance des propriétés, un certain nombre d'opérateurs
différents peuvent être utilisés pour tester la valeur d'une propriété. Voici un exemple
complexe :
+travail-patron+PRIORITÉ="A "+Café="illimité "+Effort<2
+With={Sarah\|Denny}+SCHEDULED>="<2008-10-11>"
Le type de comparaison dépend de la manière dont la valeur de comparaison est écrite :
• Si la valeur de comparaison est un simple nombre, une comparaison numérique est
effectuée et les opérateurs autorisés sont '<', '=', '>', '<=', '>=' et '<>'.
• Si la valeur de comparaison est placée entre guillemets, une comparaison de chaîne
est effectuée et les mêmes opérateurs sont autorisés.
• Si la valeur de comparaison est entourée de guillemets et de crochets angulaires
(comme 'DEADLINE<="<2008-12-24 18:30>"'), les deux valeurs sont supposées
être des spécifications de date/heure à la manière standard d'Org, et la
comparaison est effectuée en conséquence. Les valeurs valides comprennent
également '"<now>"' pour maintenant (y compris l'heure), '"<today>"' et
'"<tomorrow>"' pour ces jours à 0:00 heure, c'est-à-dire sans spécification d'heure.
Vous pouvez également utiliser des chaînes comme '"<+5d>"" ou '"<-2m>"" avec
les unités "d", "w", "m" et "y" pour le jour, la semaine, le mois et l'année,
respectivement.
• Si la valeur de comparaison est entourée d'accolades, une correspondance regexp
est effectuée, "=" signifiant que la regexp correspond à la valeur de la propriété, et
"<>" signifiant qu'elle ne correspond pas.
Ainsi, la chaîne de recherche de l'exemple trouve les entrées étiquetées "travail"
mais pas "patron", qui ont également une valeur de priorité "A", une propriété "Café"
avec la valeur "illimité", une propriété "EFFORT" numériquement inférieure à 2, une
propriété "Avec" qui correspond à l'expression régulière "Sarah|Denny", et qui sont
programmées le 11 octobre 2008 ou après cette date.
Il est possible de configurer le mode Org pour qu'il utilise l'héritage des propriétés lors
d'une recherche, mais attention, cela peut ralentir considérablement les recherches. Voir
Section 7.4 [Héritage de propriétés], page 70, pour plus de détails.
Pour des raisons de compatibilité ascendante et de rapidité de frappe, il existe
Chapitre 11 : Vues de 201
l'agenda une autre façon de tester les états TODO dans une recherche. Pour cela,
également
terminez la partie tags/propriétés de la chaîne de recherche (qui peut inclure plusieurs
termes reliés par '|') par un '/' et spécifiez ensuite une expression booléenne
uniquement pour les mots-clés TODO. La syntaxe est alors similaire à celle des balises,
mais devrait
Chapitre 11 : Vues de 202
l'agenda

doit être appliquée avec précaution : par exemple, une sélection positive sur plusieurs
mots-clés TODO ne peut pas être combinée de manière significative avec la méthode
booléenne AND. En revanche, une sélection négative combinée avec AND peut être
significative. Pour s'assurer que seules les lignes contenant un mot-clé TODO sont
vérifiées (ce qui accélère le processus), utilisez M-x org-agenda M, ou commencez la
partie TODO après la barre oblique par ' ! L'utilisation de M-x org-agenda M ou '/!' ne
correspond pas aux mots-clés TODO dans l'état DONE. Exemples :
Travail/Attente
Identique à 'work+TODO="WAITING"'.
'work/!-WAITING-NEXT' (travail)
Sélectionner les lignes TODO étiquetées "travail" qui ne sont ni "EN ATTENTE" ni "SUIVANT".
'work/!+WAITING|+NEXT'
Sélectionner les lignes TODO étiquetées "travail" qui sont soit "EN ATTENTE", soit "SUIVANT".
11.3.4 Vue de la recherche
Cette vue de l'agenda est un outil de recherche de texte général pour les entrées du
mode Org. Elle est particulièrement utile pour trouver des notes.
M-x org-agenda s (org-search-view)
Il s'agit d'une recherche spéciale qui vous permet de sélectionner des
entrées en faisant correspondre une sous-chaîne ou des mots spécifiques à
l'aide d'une logique booléenne.
Par exemple, la chaîne de recherche "matériel informatique" correspond aux
entrées qui contiennent "matériel informatique" comme sous-chaîne, même si les
deux mots sont séparés par un espace supplémentaire ou un saut de ligne.
La vue de recherche peut également rechercher des mots-clés spécifiques dans
l'entrée, en utilisant la logique booléenne. La chaîne de recherche "+computer +wifi -
ethernet -{8\.11[bg]}" correspond aux entrées de notes qui contiennent les mots-
clés "computer" et "wifi", mais pas le mot-clé "ethernet", et qui ne correspondent pas
non plus à l'expression régulière "8\.11[bg]", c'est-à-dire qui excluent à la fois "8.11b"
et "8.11g". Le premier "+" est nécessaire pour activer la recherche booléenne, les autres
caractères "+" sont facultatifs. Pour plus de détails, voir la docstring de la commande
org-search-view.
Vous pouvez ajuster progressivement et facilement une recherche booléenne à partir de
la vue de recherche de l'agenda à l'aide des touches suivantes
[ Ajouter un mot de recherche positif
] Ajouter un mot de recherche négatif
{ Ajouter une expression régulière positive
} Ajouter une expression régulière négative
Notez qu'en plus des fichiers de l'agenda, cette commande recherche également les fichiers listés dans
la rubrique
org-agenda-text-search-extra-files.
11.3.5 Projets bloqués
Si vous suivez un système tel que GTD de David Allen pour organiser votre travail,
l'une de vos "tâches" consiste à vérifier régulièrement que tous les projets avancent.
Un projet bloqué est un projet dont les prochaines actions ne sont pas définies et qui
n'apparaît donc jamais dans les listes TODO produites par le mode Org. Lors de la
Chapitre 11 : Vues de 203
l'agenda
revue, vous devez identifier ces projets et définir les actions suivantes.
Chapitre 11 : Vues de 204
l'agenda

M-x org-agenda # (org-agenda-list-stuck-projects)


Liste les projets qui sont bloqués.
M-x org-agenda !
Personnalisez la variable org-stuck-projects pour définir ce qu'est un
projet bloqué et comment le trouver.
Vous devrez certainement configurer cette vue avant qu'elle ne vous convienne. La
valeur par défaut intégrée suppose que tous vos projets sont des titres de niveau 2, et
qu'un projet n'est pas bloqué s'il a au moins une entrée marquée d'un mot-clé "TODO" ou
"NEXT" ou "NEXTACTION".
Supposons que, dans votre propre façon d'utiliser le mode Org, vous identifiez les
projets avec une étiquette ':PROJET:', et que vous utilisez le mot-clé TODO 'MAYBE' pour
indiquer un projet qui ne doit pas encore être pris en considération. Supposons
également que le mot-clé TODO 'DONE' marque les projets terminés, et que 'NEXT' et
'TODO' indiquent les actions suivantes. La balise ':@shop:' indique des achats et constitue
une action suivante même sans la balise NEXT. Enfin, si le projet contient le mot spécial
"IGNORE" à un endroit quelconque, il ne doit pas non plus être répertorié. Dans ce cas,
vous devriez commencer par identifier les projets éligibles avec une correspondance
tags/TODO (voir Section 6.4 [Recherches par tags], page 65) '+PROJECT/-MAYBE-DONE',
puis vérifier la présence de 'TODO', 'NEXT', '@shop', et 'IGNORE' dans le sous-arbre afin
d'identifier les projets qui ne sont pas bloqués. La personnalisation correcte est la
suivante :
(setq org-stuck-projects
("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@shop") "\<IGNORE\>"))
Notez que si un projet est identifié comme non bloqué, la sous-arborescence de cette
entrée est recherchée pour les projets bloqués.

11.4 Présentation et tri


Avant d'afficher les éléments dans une vue d'agenda, le mode Org prépare visuellement
les éléments et les trie. Chaque élément occupe une seule ligne. La ligne commence
par un préfixe qui contient la catégorie (voir Section 11.4.1 [Catégories], page 118) de
l'élément et d'autres informations importantes. Vous pouvez personnaliser la colonne
dans laquelle les balises sont affichées en utilisant org-agenda- tags-column. Vous
pouvez également personnaliser le préfixe en utilisant l'option org-agenda-prefix-
format. Ce préfixe est suivi d'une version épurée de l'intitulé associé à l'article.

11.4.1 Catégories
La catégorie est une étiquette générale attribuée à chaque point de l'ordre du jour. Par
défaut, la catégorie est simplement dérivée du nom du fichier, mais vous pouvez
également la spécifier avec une ligne spéciale dans le tampon, comme ceci :
#+CATEGORIE : Thèse
Si vous souhaitez avoir une catégorie spéciale pour une entrée unique ou un (sous-
)arbre, donnez à l'entrée une propriété "CATEGORY" avec la catégorie spéciale que vous
souhaitez appliquer comme valeur.
L'affichage dans la mémoire tampon de l'agenda est optimal si la catégorie ne
comporte pas plus de 10 caractères. Vous pouvez définir des icônes pour la catégorie
en personnalisant la variable org-agenda-category-icon- alist.
Chapitre 11 : Vues de 205
l'agenda

11.4.2 Spécifications relatives à l'heure du jour


Le mode Org vérifie chaque point de l'ordre du jour en fonction d'une spécification
d'heure. L'heure peut faire partie de l'horodatage qui a déclenché l'inclusion dans l'ordre
du jour, par exemple
<2005-05-10 Tue 19:00>
Les plages de temps peuvent être spécifiées avec deux horodatages :
<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>
Dans le titre de l'entrée elle-même, une heure (plage) - comme "12:45" ou "8:30-
1pm" - peut également apparaître sous forme de texte brut7 .
Si l'agenda intègre le journal Emacs (voir Section 11.3.1 [Agenda
hebdomadaire/quotidien], page 111), les indications de temps dans les entrées du
journal sont également reconnues.
Pour l'affichage de l'agenda, le mode Org extrait l'heure et l'affiche dans un format
standard de 24 heures dans le préfixe. Les exemples d'heures présentés dans les
paragraphes précédents se retrouveraient dans l'agenda de la manière suivante :
8:30-13:00 Arthur Dent s'allonge devant le bulldozer
12:45...... Le préfet Ford arrive et emmène Arthur au pub
19:00...... Le Vogon lit son poème
20:30-22:15 Marvin escorte les auto-stoppeurs jusqu'au pont.
Si l'agenda est en mode journée unique, ou pour l'affichage d'aujourd'hui, les entrées
chronométrées sont intégrées dans une grille horaire, comme par exemple
8:00......
8:30-13:00 Arthur Dent s'allonge devant le bulldozer
10:00......
12:00......
12:45...... Le préfet Ford arrive et emmène Arthur au pub 14:00......
16:00......
18:00......
19:00...... Le Vogon lit son poème
20:00......
20:30-22:15 Marvin escorte les auto-stoppeurs jusqu'au pont.
La grille horaire peut être activée et désactivée à l'aide de la variable org-agenda-
use-time-grid, et peut être configurée avec org-agenda-time-grid.

11.4.3 Tri des points de l'ordre du jour


Avant d'être insérés dans une vue, les éléments sont triés. La manière de procéder
dépend du type de vue.
• Pour l'agenda quotidien/hebdomadaire, les éléments de chaque jour sont triés.
L'ordre par défaut consiste à rassembler d'abord tous les éléments contenant une
spécification explicite de l'heure du jour. Ces entrées sont affichées au début de la
liste, en tant que programme de la journée. Ensuite, les éléments restent groupés en
catégories, dans l'ordre donné par org-agenda-files. Dans chaque catégorie, les
éléments sont triés par priorité (voir Section 5.4 [Priorités], page 56), ce qui signifie
qu'ils sont classés par ordre de priorité.
7
Vous pouvez toutefois désactiver cette fonction en attribuant à la variable org-agenda-search-headline-for-time la valeur
nil.
Chapitre 11 : Vues de 206
l'agenda
valeur.
Chapitre 11 : Vues de 207
l'agenda

se compose de la priorité de base (2000 pour la priorité "A", 1000 pour la priorité "B"
et 0 pour la priorité "C"), plus des incréments supplémentaires pour les éléments
programmés en retard ou à échéance.
• Pour la liste TODO, les éléments restent dans l'ordre des catégories, mais à
l'intérieur de chaque catégorie, le tri se fait en fonction de la priorité (voir Section 5.4
[Priorités], page 56). La priorité utilisée pour le tri dérive du cookie de priorité, avec
des ajouts en fonction de la proximité d'un élément par rapport à sa date
d'échéance ou de planification.
• Pour les correspondances de balises, les éléments ne sont pas triés du tout, mais
apparaissent simplement dans l'ordre dans lequel ils se trouvent dans les fichiers de
l'agenda.
Le tri peut être personnalisé à l'aide de la variable org-agenda-sorting-strategy, et
peut également inclure des critères basés sur l'effort estimé d'une entrée (voir Section
8.5 [Estimation de l'effort], page 91).

11.4.4 Filtrer/limiter les points de l'ordre du jour


Les commandes intégrées ou personnalisées de l'agenda sont définies de manière
statique. Les filtres et les limites de l'agenda permettent de réduire de manière flexible la
liste des entrées de l'agenda.
Les filtres ne modifient que la visibilité des éléments, sont très rapides et sont
principalement utilisés de manière interactive8 . Vous pouvez passer rapidement d'un
filtre à l'autre sans avoir à recréer l'agenda. Les limites, quant à elles, prennent effet
avant que le tampon de l'agenda ne soit rempli. Elles sont donc surtout utiles lorsqu'elles
sont définies en tant que variables locales dans des commandes d'agenda
personnalisées.

Filtrage dans l'agenda


La commande générale de filtrage est org-agenda-filter, liée à /. Avant de la
présenter, nous décrivons les commandes pour les différents types de filtres. Toutes les
commandes de filtrage gèrent les préfixes de la même manière : Un simple préfixe C-u
annule le filtre, et supprime donc les lignes sélectionnées par le filtre. Un préfixe double
ajoute la nouvelle condition de filtrage à celle(s) déjà en place, de sorte que les
éléments de filtrage sont accumulés.
\N- (org-agenda-filter-by-tag)
Filtrer la vue de l'agenda par rapport à une balise. Une lettre de sélection de
balise vous est demandée ; SPC signifie n'importe quelle balise. En appuyant
sur la touche TAB à cette invite, vous pouvez sélectionner une balise, y
compris les balises qui n'ont pas de caractère de sélection. La commande
masque alors toutes les entrées qui ne contiennent pas ou n'héritent pas de
cette balise. En appuyant sur + ou - à l'invite, on passe d'un filtrage pour ou
contre la balise suivante. Pour effacer le filtre, appuyez deux fois sur \N
(une fois pour rappeler la commande, et une fois à l'invite).
< (org-agenda-filtre-par-categorie)
Filtre sur la catégorie de la ligne au point, et n'affiche que les entrées de
cette catégorie. Lorsqu'elle est appelée avec un argument préfixe, elle
masque toutes les entrées de la catégorie au point. Pour effacer le filtre,
appeler à nouveau cette commande en appuyant sur <.
Chapitre 11 : Vues de 208
l'agenda
8 Les
commandes d'agenda personnalisées peuvent prédéfinir un filtre en liant l'une des variables org-
agenda-tag- filter-preset, org-agenda-category-filter-preset, org-agenda-effort-filter-
preset ou org-agenda-regexp-filter-preset en tant qu'option. Ce filtre est ensuite appliqué à la
vue et persiste en tant que filtre de base lors des actualisations et des filtrages plus secondaires. Le filtre
est une propriété globale de l'ensemble de la vue de l'agenda. Dans le cas d'un agenda par blocs, vous
ne devez le définir que dans la section des options globales, et non dans la section d'un bloc individuel.
Chapitre 11 : Vues de 209
l'agenda

= (org-agenda-filter-by-regexp)
Filtrer l'affichage de l'agenda par une expression régulière : n'afficher que les
entrées de l'agenda correspondant à l'expression régulière saisie par
l'utilisateur. Pour effacer le filtre, rappelez la commande en appuyant sur =.
(org-agenda-filtre-par-effort)
Filtrez la vue de l'agenda en fonction des estimations d'effort, afin de
sélectionner les tâches qui prennent le temps nécessaire. Vous devez
d'abord établir une liste globale des efforts, par exemple
(setq org-global-properties
'(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00"))))
Vous pouvez ensuite filtrer un effort en tapant d'abord un opérateur, parmi <, > et
=, puis l'indice à un chiffre d'une estimation de l'effort dans votre tableau de
valeurs autorisées, où 0 signifie la 10e valeur. Le filtre se limite alors aux
entrées dont l'effort est inférieur ou égal, égal ou supérieur ou égal à la
valeur sélectionnée. Pour l'application de l'opérateur, les entrées sans effort
défini sont traitées selon la valeur de org-sort-agenda-noeffort-is-high.
Pour effacer le filtre, appuyez sur
_ deux fois (une fois pour rappeler la commande, et une fois à la première invite).
^ (org-agenda-filter-by-top-headline)
Filtre la vue de l'agenda en cours et n'affiche que les éléments qui tombent
sous le même titre de premier niveau que l'entrée en cours. Pour effacer le
filtre, rappelez cette commande en appuyant sur ^.
/ (org-agenda-filter)
Il s'agit de l'interface unifiée pour quatre des cinq méthodes de filtrage
décrites ci-dessus. À l'invite, spécifiez différents éléments de filtrage dans
une seule chaîne de caractères, avec un support de complétion complet. Par
exemple,
+work-John+<0:10-/plot/
sélectionne les entrées de la catégorie "travail" et les estimations d'effort
inférieures à 10 minutes, et désélectionne les entrées avec l'étiquette "John"
ou correspondant à l'expression rationnelle "plot" (voir Section 17.9
[Expressions régulières], page 254). Vous pouvez omettre "+" si cela
n'entraîne pas d'ambiguïté. La séquence des éléments est arbitraire. La
syntaxe du filtre suppose qu'il n'y a pas de chevauchement entre les
catégories et les balises. Dans le cas contraire, les balises sont prioritaires.
Si vous répondez à l'invite par la chaîne vide, tout filtrage est supprimé. Si
un filtre est spécifié, il remplace tous les filtres actuels. Mais si vous appelez
la commande avec un double argument préfixe, ou si vous ajoutez un "+"
supplémentaire (par exemple, "++travail") au début de la chaîne, les
nouveaux éléments de filtrage sont ajoutés aux éléments actifs. Un
argument préfixe unique applique l'ensemble du filtre dans un sens négatif.
| (org-agenda-filter-remove-all)
Supprimer tous les filtres dans la vue de l'agenda en cours.
Filtrage des étiquettes calculées
Si la variable org-agenda-auto-exclude-function est définie comme une fonction
définie par l'utilisateur, cette fonction peut sélectionner les balises qui doivent être
utilisées comme filtre de balises lorsqu'elles sont demandées. La fonction sera appelée
Chapitre 11 : Vues de 210
l'agenda
avec les versions minuscules de toutes les balises représentées dans la vue actuelle. La
fonction
Chapitre 11 : Vues de 211
l'agenda

doit renvoyer ""-tag"" si le filtre doit supprimer les entrées avec cette balise, ""+tag""
si seules les entrées avec cette balise doivent être conservées, ou ""nil"" si cette balise
n'est pas pertinente. Par exemple, supposons que vous utilisiez une balise "Net" pour
identifier les tâches nécessitant un accès au réseau, une balise "Errand" pour les
courses en ville et une balise "Call" pour les appels téléphoniques. Vous pourriez
exclure automatiquement ces balises en fonction de la disponibilité de l'internet, et en
dehors des heures de bureau, avec quelque chose comme ceci :
(defun my-auto-exclude-fn (tag)
(when (cond ((string= tag "net")
(/= 0 (call-process "/sbin/ping" nil nil nil
"-c1" "-q" "-t1" "mail.gnu.org"))
((member tag '("errand" "call")))
(let ((hr (nth 2 (decode-time))))
(ou (< hr 8) (> hr 21)))))
(concat "-" tag)))

(setq org-agenda-auto-exclude-function #'my-auto-exclude-fn)


Vous pouvez appliquer ce filtre auto-adaptatif en utilisant un argument de préfixe
triple à org-agenda- filter, c'est-à-dire en appuyant sur C-u C-u C-u /, ou en appuyant
sur RET dans org-agenda-filter-by-tag.
Fixer des limites à l'ordre du jour
Voici une liste d'options que vous pouvez définir, soit globalement, soit localement dans
vos vues d'agenda personnalisées (voir Section 11.6 [Vues d'agenda personnalisées],
page 130).
org-agenda-max-entries
Limiter le nombre d'inscriptions.
org-agenda-max-effort
Limiter la durée des efforts cumulés (en minutes).
org-agenda-max-todos
Limiter le nombre d'entrées avec des mots-clés TODO.
org-agenda-max-tags
Limiter le nombre d'entrées marquées.
Lorsqu'elle est définie sur un nombre entier positif, chaque option exclut les entrées
des autres catégories : par exemple, '(setq org-agenda-max-effort 100)' limite
l'agenda à 100 minutes d'effort et exclut toute entrée qui n'a pas de propriété d'effort. Si
vous souhaitez inclure des entrées sans propriété d'effort, utilisez une valeur négative
pour org-agenda-max-effort. Une configuration utile consiste à utiliser org-agenda-
max-entries localement dans une commande personnalisée. Par exemple, cette
commande personnalisée affiche les cinq prochaines entrées avec le mot-clé TODO
'NEXT'.
(setq org-agenda-custom-commands
'(("n" todo "NEXT"
((org-agenda-max-entries 5)))))
Une fois que vous avez marqué l'une de ces cinq entrées comme FAIT, la
reconstruction de l'agenda reprendra les cinq entrées suivantes, y compris la première
entrée qui a été exclue jusqu'à présent.
Vous pouvez également fixer dynamiquement des limites temporaires, qui sont
perdues lors de la reconstruction de l'agenda :
Chapitre 11 : Vues de 212
l'agenda
~ (org-agenda-limit-interactively)
Le type de limite à appliquer et sa valeur sont demandés.
Chapitre 11 : Vues de 213
l'agenda

11.5 Commandes dans la mémoire tampon de l'agenda


Les entrées dans la mémoire tampon de l'agenda sont liées au fichier Org ou au fichier
journal d'où elles proviennent. Vous n'êtes pas autorisé à modifier la mémoire tampon de
l'agenda elle-même, mais des commandes vous permettent d'afficher et de sauter à
l'emplacement de l'entrée d'origine et de modifier les fichiers Org "à distance" à partir de
la mémoire tampon de l'agenda. De cette manière, toutes les informations ne sont
stockées qu'une seule fois, ce qui élimine le risque de divergence entre les fichiers
d'agenda et de notes.
Certaines commandes peuvent être exécutées en cliquant avec la souris sur les
lignes de l'agenda. Pour les autres commandes, le point doit se trouver sur la ligne
souhaitée.

Motion
n (org-agenda-next-line)
Ligne suivante (identique à DOWN et C-n).
p (org-agenda-ligne précédente)
Ligne précédente (identique à UP et C-p).
Voir / Aller au fichier Org
SPC ou mouse-3 (org-agenda-show-and-scroll-up)
Afficher l'emplacement d'origine de l'élément dans une autre fenêtre. Avec
un argument préfixe, s'assurer que les tiroirs restent pliés.
L (org-agenda-recenter)
Afficher l'emplacement d'origine et recentrer la fenêtre.
TAB ou souris-2 (org-agenda-goto)
Aller à l'emplacement d'origine de l'élément dans une autre fenêtre.
RET (org-agenda-switch-to)
Rendez-vous à l'emplacement d'origine de l'élément et supprimez les autres fenêtres.
F (org-agenda-follow-mode)
Basculer le mode Suivi. En mode Suivi, lorsque vous déplacez un point dans
le tampon d'agenda, l'autre fenêtre affiche toujours l'emplacement
correspondant dans le fichier Org. Le réglage initial de ce mode dans les
nouveaux tampons d'agenda peut être défini à l'aide de la variable org-
agenda-start-with-follow-mode.
C-c C-x b (org-agenda-tree-to-indirect-buffer)
Affiche le sous-arbre complet de l'élément courant dans une mémoire
tampon indirecte. Avec un préfixe numérique N, remonter au niveau N et
prendre l'arbre. Si N est négatif, remonter d'autant de niveaux. Avec un
préfixe C-u, ne pas supprimer le tampon indirect précédemment utilisé.
C-c C-o (org-agenda-open-link)
Suivre un lien dans l'entrée. Cette option propose une sélection de liens
dans le texte appartenant au nœud Org référencé. S'il n'y a qu'un seul lien, il
est suivi sans demande de sélection.

Modifier l'affichage
A Sélectionner interactivement une autre vue de l'agenda et l'ajouter à la vue actuelle.
Chapitre 11 : Vues de 214
l'agenda

o Supprimer d'autres fenêtres.


v d ou short d (org-agenda-day-view)
Passer à la vue journalière. Lorsque l'on passe à la vue journalière, ce
paramètre devient la valeur par défaut pour les actualisations ultérieures de
l'agenda. Un préfixe numérique peut être utilisé pour passer directement à
un jour spécifique de l'année. Par exemple, 32 d permet de passer au 1er
février. Lors du réglage de la vue journalière, l'année peut également être
encodée dans l'argument de préfixe. Par exemple, 200712 d permet de
passer au 12 janvier 2007. Si une telle spécification d'année ne comporte
qu'un ou deux chiffres, elle est étendue à l'une des 30 années suivantes ou
des 69 dernières années.
v w ou short w (org-agenda-week-view)
Passer à l'affichage hebdomadaire. Lorsque l'on passe à l'affichage
hebdomadaire, ce paramètre devient la valeur par défaut pour les
actualisations ultérieures de l'agenda. Un préfixe numérique peut être utilisé
pour passer directement à un jour spécifique de la semaine ISO. Par
exemple 9 w pour la semaine ISO numéro 9. Lors du réglage de l'affichage
des semaines, l'année peut également être encodée dans l'argument
préfixe. Par exemple, 200712 w permet de passer à la semaine 12 de 2007.
Si une telle spécification d'année ne comporte qu'un ou deux chiffres, elle
est étendue à l'une des 30 années suivantes ou des 69 dernières années.
v m (org-agenda-month-view)
Passer à la vue mensuelle. Les vues mensuelles étant lentes à créer, elles
ne deviennent pas la valeur par défaut lors des actualisations ultérieures de
l'agenda. Un préfixe numérique peut être utilisé pour passer directement à un
jour spécifique du mois. Lors de la définition de l'affichage du mois, l'année
peut également être encodée dans l'argument préfixe. Par exemple, 200712 m
permet de passer au mois de décembre 2007. Si une telle spécification
d'année ne comporte qu'un ou deux chiffres, elle est étendue à l'une des 30
années suivantes ou des 69 dernières années.
v y (org-agenda-year-view)
Passer à la vue de l'année. Les vues de l'année étant lentes à créer, elles ne
deviennent pas la valeur par défaut pour les actualisations ultérieures de
l'agenda. Un préfixe numérique peut être utilisé pour passer directement à
un jour spécifique de l'année.
v SPC (vue org-agenda-reset)
Réinitialise la vue actuelle à org-agenda-span.
f (org-agenda-later)
Avancer dans le temps pour afficher la période qui suit celle en cours. Par
exemple, si l'affichage couvre une semaine, il passe à la semaine suivante.
Avec un argument préfixe, répéter cela plusieurs fois.
b (org-agenda-earlier)
Remonter dans le temps pour afficher des dates antérieures.
. (org-agenda-goto-today)
Rendez-vous aujourd'hui.
j (org-agenda-goto-date)
Demandez un rendez-vous et allez-y.
Chapitre 11 : Vues de 215
l'agenda
J (org-agenda-clock-goto)
Accéder à la tâche en cours d'enregistrement dans la mémoire tampon de l'agenda.
Chapitre 11 : Vues de 216
l'agenda

D (org-agenda-toggle-diary)
Basculer l'inclusion des entrées d'agenda. Voir la section 11.3.1 [Agenda
hebdomadaire/journalier], page 111.
v l ou v L ou short l (org-agenda-log-mode)
Basculer le mode journal. En mode journal, les entrées qui ont été marquées
comme effectuées lorsque la journalisation était activée (voir la variable org-
log-done) sont affichées dans l'agenda, de même que les entrées qui ont été
pointées ce jour-là. Vous pouvez configurer les types d'entrées qui doivent
être incluses dans le mode journal en utilisant la variable org-agenda-log-
mode-items. Lorsqu'il est appelé avec un argument préfixe C-u, il affiche
toutes les entrées possibles du journal, y compris les changements d'état.
Lorsqu'il est appelé avec deux arguments de préfixe C-u C-u, il n'affiche que
les informations de journalisation, rien d'autre. v L est équivalent à C-u v l.
v [ ou court [ (org-agenda-manipuler-query-add)
Inclure les horodatages inactifs dans la vue actuelle. Uniquement pour les
agendas hebdomadaires/journaliers.
v a (org-agenda-archives-mode)
Basculer en mode Archives. En mode Archives, les arbres qui sont archivés
(voir Section 9.2.2 [Archivage interne], page 96) sont également numérisés
lors de la production de l'agenda. Pour quitter le mode Archives, appuyez à
nouveau sur v a.
vA Basculer en mode Archives. Inclut également tous les fichiers d'archive.
v R ou R court (org-agenda-clockreport-mode)
Basculer le mode Rapport d'horloge. En mode Rapport d'horloge, l'agenda
quotidien/hebdomadaire affiche un tableau avec les heures chronométrées
pour l'intervalle de temps et l'étendue du fichier couverts par la vue de
l'agenda en cours. Le paramètre initial de ce mode dans les nouveaux
tampons d'agenda peut être défini à l'aide de la variable org-agenda-start-
with-clockreport- mode. En utilisant un argument préfixe lors du
basculement de ce mode (c'est-à-dire C-u R), la table d'horloge ne montre pas
les contributions des entrées qui sont cachées par le filtrage de l'agenda9 .
Voir aussi les variables org-clock-report-include-clocking-task et org-
agenda-clock-report-header.
vc Affiche les entrées d'horloge qui se chevauchent, les écarts d'horloge et les
autres problèmes d'horloge dans la plage d'agenda actuelle. Vous pouvez
alors visiter les lignes d'horloge et les corriger manuellement. Voir la variable
org-agenda-clock-consistency-checks pour savoir comment
personnaliser la définition de ce qui constitue un problème d'horloge. Pour
revenir à l'affichage normal de l'agenda, appuyez sur l pour quitter le mode
Carnet de route.
v E ou E court (org-agenda-entry-text-mode)
Basculer le mode texte d'entrée. En mode texte d'entrée, un certain nombre
de lignes du nœud Org outline référencé par une ligne d'agenda sont
affichées sous la ligne. Le nombre maximum de lignes est donné par la
variable org-agenda-entry-text- maxlines. L'appel de cette commande
avec un préfixe numérique modifie temporairement ce nombre en fonction
de la valeur du préfixe.
G (org-agenda-toggle-time-grid)
Chapitre 11 : Vues de 217
l'agenda Permet d'activer ou de désactiver la grille horaire. Voir aussi les variables
org-agenda-use-time- grid et org-agenda-time-grid.
9
Seul le filtrage des balises est respecté ici, le filtrage de l'effort est ignoré.
Chapitre 11 : Vues de 218
l'agenda

r (org-agenda-redo)
g Recrée la mémoire tampon de l'agenda, par exemple pour refléter les
changements après modification des horodatages des éléments avec S-LEFT
et S-RIGHT. Lorsque le tampon est la liste TODO globale, un argument
préfixe est interprété pour créer une liste sélective pour un mot-clé TODO
spécifique.
C-x C-s ou s court (org-save-all-org-buffers)
Sauvegarde tous les tampons Org de la session Emacs en cours, ainsi que l'emplacement des ID.
C-c C-x C-c (org-agenda-columns)
Invoquer la vue en colonnes (voir Section 7.5 [Vue en colonnes], page 71)
dans la mémoire tampon de l'agenda. Le format de la vue en colonnes est
tiré de l'entrée au point ou, s'il n'y a pas d'entrée au point, de la première
entrée dans la vue de l'agenda. Ainsi, le format de cette entrée dans le
tampon d'origine (provenant d'une propriété, d'un mot-clé 'COLUMNS' ou de la
variable par défaut org-columns-default- format) est utilisé dans
l'agenda.
C-c C-x > (org-agenda-remove-restriction-lock)
Supprimer le verrou de restriction sur l'agenda, s'il est actuellement limité à
un fichier ou à une sous-arborescence (voir Section 11.1 [Fichiers d'agenda],
page 109).
M-UP (org-agenda-drag-line-backward)
Faire glisser la ligne au point vers l'arrière d'une ligne. Avec un préfixe
numérique, faire glisser la ligne vers l'arrière d'autant de lignes.
Le déplacement des lignes de l'agenda ne persiste pas après un
rafraîchissement de l'agenda et ne modifie pas les fichiers Org qui y
contribuent.
M-DOWN (org-agenda-drag-line-forward)
Faire glisser la ligne au point vers l'avant d'une ligne. Avec un préfixe
numérique, la ligne est déplacée d'autant de lignes vers l'avant.

Edition à distance
0--9 Argument de chiffre.
C-_ (org-agenda-undo)
Annuler une modification due à une commande d'édition à distance. La
modification est annulée à la fois dans la mémoire tampon de l'agenda et
dans la mémoire tampon distante.
t (org-agenda-todo)
Change l'état TODO de l'élément, à la fois dans l'agenda et dans le fichier
Org original. Un préfixe arg est transmis à la commande org-todo, ainsi
par exemple un préfixe are C-u déclenchera la prise d'une note pour
documenter le changement d'état.
C-S-RIGHT (org-agenda-todo-nextset)
Passer à la série suivante de mots-clés TODO.
C-S-LEFT, org-agenda-todo-previousset
Passer à l'ensemble précédent de mots-clés TODO.
C-k (org-agenda-kill)
Chapitre 11 : Vues de 219
l'agenda Supprimer le point actuel de l'ordre du jour ainsi que toute la sous-
arborescence qui lui appartient dans le fichier Org d'origine. Si le texte à
supprimer à distance est plus long qu'une ligne,
Chapitre 11 : Vues de 220
l'agenda

le kill doit être confirmé par l'utilisateur. Voir la variable org-agenda-


confirm- kill.
C-c C-w (org-agenda-refile)
Refiler l'entrée au point.
C-c C-x C-a ou a court (org-agenda-archive-default-with-confirmation)
Archiver le sous-arbre correspondant à l'entrée au point en utilisant la
commande d'archivage par défaut définie dans org-archive-default-
command. Lors de l'utilisation de la clé a, une confirmation est requise.
C-c C-x a (org-agenda-toggle-archive-tag)
Bascule la balise d'archivage (voir Section 9.2.2 [Archivage interne], page
96) pour la ligne de titre actuelle.
C-c C-x A (org-agenda-archive-to-archive-sibling)
Déplace le sous-arbre correspondant à l'entrée actuelle vers son frère d'archive.
C-c C-x C-s ou $ court (org-agenda-archive)
Archiver la sous-arborescence correspondant au titre actuel. Cela signifie
que l'entrée est déplacée vers l'emplacement d'archivage configuré, très
probablement un autre fichier.
T (org-agenda-show-tags)
Affiche toutes les balises associées à l'élément courant. Ceci est utile si
vous avez désactivé org-agenda-show-inherited-tags, mais que vous
voulez quand même voir toutes les balises d'un titre occasionnellement.
: (org-agenda-set-tags)
Définir les balises pour le titre actuel. S'il existe une région active dans
l'agenda, modifier une balise pour tous les titres de la région.
, (org-agenda-priorité)
Définir la priorité de l'élément en cours. Le mode Org demande le caractère
de priorité. Si vous répondez par SPC, le témoin de priorité est supprimé de
l'entrée.
+ ou S-UP (org-agenda-priority-up)
Augmenter la priorité de l'élément en cours. La priorité est modifiée dans la
mémoire tampon d'origine, mais l'ordre du jour n'est pas modifié. Utilisez la
touche r pour cela.
- ou S-DOWN (org-agenda-priority-down)
Diminuer la priorité de l'élément en cours.
C-c C-x e ou short e (org-agenda-set-effort)
Définit la propriété d'effort pour l'élément en cours.
C-c C-z ou z court (org-agenda-add-note)
Ajoutez une note à l'entrée. Cette note est enregistrée, puis classée au
même endroit que les notes de changement d'état. En fonction de org-log-
into-drawer, cela peut être à l'intérieur d'un tiroir.
C-c C-a (org-attach)
Dispatcher pour toutes les commandes liées aux pièces jointes.
C-c C-s (org-agenda-schedule)
Programmer cet élément. Avec un argument de type préfixe, supprimer l'horodatage de la
programmation.
Chapitre 11 : Vues de 221
l'agenda

C-c C-d (org-agenda-deadline)


Fixe une date limite pour cet élément. Avec un argument préfixe, supprimer la date limite.
S-RIGHT (org-agenda-do-date-later)
Modifie l'horodatage associé à la ligne actuelle d'un jour dans le futur. Si la
date se situe dans le passé, le premier appel à cette commande la déplace
à aujourd'hui. Avec un préfixe numérique, la date est décalée d'autant de
jours. Par exemple, 3 6 5 S-RIGHT la modifie d'un an. Avec un préfixe C-u,
changez l'heure d'une heure. Si vous répétez immédiatement la commande,
elle continuera à changer les heures même sans l'argument du préfixe.
Avec un double préfixe C-u C-u, faites de même pour changer les minutes. Le
timbre est modifié dans le fichier Org d'origine, mais le changement n'est
pas directement reflété dans la mémoire tampon de l'agenda. Utilisez r ou g
pour mettre à jour le tampon.
S-LEFT (org-agenda-do-date-earlier)
Modifier l'horodatage associé à la ligne actuelle d'un jour dans le passé.
> (org-agenda-date-prompt)
Modifier l'horodatage associé à la ligne en cours. La touche > a été choisie,
car elle correspond à S-. sur mon clavier.
I (org-agenda-clock-in)
Démarrer l'horloge de l'élément en cours. Si une horloge est déjà en
marche, elle est arrêtée en premier.
O (org-agenda-clock-out)
Arrêter l'horloge précédemment démarrée.
X (org-agenda-clock-cancel)
Annule l'horloge en cours.
J (org-agenda-clock-goto)
Sauter à l'horloge en cours dans une autre fenêtre.
k (org-agenda-capture)
Comme org-capture, mais en utilisant la date du point comme date par
défaut pour le modèle de capture. Voir org-capture-use-agenda-date
pour en faire le comportement par défaut de org-capture.

Modification à distance en bloc des entrées sélectionnées


m (org-agenda-bulk-mark)
Marquer l'entrée au point pour l'action en bloc. S'il existe une région active
dans l'agenda, marquer les entrées dans la région. Avec un préfixe
numérique, marquer autant d'entrées successives.
* (org-agenda-bulk-mark-all)
Marquer toutes les entrées visibles de l'agenda pour une action en bloc.
u (org-agenda-bulk-unmark)
Supprimer le marquage de l'entrée pour l'action en bloc.
Chapitre 11 : Vues de 222
l'agenda

U (org-agenda-bulk-unmark-all)
Désélectionner toutes les entrées marquées en vue d'une action groupée.
M-m (org-agenda-bulk-toggle)
Marque de basculement de l'entrée au point d'action de masse.
M-* (org-agenda-bulk-toggle-all)
Marque de basculement de chaque entrée pour l'action en bloc.
% (org-agenda-bulk-mark-regexp)
Marquer les entrées correspondant à une expression régulière pour une action en bloc.
B (org-agenda-bulk-action)
Action globale : agir sur toutes les entrées marquées dans l'agenda. Une
autre touche est demandée pour sélectionner l'action à appliquer.
L'argument préfixe de B est transmis aux commandes s et d, pour supprimer
en bloc ces horodatages spéciaux. Par défaut, les marques sont supprimées
après la suppression en bloc. Si vous voulez qu'elles persistent, mettez org-
agenda-bulk-persistent-marks à t ou tapez p à l'invite.
p Permet d'activer les marques persistantes.
$ Archiver toutes les entrées sélectionnées.
A Archiver les entrées en les déplaçant vers leurs fratries d'archives respectives.
t Changer l'état d'un TODO. Cette fonction demande un seul mot-
clé TODO et modifie l'état de toutes les entrées sélectionnées, en
contournant le blocage et en supprimant les notes
d'enregistrement, mais pas les horodatages.
+ Ajouter une balise à toutes les entrées sélectionnées.
- Supprimer une balise de toutes les entrées sélectionnées.
s Programmer tous les éléments à une nouvelle date. Pour
décaler les dates de programmation existantes d'un nombre fixe
de jours, utilisez un nom commençant par un double plus à
l'invite, par exemple "++8j" ou "++2w".
d Fixer la date limite à une date spécifique.
r Demande une cible de refichage unique et déplace toutes les
entrées. Les entrées ne figurent plus dans l'agenda ;
rafraîchissez (g) pour les faire réapparaître.
S Reprogrammer aléatoirement dans les N jours à venir. N est
demandé. Avec un argument préfixe (C-u B S), la répartition se
fait uniquement sur les jours de la semaine.
f Appliquer une fonction10 aux entrées marquées. Par exemple,
la fonction ci-dessous définit la propriété "CATEGORY" des
entrées à "web".
(defun set-category
() (interactive
"P")
(let ((marker (or (org-get-at-bol 'org-hd-marker)
(org-agenda-error))))
(org-with-point-at marker
(org-back-to-heading t)
Chapitre 11 : Vues de 223
l'agenda (org-set-property "CATEGORY" "web"))))
10
Vous pouvez également créer des fonctions personnalisées persistantes via org-agenda-bulk-custom-functions.
Chapitre 11 : Vues de 224
l'agenda

Commandes de calendrier
c (org-agenda-goto-calendrier)
Ouvrez le calendrier Emacs et allez à la date indiquée dans l'agenda.
c (org-calendar-goto-agenda)
Lorsque vous êtes dans le calendrier, calculez et montrez l'agenda de l'Org pour la date en
question.
i (org-agenda-diary-entry)
Insère une nouvelle entrée dans l'agenda, en utilisant la date au point et
(pour les entrées en bloc) la date à la marque. Cette commande ajoute une
entrée au fichier d'agenda Emacs11 , d'une manière similaire à la commande
i du calendrier. Le fichier de l'agenda apparaît dans une autre fenêtre, où
vous pouvez ajouter l'entrée.
Si vous configurez org-agenda-diary-file pour qu'il pointe vers un fichier
Org, Org crée des en- tries dans ce fichier à la place. La plupart des entrées
sont stockées dans une arborescence basée sur la date qui facilitera plus tard
l'archivage des rendez-vous des mois/années précédents. L'arbre est
construit sous une entrée avec une propriété 'DATE_TREE', ou bien avec des
années comme entrées de premier niveau. Emacs vous demande le texte
de l'entrée - si vous le spécifiez, l'entrée est créée dans org-agenda-diary-
file sans autre interaction. Si vous appuyez directement sur RET à l'invite
sans taper de texte, le fichier cible est affiché dans une autre fenêtre pour
que vous puissiez y terminer l'entrée. Voir aussi la commande k r.
M (org-agenda-phases-de-la-lune)
Montrer les phases de la lune pour les trois mois autour de la date actuelle.
S (org-agenda-sunrise-sunset)
Affiche les heures de lever et de coucher du soleil. La localisation
géographique doit être définie avec des variables de calendrier, voir la
documentation du calendrier Emacs.
C (org-agenda-convert-date)
Convertissez la date du point dans de nombreux autres calendriers culturels et historiques.
H (org-agenda-vacances)
Afficher les vacances pendant trois mois autour de la date de référence.
Quitter et sortir
q (org-agenda-quit)
Quitter l'agenda, supprimer la mémoire tampon de l'agenda.
x (org-agenda-exit)
Quitter l'agenda, supprimer le tampon de l'agenda et tous les tampons
chargés par Emacs pour la compilation de l'agenda. Les tampons créés par
l'utilisateur pour visiter les fichiers Org ne sont pas supprimés.

11.6 Vues personnalisées de l'agenda


Les commandes d'agenda personnalisées ont deux objectifs : stocker et accéder
rapidement aux recherches d'ODD et de balises fréquemment utilisées, et créer des
tampons d'agenda composites spéciaux. Les commandes d'agenda personnalisées sont
accessibles via le répartiteur (voir Section 11.2 [Répartiteur d'agenda], page 110), tout
comme les commandes par défaut.
Chapitre 11 : Vues de 225
l'agenda
Ce fichier est analysé pour l'agenda lorsque org-agenda-include-diary est défini.
11
Chapitre 11 : Vues de 226
l'agenda

11.6.1 Stockage des recherches


La première application des recherches personnalisées est la définition de raccourcis
clavier pour les recherches fréquemment utilisées, soit en créant un tampon d'agenda, soit
un arbre clairsemé (ce dernier ne couvrant bien sûr que le tampon actuel).
Les commandes personnalisées sont configurées dans la variable org-agenda-
custom-commands. Vous pouvez personnaliser cette variable, par exemple en appuyant
sur C depuis le distributeur d'agenda (voir Section 11.2 [Distributeur d'agenda], page
110). Vous pouvez également la définir directement avec Emacs Lisp dans le fichier
Emacs init. L'exemple suivant contient toutes les vues d'agenda valides :
(setq org-agenda-custom-commands
'(("x" agenda)
("y" agenda*)
("w" todo "WAITING")
("W" todo-tree "EN ATTENTE")
("u" tags "+boss-urgent")
("v" tags-todo "+boss-
urgent") ("U" tags-tree
"+boss-urgent") ("f" occur-
tree "\<FIXME\>")
("h" . "HOME+Name tags searches") ;description pour le
préfixe "h" ("hl" tags "+home+Lisa")
("hp" tags "+home+Peter")
("hk" tags "+home+Kim")))
La chaîne initiale de chaque entrée définit les touches sur lesquelles vous devez
appuyer après la commande du répartiteur pour accéder à la commande. En général, il
s'agit d'un seul caractère, mais si vous avez plusieurs commandes similaires, vous
pouvez également définir des combinaisons de deux lettres où le premier caractère est
le même dans plusieurs combinaisons et sert de touche de préfixe12 . Le deuxième
paramètre est le type de recherche, suivi de la chaîne ou de l'expression régulière à
utiliser pour la correspondance. L'exemple ci-dessus définira donc :
x comme une recherche globale des entrées de l'agenda planifiées13 cette semaine/ce jour.
y comme la même recherche, mais seulement pour les entrées avec une
spécification d'heure comme '[h]h:mm'- considérez-les comme des rendez-
vous.
w pour une recherche globale des entrées TODO dont le mot-clé est 'WAITING'.
W est la même recherche, mais uniquement dans le tampon actuel et en
affichant les résultats sous la forme d'un arbre clairsemé.
u comme une recherche globale de titres étiquetés "patron" mais pas "urgent".
v La même recherche, mais en la limitant aux titres qui sont également des éléments TODO.
U comme la même recherche, mais uniquement dans le tampon actuel et en
affichant le résultat sous la forme d'un arbre clairsemé.
f pour créer un arbre clairsemé (encore une fois, uniquement le tampon
actuel) avec toutes les entrées contenant le mot "FIXME".
12
Vous pouvez fournir une description pour une clé de préfixe en insérant une cellule cons avec le préfixe et la description.
13
Planifié signifie ici que ces entrées sont accompagnées d'informations de planification, comme un
horodatage, une chaîne de caractères programmée ou une date limite. Voir org-agenda-entry-types
pour savoir comment définir les informations de planification à prendre en compte.
Chapitre 11 : Vues de 227
l'agenda

h comme commande de préfixe pour une recherche de balises 'HOME' où vous


devez appuyer sur une touche supplémentaire (l, p ou k) pour sélectionner
un nom (Lisa, Peter, ou Kim) comme balise supplémentaire à rechercher.
Notez que les vues de l'agenda *-tree doivent être appelées à partir d'un tampon
Org, car elles n'opèrent que sur le tampon actuel.

11.6.2 Agenda en bloc


Une autre possibilité consiste à construire des vues d'agenda qui comprennent les
résultats de plusieurs commandes, chacune d'entre elles créant un bloc dans la mémoire
tampon de l'agenda. Les commandes disponibles sont agenda pour l'agenda quotidien
ou hebdomadaire (tel que créé avec a), alltodo pour la liste TODO globale (telle que
construite avec t), stuck pour la liste des projets bloqués (telle qu'obtenue avec #) et les
commandes correspondantes discutées ci-dessus : todo, tags, et tags-todo.
Voici deux exemples :
(setq org-agenda-custom-commands
'(("h" "Agenda et tâches domestiques"
((agenda ""))
(tags-todo "home")
(tags "garden")))
("o" "Agenda et tâches liées au
bureau" ((agenda "")
(tags-todo
"travail") (tags
"bureau")))))
Cette définition permet de créer une vue multi-blocs pour les choses dont vous devez
vous occuper à la maison. Le tampon d'agenda qui en résulte contient votre agenda
pour la semaine en cours, tous les éléments TODO qui portent l'étiquette 'home', ainsi
que toutes les lignes étiquetées 'garden'. Enfin, la commande o permet d'obtenir une
vue similaire pour les tâches de bureau.

11.6.3 Définition des options pour les commandes personnalisées


Le mode Org contient un certain nombre de variables qui régissent la construction et
l'affichage de l'agenda. Les variables globales définissent le comportement de toutes les
commandes d'agenda, y compris les commandes personnalisées. Toutefois, si vous
souhaitez modifier certains paramètres pour une seule vue personnalisée, vous pouvez
le faire. Pour définir des options, il faut insérer une liste de noms de variables et de
valeurs au bon endroit dans org-agenda-custom-commands. Par exemple :
(setq org-agenda-custom-commands
'(("w" todo "WAITING"
((org-agenda-sorting-strategy '(priority-down))
(org-agenda-prefix-format " Mixed : ")))
("U" tags-tree "+boss-urgent"
((org-show-context-detail 'minimal)))
("N" recherche ""
((org-agenda-files '("~org/notes.org")))
(org-agenda-text-search-extra-files nil)))))
Désormais, la commande w trie les entrées collectées uniquement par priorité, et le
format du préfixe est modifié pour indiquer simplement "Mixed :" au lieu de donner la
catégorie de l'entrée. L'arbre de balises clairsemé de U s'avère maintenant ultra-
Chapitre 11 : Vues de 228
l'agenda car ni la hiérarchie des titres au-dessus de l'arbre de balises de
compact,
Chapitre 11 : Vues de 229
l'agenda

ni le titre qui suit la correspondance ne sont affichés. La commande N effectue une


recherche de texte limitée à un seul fichier.

Pour les jeux de commandes créant un agenda en bloc, org-agenda-custom-commands


dispose de deux emplacements distincts pour la définition des options. Vous pouvez
ajouter des options qui doivent être valables pour une seule commande du jeu, et des
options qui doivent être valables pour toutes les commandes du jeu. Les premières sont
simplement ajoutées à l'entrée de la commande ; les secondes doivent être ajoutées
après la liste des entrées de la commande. Reprenons l'exemple de l'agenda de bloc (voir
Section 11.6.2 [Agenda de bloc], page 132), changeons la stratégie de tri pour les
commandes h en priorité vers le bas, mais trions les résultats de la requête pour les
balises 'garden' dans l'ordre inverse, priorité vers le haut. Voici à quoi cela
ressemblerait :
(setq org-agenda-custom-commands
'(("h" "Agenda et tâches domestiques"
((agenda)
(tags-todo "home")
(tags "garden"
((org-agenda-sorting-strategy '(priority-up)))))
((org-agenda-sorting-strategy '(priority-down))))
("o" "Agenda et tâches liées au
bureau" ((agenda)
(tags-todo
"travail") (tags
"bureau")))))

Comme vous le voyez, la définition des valeurs et des parenthèses est un peu
complexe. En cas de doute, utilisez l'interface de personnalisation pour définir cette
variable - elle prend entièrement en charge sa structure. Une seule mise en garde :
lorsque vous définissez des options dans cette interface, les valeurs ne sont que des
expressions Lisp. Ainsi, si la valeur est une chaîne de caractères, vous devez ajouter
vous-même les guillemets doubles autour de la valeur.

Pour contrôler si une commande de l'agenda doit être accessible à partir d'un
contexte spécifique, vous pouvez personnaliser org-agenda-custom-commands-
contexts. Supposons par exemple que vous ayez une commande d'agenda pour afficher
une vue dont vous n'avez besoin que lorsque vous lisez des courriels. Vous devez alors
configurer cette option comme suit :
(setq org-agenda-custom-commands-contexts
'(("o" (in-mode . "message-mode"))))

Vous pouvez également dire que la clé de commande o doit faire référence à une
autre clé de commande r. Dans ce cas, ajoutez cette clé de commande comme suit :
(setq org-agenda-custom-commands-contexts
'(("o" "r" (in-mode . "message-mode"))))

Voir la docstring de la variable pour plus d'informations.

11.7 Exportation des vues de l'agenda


Chapitre 11 : Vues de 230
l'agenda
Si vous êtes loin de votre ordinateur, il peut être très utile d'avoir une version imprimée
de certaines vues de l'agenda à emporter. Le mode Org permet d'exporter des vues
d'agenda personnalisées sous forme de texte brut,
Chapitre 11 : Vues de 231
l'agenda

HTML14 , Postscript, PDF15 , et les fichiers iCalendar. Si vous ne voulez le faire


qu'occasionnellement, utilisez la commande suivante :
C-x C-w (org-agenda-write)
Écrire la vue de l'agenda dans un fichier.
Si vous devez exporter fréquemment certaines vues de l'agenda, vous pouvez
associer toute commande personnalisée de l'agenda à une liste de noms de fichiers de
sortie16 . Voici un exemple qui définit d'abord des commandes personnalisées pour
l'agenda et la liste globale des tâches à accomplir, ainsi qu'un certain nombre de fichiers
vers lesquels les exporter. Nous définissons ensuite deux commandes d'agenda en bloc
et spécifions également les noms de fichiers pour ces commandes. Les noms de fichiers
peuvent être relatifs au répertoire de travail actuel ou absolus.
(setq org-agenda-custom-commands
'(("X" agenda "" nil ("agenda.html" "agenda.ps"))
("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
("h" "Agenda et tâches domestiques"
((agenda "")
(tags-todo "home")
(tags "garden"))
nil
("~/views/home.html"))
("o" "Agenda et tâches liées au
bureau" ((agenda)
(tags-todo
"travail") (tags
"bureau")) nil
("~/views/office.ps" "~/calendars/office.ics"))))
L'extension du nom de fichier détermine le type d'exportation. S'il s'agit de '.html', le
mode Org utilise le paquet htmlize pour convertir le tampon en HTML et l'enregistrer
sous ce nom de fichier. Si l'extension est '.ps', ps-print-buffer-with-faces est utilisé
pour produire une sortie Postscript. Si l'extension est '.ics', l'exportation iCalendar est
exécutée sur tous les fichiers qui ont été utilisés pour construire l'agenda, et limite
l'exportation aux entrées listées dans l'agenda. Toute autre extension produit un fichier
ASCII simple.
Les fichiers d'exportation ne sont pas créés lorsque vous utilisez l'une de ces
commandes de manière interactive, car cela risquerait d'entraîner une surcharge de
travail. Au lieu de cela, il existe une commande spéciale pour produire tous les fichiers
spécifiés en une seule étape :
e (org-store-agenda-views)
Exporter toutes les vues de l'agenda auxquelles sont associés des noms de fichiers
d'exportation.
Vous pouvez utiliser la section des options des commandes d'agenda personnalisé
pour définir également des options pour les commandes d'exportation. Par exemple :
14
Pour HTML, vous devez installer 'htmlize.el' de Hrvoje Nikˇsi'c en tant que paquetage Emacs à partir
de l'ELPA NonGNU ou du dépôt de Hrvoje Nikˇsi'c.
15
Pour créer une sortie PDF, l'utilitaire Ghostscript ps2pdf doit être installé sur le système. La sélection
d'un fichier PDF crée également le fichier postscript.
16
Si vous souhaitez également stocker des vues standard telles que l'agenda hebdomadaire ou la liste
globale des tâches à accomplir, vous devez définir des commandes personnalisées pour ces vues afin
Chapitre 11 : Vues de 232
l'agenda
de pouvoir spécifier des noms de fichiers.
Chapitre 11 : Vues de 233
l'agenda

(setq org-agenda-custom-commands
'(("X" agenda "")
((ps-nombre-de-colonnes
2) (ps-landscape-mode
t))
(org-agenda-prefix-format " [ ]
") (org-agenda-with-colors nil)
(org-agenda-remove-tags t))
("theagenda.ps"))))
Cette commande définit deux options pour l'exportateur Postscript, afin qu'il imprime en
deux colonnes au format paysage - la page résultante peut être coupée en deux et utilisée
dans un agenda papier. Les autres paramètres modifient le préfixe de l'agenda afin
d'omettre les informations relatives à la catégorie et à l'horaire, et d'inclure à la place
une case à cocher pour cocher les éléments. Nous supprimons également les balises
pour rendre les lignes plus compactes et nous ne voulons pas utiliser de couleurs pour
l'imprimante noir et blanc. Les paramètres spécifiés dans org-agenda-exporter-
settings s'appliquent également, par exemple,
(setq org-agenda-exporter-settings
'((ps-number-of-columns 2)
(ps-paysage-mode t)
(org-agenda-add-entry-text-maxlines 5)
(htmlize-output-type 'css)))
mais les paramètres de org-agenda-custom-commands sont prioritaires.
A partir de la ligne de commande, vous pouvez également utiliser :
emacs -eval (org-batch-store-agenda-views) -kill
ou, si vous devez modifier certains paramètres17
emacs -eval '(org-batch-store-agenda-views \
org-agenda-span (mois de citation) \
org-agenda-start-day "2007-11-01" \
org-agenda-include-diary
n
il\ org-agenda-files (quote
("~/org/project.org")))'' \
-tuer
qui crée les vues de l'agenda limitées au fichier "~/org/project.org", sans entrées de
journal et avec une durée de 30 jours.
Vous pouvez également extraire les informations de l'agenda de manière à permettre
un traitement ultérieur par d'autres programmes. Pour plus d'informations, reportez-vous
à la section A.9 [Extraction des informations de l'agenda], page 273.

11.8 Utilisation de l'affichage en colonnes dans l'agenda


La vue en colonnes (voir Section 7.5 [Vue en colonnes], page 71) est normalement
utilisée pour visualiser et éditer les propriétés intégrées dans la structure hiérarchique
d'un fichier Org. Il peut être très utile d'utiliser la vue en colonnes également à partir de
l'agenda, où les entrées sont rassemblées en fonction de certains critères.
C-c C-x C-c (org-agenda-columns)
Activer l'affichage en colonnes dans l'agenda.
Chapitre 11 : Vues de 234
l'agenda
nombre de citations dépend du système que vous utilisez, veuillez consulter la FAQ pour des exemples.
17 Le
Chapitre 11 : Vues de 235
l'agenda

Pour comprendre comment l'utiliser correctement, il est important de réaliser que les
entrées de l'agenda ne sont plus dans leur environnement de contour approprié. Cela
entraîne les problèmes suivants :
1. Org doit décider du format de colonnes à utiliser. Comme les entrées de l'agenda
sont collectées à partir de différents fichiers, et que ces fichiers peuvent avoir des
formats de colonnes différents, c'est un problème non trivial. Org vérifie d'abord si
org-overriding-columns- format est actuellement défini, et si c'est le cas, il
prend le format à partir de là. Vous ne devez définir cette variable que dans la section
des paramètres locaux d'une commande d'agenda personnalisée (voir Section 11.6
[Vues d'agenda personnalisées], page 130) pour qu'elle soit valide pour cette vue
d'agenda spécifique. Si aucune liaison de ce type n'existe, il vérifie, dans l'ordre,
org-columns-default-format-for- agenda, le format associé au premier élément
de l'agenda (par l'intermédiaire d'une propriété ou d'un paramètre '#+COLUMNS' dans
ce tampon) et enfin org-columns-default-format.
2. Si l'une des colonnes a un type de résumé défini (voir section 7.5.1.2 [Column at-
tributes], page 71), l'activation de l'affichage des colonnes dans l'agenda permet de
consulter tous les fichiers d'agenda concernés et de s'assurer que les calculs de
cette propriété sont à jour. Il en va de même pour la propriété spéciale "CLOCKSUM".
Org additionne ensuite les valeurs affichées dans l'agenda. Dans l'agenda
quotidien/hebdomadaire, les sommes couvrent un seul jour ; dans toutes les autres
vues, elles couvrent le bloc entier.
Il est important de savoir que l'agenda peut présenter deux fois la même entrée, par
exemple comme étant planifiée et comme étant une échéance, et qu'il peut présenter
deux entrées de la même hiérarchie (par exemple un parent et son enfant). Dans ces
cas, l'addition dans l'agenda conduit à des résultats incorrects car certaines valeurs
comptent double.
3. Lorsque la vue en colonnes de l'agenda affiche la propriété "CLOCKSUM", il s'agit
toujours de l'ensemble du temps chronométré pour ce point. Ainsi, même dans
l'agenda quotidien/hebdomadaire, la somme des heures répertoriées dans la vue en
colonnes peut provenir de moments situés en dehors de la vue actuelle. L'avantage
est que vous pouvez comparer ces valeurs avec une colonne listant l'effort total
planifié pour une tâche - l'une des principales applications de la vue en colonnes
dans l'agenda. Si vous souhaitez obtenir des informations sur le temps chronométré
dans la période affichée, utilisez le mode tableau d'horloge (appuyez sur R dans
l'agenda).
4. Lorsque la vue en colonnes de l'agenda affiche la propriété "CLOCKSUM_T", il s'agit
toujours du temps chronométré d'aujourd'hui pour ce point. Ainsi, même dans
l'agenda hebdomadaire, le temps de pointage indiqué dans la vue en colonnes ne
provient que d'aujourd'hui. Cela vous permet de comparer le temps que vous avez
passé sur une tâche aujourd'hui avec le temps déjà passé - via 'CLOCKSUM' - et avec
l'effort total planifié pour cette tâche.
Chapitre 12 : Le balisage des 236
contenus enrichis

12 Balisage pour les contenus enrichis


Org est principalement destiné à l'organisation et à la recherche dans vos notes en texte
brut. Cependant, il fournit également un langage de balisage léger mais robuste pour le
formatage de texte riche et plus encore. Par exemple, vous pouvez vouloir centrer ou
mettre en valeur du texte. Vous pouvez aussi avoir besoin d'insérer une formule ou une
image dans votre texte. Org propose une syntaxe pour tout cela et bien plus encore.
Utilisé conjointement avec le cadre d'exportation (voir le chapitre 13 [Exportation], page
147), vous pouvez créer de magnifiques documents dans Org, comme le manuel que
vous êtes en train de lire.

12.1 Paragraphes
Les paragraphes sont séparés par au moins une ligne vide. Si vous devez imposer un
saut de ligne à l'intérieur d'un paragraphe, utilisez "\N" à la fin d'une ligne.
Pour préserver les sauts de ligne, l'indentation et les lignes vierges dans une région,
tout en utilisant le formatage normal, vous pouvez utiliser cette construction, qui peut
également être utilisée pour formater des poèmes.
#+BEGIN_VERSE
De grands nuages au-dessus de la tête
De minuscules oiseaux noirs
montent et descendent La
neige recouvre Emacs

---AlexSchroeder
#+END_VERSE
Lorsque vous citez un passage d'un autre document, il est d'usage de le présenter
sous la forme d'un paragraphe indenté à gauche et à droite. Vous pouvez inclure des
citations dans les documents Org de cette manière :
#+BEGIN_QUOTE
Tout doit être rendu aussi simple que possible,
mais pas plus simple ---Albert Einstein
#+END_QUOTE
Si vous souhaitez centrer un texte, procédez comme suit :
#+BEGIN_CENTER
Tout doit être aussi simple que possible, mais pas
plus.
#+END_CENTER

12.2 Accentuation et monospace


Vous pouvez rendre les mots "*gras*", "/italique/", "_souligné_", "=verbatim=" et
"~code~", et, si vous le souhaitez, "+frappé+". Le texte dans la chaîne de code et de
verbatim n'est pas traité pour la syntaxe spécifique d'Org ; il est exporté verbatim.
Pour désactiver la fontification du texte balisé, vous pouvez définir org-fontify-
emphasized- text à nil. Pour réduire la liste des syntaxes de marquage disponibles,
vous pouvez personnaliser org-emphasis-alist.
Parfois, lorsque le texte marqué contient également le personnage marqueur lui-
même, le résultat peut être déstabilisant. C'est le cas par exemple,
Chapitre 12 : Le balisage des 237
contenus enrichis

/On pourrait s'attendre à ce que toute cette phrase soit en italique,


mais la phrase suivante ~user/?variable~ contient le caractère =/=,
ce qui arrête l'emphase à cet endroit.
Vous pouvez utiliser un espace de largeur nulle pour aider Org à lever l'ambiguïté.
Voir Section 17.12 [Caractère d'échappement], page 255 pour plus de détails.

12.3 Indices et indices supérieurs


'^' et '_' sont utilisés pour indiquer les indices supérieurs et inférieurs. Pour améliorer la
lisibilité du texte ASCII, il n'est pas nécessaire, mais acceptable, d'entourer d'accolades
les caractères superposés et sous-posés. Par exemple
Le rayon du soleil est R_sun = 6,96 x 10^8 m. En revanche, le rayon
d'Alpha Centauri est R_{Alpha Centauri} = 1,28 x R_{sun}.
Si vous écrivez un texte où le trait de soulignement est souvent utilisé dans un
contexte différent, la convention d'Org de toujours l'interpréter comme un indice peut
vous gêner. Configurez la variable org-use-sub-superscripts pour changer cette
convention. Par exemple, lorsque cette variable est configurée à {}, 'a_b' n'est pas
interprété comme un indice, mais 'a_{b}' l'est.
Vous pouvez définir org-use-sub-superscripts dans un fichier en utilisant l'option
d'exportation '^:' (voir Section 13.2 [Paramètres d'exportation], page 148). Par exemple,
'#+OPTIONS : ^:{}' définit l'option org-use- sub-superscripts à {} et limite les
super- et les sous-scripts à la notation par crochets frisés.
Vous pouvez également basculer l'affichage des indices supérieurs et inférieurs :
C-c C-x \N- (org-toggle-pretty-entities)
Cette commande permet de formater les indices inférieurs et supérieurs de manière
WYSIWYM.
Fixer org-pretty-entities et org-pretty-entities-include-sub-
superscripts à t pour commencer avec les super- et les sous-scripts interprétés
visuellement comme spécifié par l'option org-use-sub-superscripts.

12.4 Symboles spéciaux


Vous pouvez utiliser une syntaxe semblable à celle de LATEX pour insérer des symboles
spéciaux - des entités nommées - comme '\alpha' pour indiquer la lettre grecque, ou
'\to' pour indiquer une flèche. Il suffit de taper '\' et éventuellement quelques lettres, et
d'appuyer sur M-TAB pour voir les compléments possibles. Si vous avez besoin d'un tel
symbole à l'intérieur d'un mot, terminez-le par une paire de crochets. Par exemple
Astuce : Étant donné un cercle \Gamma de diamètre d, la longueur de
sa circonférence est \pi{}d.
Un grand nombre d'entités est fourni, avec des noms tirés à la fois de HTML et de
LATEX ; vous pouvez confortablement parcourir la liste complète à partir d'un tampon
dédié en utilisant la commande org-entities-help. Il est également possible de fournir
vos propres symboles spéciaux dans la variable org-entities-user.
Lors de l'exportation, ces symboles sont transformés dans le format natif du back-end
de l'exportateur. Les chaînes de caractères telles que "\alpha" sont exportées sous la
forme "&alpha ;" dans la sortie HTML et sous la forme "\(\alpha\)" dans la sortie
LATEX. De même, '\nbsp' devient '&nbsp;' en HTML et '~' en LATEX.
Chapitre 12 : Le balisage des 238
contenus enrichis

Si vous souhaitez que les entités soient affichées en caractères UTF-8, utilisez la
commande suivante :1 :
C-c C-x \N- (org-toggle-pretty-entities)
Afficher les entités en caractères UTF-8. Cela ne modifie pas le contenu de la
mémoire tampon, qui reste en ASCII, mais superpose le caractère UTF-8 à
des fins d'affichage uniquement.
Outre les entités régulières définies ci-dessus, Org exporte d'une manière spéciale2
les combinaisons de caractères suivantes, couramment utilisées : '\-' est traité comme
un petit trait d'union, '--' et '---' sont convertis en tirets, et '...' devient un ensemble
compact de points.

12.5 LATEX intégré


L'ASCII simple est normalement suffisant pour la quasi-totalité des prises de notes. Les
exceptions concernent les notes scientifiques, qui nécessitent souvent des symboles
mathématiques et des formules occasionnelles. LATEX3 est largement utilisé pour la
composition des documents scientifiques. Le mode Org permet d'incorporer du code
LATEX dans ses fichiers, car de nombreux universitaires ont l'habitude d'écrire et de lire
du code source LATEX, et parce qu'il peut être facilement traité pour produire de jolies
sorties pour un certain nombre de back-ends d'exportation.

12.5.1 Fragments LATEX


Le mode Org peut contenir des fragments mathématiques LATEX, et il prend en charge
les moyens de les traiter pour plusieurs back-ends d'exportation. Lors de l'exportation vers
LATEX, le code est laissé tel quel. Lors de l'exportation vers HTML, Org peut utiliser
MathJax (voir Section 13.9.10 [Formatage mathématique dans l'exportation HTML], page
165) ou transcoder les mathématiques en images (voir Section 12.5.2 [Prévisualisation des
fragments LATEX], page 140).
Les fragments LATEX ne nécessitent aucun marquage particulier. Les fragments
suivants sont identifiés comme du code source LATEX :
• Environnements de toute nature4 . La seule exigence est que la déclaration
"\begin" apparaisse sur une nouvelle ligne, précédée uniquement d'un espace
blanc.
• Texte à l'intérieur des délimiteurs mathématiques LATEX habituels. Pour éviter les
conflits avec les spécifications monétaires, les caractères "$" ne sont reconnus
comme délimiteurs mathématiques que si le texte inclus contient au plus deux sauts
de ligne, s'il est directement lié aux caractères "$" sans espace blanc entre eux et si
le "$" de fermeture est suivi d'un espace blanc, d'une ponctuation ou d'un tiret. Pour
les autres délimiteurs, il n'y a pas de restriction, donc en cas de doute, utilisez
'\(...\)' comme délimiteurs mathématiques en ligne.
Par exemple :
\begin{equation}% des environnements
arbitraires,
x=\sqrt{b}% même tableaux, figures
1
Vous pouvez l'activer par défaut en définissant la variable org-pretty-entities, ou par fichier avec
l'option 'STARTUP' 'entitiespretty'.
2
Ce comportement peut être désactivé avec le paramètre d'exportation "-" (voir section 13.2 [Paramètres d'exportation], page
148).
3
LATEX est un système de macros basé sur le système TEX de Donald E. Knuth. De nombreuses
fonctionnalités décrites ici comme "LATEX" proviennent en réalité de TEX, mais pour des raisons de
simplicité, j'estompe cette distinction.
Chapitre 12 : Le balisage des 239
contenus
4 enrichisest utilisé, seuls les environnements reconnus par MathJax sont traités. Lorsque
Lorsque MathJax
dvipng, dvisvgm ou la suite ImageMagick sont utilisés pour créer des images, tous les environnements
LATEX sont traités.
Chapitre 12 : Le balisage des 240
contenus enrichis

\n-{equation}% etc

Si $a^2=b$ et \N( b=2 \N), alors la solution doit


être $$ a=+\sqrt{2} $$ ou \N[ a=-\sqrt{2} \N].
Le traitement LATEX peut être configuré avec la variable org-export-with-latex.
La valeur par défaut est t, ce qui signifie que MathJax s'occupe du HTML et qu'il n'y a
pas de traitement pour l'ASCII et le LATEX. Vous pouvez également définir cette variable
pour chaque fichier en utilisant l'une de ces lignes : '#+OPTIONS : tex:t' Faire ce qu'il
faut automatiquement (MathJax)
'#+OPTIONS : tex:nil' Ne pas traiter les fragments LATEX du tout
'#+OPTIONS : tex:verbatim' Exportation verbatim, pour jsMath par exemple

12.5.2 Prévisualisation des fragments L A T E X


Si vous avez une installation LATEX fonctionnelle et que 'dvipng', 'dvisvgm' ou 'convert'
sont installés5 , les fragments LATEX peuvent être traités pour produire des images des
expressions typographiées à inclure lors de l'exportation vers HTML (voir Section 12.5.1
[Fragments LATEX], page 139), ou pour la prévisualisation en ligne dans le mode Org.
Vous pouvez personnaliser les variables org-format-latex-options et org-format-
latex- header pour influencer certains aspects de l'aperçu. En particulier, la propriété
:scale (et pour l'exportation HTML, :html-scale) de la première peut être utilisée pour
ajuster la taille des images de prévisualisation.
C-c C-x C-l (org-latex-preview)
Produire une image de prévisualisation du fragment LATEX au point et la
superposer au code source. S'il n'y a pas de fragment au point, traiter tous
les fragments dans l'entrée courante - entre deux titres.
Lorsqu'il est appelé avec un seul argument préfixe, il efface toutes les
images de l'entrée en cours. Deux arguments préfixes produisent une image
de prévisualisation pour tous les fragments de la mémoire tampon, tandis
que trois d'entre eux effacent toutes les images de cette mémoire tampon.
Vous pouvez activer la prévisualisation de tous les fragments LATEX d'un fichier à l'aide de la
commande
#+STARTUP : latexpreview
Pour le désactiver, il suffit d'utiliser
#+STARTUP : nolatexpreview

12.5.3 Utiliser C D LAT EX pour entrer des données mathématiques


Le mode CDLATEX est un mode mineur qui est normalement utilisé en combinaison
avec un mode LATEX majeur comme AUCTEX afin d'accélérer l'insertion
d'environnements et de modèles mathématiques. Dans le mode Org, vous pouvez
utiliser certaines des fonctionnalités du mode CDLATEX. Vous devez installer
'cdlatex.el' et 'texmathp.el' (ce dernier est également fourni avec AUCTEX) à partir
de l'ELPA NonGNU avec le système d'empaquetage Emacs ou alternativement à partir
de https://staff. fnwi.uva.nl/c.dominik/Tools/cdlatex/. N'utilisez pas le mode
CDLATEX lui-même sous le mode Org, mais utilisez la version spéciale du mode mineur

Org CDLATEX qui fait partie d'Org. Activez-le pour le tampon actuel avec M-x org-
cdlatex-mode, ou pour tous les fichiers Org avec
5
Ceux-ci sont respectivement disponibles à https://sourceforge.net/projects/dvipng/, http://dvisvgm.
bplaced . net / et dans la suite ImageMagick. Choisissez le convertisseur en définissant la variable
org-preview-latex-default-process en conséquence.
Chapitre 12 : Le balisage des 241
contenus enrichis

(add-hook 'org-mode-hook #'turn-on-org-cdlatex)


Lorsque ce mode est activé, les fonctionnalités suivantes sont présentes (pour plus
de détails, voir la documentation du mode CDLATEX) :
C-c {
Insérer un modèle d'environnement.
TAB
La touche TAB développe le modèle si le point se trouve à l'intérieur d'un
fragment LATEX6 . Par exemple, la touche TAB étend "fr" en "\frac{}{}" et
positionne correctement le point à l'intérieur de la première accolade. Une
autre touche TAB permet d'entrer dans la deuxième accolade.
Même en dehors des fragments, la touche TAB étend les abréviations de
l'environnement au début d'une ligne. Par exemple, si vous écrivez " equ "
au début d'une ligne et que vous appuyez sur TAB, cette abréviation est
développée en un environnement " équation ". Pour obtenir une liste de
^
toutes les abréviations, tapez M-x cdlatex-command-help.
_

L'appui sur _ et ^ à l'intérieur d'un fragment LATEX insère ces caractères avec
une paire d'accolades. Si vous utilisez TAB pour sortir des accolades, et si
les accolades n'entourent qu'un seul caractère ou une macro, elles sont à
` nouveau supprimées (en fonction de la variable cdlatex-simplify-sub-
super-scripts).

L'appui sur le guillemet suivi d'un caractère insère des macros mathématiques,
' également en dehors des fragments LATEX. Si vous attendez plus de 1,5
seconde après le guillemet, une fenêtre d'aide s'affiche.

L'appui sur le guillemet simple suivi d'un autre caractère modifie le sym- bol
LATEX avant le point avec un accent ou une police. Si vous attendez plus de
1,5 seconde après l'appui sur le guillemet simple, une fenêtre d'aide
s'affiche. La modification des caractères ne fonctionne qu'à l'intérieur des
fragments LATEX ; à l'extérieur du guillemet, tout est normal.

12.6 Exemples littéraux


Vous pouvez inclure des exemples littéraux qui ne doivent pas être balisés. Ces
exemples sont typographiés en monospace, ce qui convient parfaitement au code
source et à d'autres exemples similaires.
#+BEGIN_EXAMPLE
Quelques exemples tirés d'un
fichier texte. #+END_EXAMPLE
Il y a cependant une limitation. Vous devez insérer une virgule juste avant les lignes
commençant par '*', ',*', '#+' ou ',#+', car elles peuvent être interprétées comme des
nœuds de contour ou une autre syntaxe spéciale. Org supprime de manière transparente
ces virgules supplémentaires lorsqu'il accède au contenu du bloc.
Le mode 6 Org dispose d'une méthode pour tester si un point se trouve à l'intérieur d'un tel fragment, voir la documentation de la
fonction
Chapitre 12 : Le balisage des 242
contenus enrichis

org-inside-LaTeX-fragment-p.
Chapitre 12 : Le balisage des 243
contenus enrichis

#+BEGIN_EXAMPLE
Je ne suis pas un vrai
titre #+END_EXAMPLE
Pour simplifier l'utilisation de petits exemples, vous pouvez également commencer
les lignes d'exemple par un deux-points suivi d'un espace. Il peut également y avoir des
espaces blancs supplémentaires avant les deux points :
En voici un exemple
: Quelques exemples tirés d'un fichier texte.
Si l'exemple est un code source d'un langage de programmation, ou tout autre texte
qui peut être marqué par le verrouillage des polices dans Emacs, vous pouvez
demander que l'exemple ressemble au tampon Emacs fontifié7 . Cela se fait avec le bloc
de code, où vous devez également spécifier le nom du mode majeur qui doit être utilisé
pour fontifier l'exemple8 , voir Section 17.2 [Modèles de structure], page 247 pour des
raccourcis permettant d'insérer facilement des blocs de code.
#+BEGIN_SRC emacs-lisp
(defun org-xor (a
b)
"Exclusif ou."
(if a (not b) b))
#+END_SRC
Dans les extraits "example" et "src", vous pouvez ajouter un commutateur "-n" à la
fin de la ligne "#+BEGIN", pour que les lignes de l'exemple soient numérotées. Le
commutateur "-n" prend un argument numérique facultatif spécifiant le numéro de la
ligne de départ du bloc. Si vous utilisez l'option '+n', la numérotation de l'extrait numéroté
précédent est reprise dans l'extrait actuel. Le commutateur '+n' peut également prendre
un argument numérique. Il ajoute la valeur de l'argument à la dernière ligne du bloc
précédent pour déterminer le numéro de la ligne de départ.
#+BEGIN_SRC emacs-lisp -n 20
; ; Ceci s'exporte avec la ligne numéro
20. (message "Ceci est la ligne 21")
#+END_SRC

#+BEGIN_SRC emacs-lisp +n 10
; ; Ceci est listé comme la ligne
31. (message "Ceci est la ligne
32")
#+END_SRC
Dans les exemples littéraux, Org interprète des chaînes comme '(ref:name)' comme
des étiquettes, et les utilise comme cibles pour des liens hypertextes spéciaux comme
'[[(name)]]' - c'est-à-dire le nom de la référence entre parenthèses simples. En HTML,
le passage de la souris sur un tel lien met en évidence à distance la ligne de code
correspondante, ce qui est plutôt sympa.

7
Cela fonctionne automatiquement pour le backend HTML (cela nécessite la version 1.34 du paquetage
'htmlize.el', que vous devez installer). Les morceaux de code fontifiés dans LATEX peuvent être
obtenus en utilisant soit le paquetage listings LATEX, soit le paquetage minted LATEX, soit en utilisant
engrave-faces . Référez-vous à org-latex-src-block-backend pour plus de détails.
Chapitre 12 : Le balisage des 244
contenus
8 Le enrichis
code source contenu dans les blocs de code peut également être évalué de manière interactive ou lors
de l'exportation. Voir le chapitre 16 [Travailler avec le code source], page 217 pour plus d'informations
sur l'évaluation des blocs de code.
Chapitre 12 : Le balisage des 245
contenus enrichis

Vous pouvez également ajouter un commutateur "-r" qui supprime les étiquettes du
code source9 . Avec le commutateur "-n", les liens vers ces références sont étiquetés
par les numéros de ligne de la liste du code. Sinon, les liens utilisent les étiquettes sans
parenthèses. Voici un exemple :
#+BEGIN_SRC emacs-lisp -n -r
(save-excursion (ref:sc)
(goto-char (point-min)) (ref:jump)
#+END_SRC
Dans la ligne [[(sc)]], nous mémorisons la position actuelle.
[[(saut)][Ligne (saut)]] saute au point-min.
Le code source et les exemples peuvent être indentés afin de s'aligner sur le texte
environnant, et en particulier sur la structure des listes simples (voir Section 2.6 [Listes
simples], page 12). Par défaut, Org ne conserve que l'indentation relative entre les
lignes, par exemple lors de l'exportation du contenu du bloc. Cependant, vous pouvez
utiliser le commutateur '-i' pour préserver également l'indentation globale, si cela a de
l'importance. Voir Section 16.10 [Édition du code source], page 240.
Si la syntaxe du format de l'étiquette est en conflit avec la syntaxe du langage,
utilisez le commutateur "-l" pour modifier le format, par exemple
#+BEGIN_SRC pascal -n -r -l "((%s))"
Voir aussi la variable org-coderef-label-format.
L'exportation HTML permet également de publier des exemples sous forme de zones
de texte (voir section 13.9.11 [Zones de texte dans l'exportation HTML], page 166).
Étant donné que les motifs '#+BEGIN' . . . #+END' doivent être ajoutés très souvent, un
raccourci est fourni (voir Section 17.2 [Modèles de structure], page 247).
C-c ' (org-edit-special)
Modifier l'exemple de code source à un moment donné dans son mode natif.
Cela fonctionne en basculant vers une mémoire tampon temporaire
contenant le code source. Vous devez quitter en appuyant à nouveau sur C-c
'. La version éditée remplace alors l'ancienne version dans le tampon Org.
Les régions de largeur fixe - où chaque ligne commence par un deux-points
suivi d'un espace - sont éditées en utilisant le mode Artiste10 pour permettre
de créer facilement des dessins ASCII. L'utilisation de cette commande dans
une ligne vide crée une nouvelle région de largeur fixe.
L'appel à org-store-link (voir Section 4.5 [Gestion des liens], page 42) pendant
l'édition d'un exemple de code source dans un tampon temporaire créé avec C-c '
demande une étiquette. Assurez-vous qu'elle est unique dans le tampon actuel et
insérez-la avec le formatage approprié comme '(ref:label)' à la fin de la ligne
actuelle. L'étiquette est ensuite stockée sous la forme d'un lien '(étiquette)', qui peut
être récupéré avec C-c C-l.

12.7 Images
Une image est un lien vers un fichier image11 qui n'a pas de partie descriptive, par exemple

ajout de '-k' à '-n -r' permet de conserver les étiquettes dans le code source tout en utilisant des
9 L'

numéros de ligne pour les liens, ce qui peut être utile pour expliquer ces derniers dans un exemple de
code en mode Org.
10
Vous pouvez sélectionner un autre mode à l'aide de la variable org-edit-fixed-width-region-mode.
Chapitre 12 : Le balisage des 246
contenus
11 enrichis
Ce qu'Emacs considère comme une image dépend des extensions du nom du fichier-image et des
regexps du nom du fichier-image.
Chapitre 12 : Le balisage des 247
contenus enrichis

./img/cat.jpg
Si vous souhaitez définir une légende pour l'image (voir Section 12.8 [Légendes], page
144) et peut-être une étiquette pour les références croisées internes (voir Section 4.2
[Liens internes], page 39), assurez-vous que le lien se trouve sur une ligne distincte et
faites-le précéder des mots-clés 'CAPTION' et 'NAME' comme suit :
#+CAPTION : Il s'agit de la légende du lien de la figure
suivante (ou du tableau) #+NAME : fig:SED-HR4049
[[./img/a.jpg]]
Ces images peuvent être affichées dans la mémoire tampon à l'aide de la commande suivante :
C-c C-x C-v (org-toggle-inline-images)
Bascule l'affichage en ligne des images liées. Lorsqu'il est appelé avec un
argument préfixe, il affiche également les images qui ont une description de
lien. Vous pouvez demander l'affichage des images en ligne au démarrage
en configurant la variable org-startup- with-inline-images12 .
Par défaut, le mode Org affiche les images en ligne en fonction de leur largeur réelle.
Vous pouvez personnaliser la largeur de l'image affichée en utilisant la variable org-
image-actual-width (globalement) ou la propriété 'ORG-IMAGE-ACTUAL-WIDTH' (au
niveau du sous-arbre)13 . Leur valeur peut être la suivante :
• (par défaut) Non nul, utilise la largeur réelle des images lors de l'incrustation.
• Lorsqu'il s'agit d'un nombre, imagemagick (s'il est disponible) définit la largeur de
l'image en fonction de cette valeur.
• Lorsqu'il est défini comme un nombre dans une liste, il essaie d'obtenir la
largeur à partir de n'importe quel mot-clé '#+ATTR.*' s'il correspond à une
spécification de largeur comme :
#+ATTR_HTML : :width 300px
et se rabattre sur ce numéro si aucun n'est trouvé.
• Lorsqu'il est défini à nil, il tente d'obtenir la largeur à partir d'un mot-clé '#+ATTR.*' et
reprend la largeur d'origine s'il n'en trouve pas.
Les images en ligne peuvent également être affichées lors du cycle de l'état de pliage.
Lorsque l'option personnalisée org-cycle-inline-images-display est définie, les
images en ligne visibles sous la sous-arborescence seront affichées automatiquement.

12.8 Légendes
Vous pouvez attribuer une légende à une partie spécifique d'un document en insérant un
mot-clé "CAPTION" immédiatement avant celle-ci :
#+CAPTION : Il s'agit de la légende du tableau (ou du lien) suivant.
| ... | ... |
|-----+---------|
En option, la légende peut prendre la forme :

12
La variable org-startup-with-inline-images peut être définie dans un tampon avec les options
'STARTUP' 'inlineimages' et 'noinlineimages'.
13
La largeur peut être personnalisée dans Emacs >= 24.1, construit avec le support d'imagemagick.
Chapitre 12 : Le balisage des 248
contenus enrichis

#+CAPTION[Légende courte] : Légende plus longue.


Même si les images et les tableaux sont des exemples marquants de structures
légendées, le même mécanisme de légende peut s'appliquer à de nombreux autres
éléments, tels que les équations LATEX ou les blocs de code source. En fonction du
back-end d'exportation, ces éléments peuvent être traités ou non.

12.9 Règles horizontales


Une ligne composée uniquement de tirets, et d'au moins 5 d'entre eux, est exportée sous la forme d'une
ligne horizontale.

12.10 Création de notes de bas de page


Une note de bas de page commence par un marqueur de note de bas de page entre
crochets dans la colonne 0, sans indentation. Elle se termine à la définition de la note de
bas de page suivante, à l'en-tête ou après deux lignes vides consécutives. La référence
de la note de bas de page est simplement le marqueur entre crochets, à l'intérieur du
texte. Les marqueurs commencent toujours par "fn :". Par exemple, les marqueurs
commencent toujours par "fn :":
Le site web de l'Org[fn:1] est aujourd'hui beaucoup plus beau qu'il ne l'était
auparavant.
...
[fn:55] Le lien est : https://orgmode.org
Le mode Org étend la syntaxe basée sur les numéros aux notes de bas de page
nommées et à la définition en ligne facultative. Voici les références valables :
'[fn:NOM]'
Une référence de note de bas de page nommée, où NOM est un mot étiquette unique, ou, par
exemple, une référence de note de bas de page nommée.
plicité de la création automatique, un nombre.
'[fn: : Ceci est la définition en ligne de cette note de bas de page]''.
Une note de bas de page anonyme où la définition est donnée directement
au point de référence.
'[fn:NAME : une définition]''.
Une définition en ligne d'une note de bas de page, qui spécifie également un
nom pour la note. Comme Org permet des références multiples à la même
note, vous pouvez utiliser '[fn:NOM]' pour créer des références
supplémentaires.
Les étiquettes de notes de bas de page peuvent être créées automatiquement, ou
vous pouvez créer des noms vous-même. Ceci est géré par la variable org-footnote-
auto-label et ses mots-clés 'STARTUP' correspondants. Voir la docstring de cette
variable pour plus de détails.
La commande suivante gère les notes de bas de page :
C-c C-x f La commande d'action de la note de bas de page.
Lorsque le point se trouve sur une référence de note de bas de page, il
passe à la définition. Lorsque le point est sur une définition, sauter à la
première référence.
Sinon, créer une nouvelle note de bas de page. En fonction de la variable
org-footnote- define-inline14 , la définition est placée directement dans
le texte comme faisant partie de la référence, ou séparément à
Chapitre 12 : Le balisage des 249
contenus enrichis
l'emplacement déterminé par la variable org-footnote- section.
Lorsque cette commande est appelée avec un argument préfixe, un menu
d'options supplémentaires est proposé :
14
Le paramètre correspondant dans la mémoire tampon est : '#+STARTUP : fninline' ou '#+STARTUP : nofninline'.
Chapitre 12 : Le balisage des 250
contenus enrichis

s Trier les définitions des notes de bas de page par ordre de référence.
r Renuméroter les notes de bas de page simples 'fn:N'.
S Abréviation de l'action "r", puis "s".
n Renommer toutes les notes de bas de page en une séquence 'fn:1' . . . 'fn:n'.
d Supprimer la note de bas de page au point, y compris la définition et les références.
En fonction de la variable org-footnote-auto-adjust15 , la renumérotation
et le tri des notes de bas de page peuvent être automatiques après chaque
insertion ou suppression.
C-c C-c Si le point se trouve sur une référence de note de bas de page, sauter à la
définition. S'il se trouve sur la définition, il revient à la référence. Lorsqu'il est
appelé à un emplacement de note de bas de page avec un argument
préfixe, il offre le même menu que C-c C-x f.
C-c C-o ou souris-1/2
Les étiquettes des notes de bas de page sont également des liens vers la
définition ou la référence correspondante, et vous pouvez utiliser les
commandes habituelles pour suivre ces liens.

15
Les options correspondantes dans la mémoire tampon sont '#+STARTUP : fnadjust' et '#+STARTUP : nofnadjust'.
Chapitre 13 : 251
L'exportation

13 Exportation
A un moment donné, vous voudrez peut-être imprimer vos notes, les publier sur le Web
ou les partager avec des personnes qui n'utilisent pas Org. Org peut convertir et
exporter des documents dans une variété d'autres formats tout en conservant autant
que possible la structure (voir le chapitre 2 [Structure du document], page 6) et le
balisage (voir le chapitre 12 [Balisage pour un contenu riche], page 137).
Les bibliothèques chargées de traduire les fichiers Org dans d'autres formats sont appelées "back-ends".
Org est livré avec un support pour les back-ends suivants :
• ascii (format ASCII)
• beamer (format LATEX Beamer)
• html (format HTML)
• icalendar (format iCalendar)
• latex (format LATEX)
• md (format Markdown)
• odt (format texte OpenDocument)
• org (format Org)
• texinfo (format Texinfo)
• man (format de page de manuel)
Les utilisateurs peuvent installer des bibliothèques pour des formats supplémentaires
à partir du système d'empaquetage d'Emacs. Pour faciliter la découverte, ces paquets
ont un schéma de dénomination commun : ox-NAME, où NAME est un format. Par
exemple, ox-koma-letter pour le back-end de koma-letter. D'autres bibliothèques
peuvent être trouvées dans le dépôt 'org-contrib' (voir Section 1.2 [Installation], page
2).
Org ne charge par défaut que les back-ends pour les formats suivants : ASCII,
HTML, iCalendar, LATEX et ODT. Des backends supplémentaires peuvent être chargés
de deux manières : en configurant la variable org-export-backends, ou en demandant
des bibliothèques dans le fichier init d'Emacs. Par exemple, pour charger le back-end
Markdown, ajoutez ceci à votre configuration Emacs :
(require 'ox-md)

13.1 Le répartiteur d'exportation


Le répartiteur d'exportation est l'interface principale pour les exportations d'Org. Un
menu hiérarchique présente les formats d'exportation actuellement configurés. Les
options sont affichées sur le même écran sous forme d'interrupteurs à bascule.
Org dispose également d'une interface d'invite minimale pour le distributeur
d'exportation. Lorsque la variante org-export-dispatch-use-expert-ui est fixée à
une valeur non nulle, Org affiche des invites dans le minibuffer. Pour revenir au menu
hiérarchique, appuyez sur ?
C-c C-e (org-export-dispatch)
Invoque l'interface du répartiteur d'exportation. Les options indiquent les
paramètres par défaut. Le préfixe C-u préserve les options de l'exportation
précédente, y compris les sélections de sous-arbres.
Par défaut, Org exporte la totalité du tampon. Si le tampon d'Org a une région active,
Org n'exporte que cette région.
Dans l'interface du répartiteur, les combinaisons de touches suivantes permettent de
modifier ce qui est exporté et comment.
Chapitre 13 : 252
L'exportation

C-a
Permet d'activer l'exportation asynchrone. L'exportation asynchrone utilise
un processus Emacs externe avec un fichier d'initialisation spécialement
configuré pour terminer le processus d'exportation en arrière-plan, sans
mettre Emacs en veille. Cette fonction est particulièrement utile lors de
l'exportation de longs documents.
La sortie d'une exportation asynchrone est enregistrée dans la pile
d'exportation. Pour visualiser cette pile, appelez le répartiteur d'exportation
avec un double argument préfixe C-u. Si vous êtes déjà dans le menu du
distributeur d'exportation, & affiche la pile.
Vous pouvez faire de l'exportation asynchrone la valeur par défaut en
définissant org-export-in- background.
Vous pouvez définir le fichier d'initialisation utilisé par le processus d'arrière-plan en définissant
C-b
org-export-async-init-file.

Permet d'activer l'exportation du corps du texte uniquement. Utile pour exclure


les en-têtes et les pieds de page de l'exportation. N'affecte que les formats
C-s
back-end qui ont des sections comme '<head>...</head>' en HTML.

Permet d'activer l'exportation de sous-arbres. Lorsque cette option est


activée, Org n'exporte que la sous-arborescence commençant à la position
du point au moment où le distributeur d'exportation a été invoqué. Org utilise
l'en-tête de cette sous-arborescence comme titre du document. Si le point
n'est pas sur un titre, Org utilise le titre le plus proche. Si le point se trouve
dans le préambule du document, Org signale une erreur et interrompt
C-v l'exportation.
Pour que l'exportation de sous-arbres se fasse par défaut, personnalisez la
variable org-export- initial-scope.

Permet d'activer l'exportation visible uniquement. Cette fonction est utile


pour exporter uniquement certaines parties d'un document Org en ajustant la
visibilité de certains titres. Voir aussi Section 2.5 [Arbres épars], page 11.

13.2 Paramètres d'exportation


Les options d'exportation peuvent être définies : globalement avec des variables ; pour
un fichier individuel en rendant les variables locales à la mémoire tampon avec des
paramètres dans la mémoire tampon (voir Section 17.8 [Paramètres dans la mémoire
tampon], page 251) ; en définissant des mots-clés individuels ou en les spécifiant sous
forme compacte avec le mot-clé 'OPTIONS' ; ou pour un arbre en définissant des
propriétés (voir Chapitre 7 [Propriétés et colonnes], page 67). Les options définies à un
niveau spécifique prévalent sur les options définies à un niveau plus général.
Les paramètres dans la mémoire tampon peuvent apparaître n'importe où dans le
fichier, soit directement, soit indirectement par l'intermédiaire d'un fichier inclus en
utilisant la syntaxe '#+SETUPFILE : filename or URL'. Des ensembles de mots-clés
d'options adaptés à un back-end particulier peuvent être insérés à partir du répartiteur
d'exportation (voir Section 13.1 [Le répartiteur d'exportation], page 147) en utilisant la
commande 'Insérer un modèle' en appuyant sur #. Pour insérer des mots-clés
Chapitre 13 : 253
L'exportation

individuellement, une bonne façon de s'assurer que le mot-clé est correct est de taper
'#+' puis d'utiliser M-TAB1 pour compléter.
1
De nombreux bureaux interceptent la touche M-TAB pour changer de fenêtre. Utilisez plutôt C-M-i ou ESC TAB.
Chapitre 13 : 254
L'exportation

Les mots-clés d'exportation disponibles pour chaque back-end, ainsi que les variables
globales équivalentes, sont les suivants :
'AUTHOR' L'auteur du document (nom complet de l'utilisateur).
CREATOR Entité responsable de la génération de la sortie (org-export-creator-
string). DATE " Une date ou un horodatage2 .
EMAIL L'adresse électronique (user-mail-
address). LANGUE
Langue à utiliser pour traduire certaines chaînes (org-export-default-
langue). Avec '#+LANGUAGE : fr', par exemple, Org traduit 'Table of
contents' en français 'Table des mati`eres' 3 .
'SELECT_TAGS'
La valeur par défaut est '("export")'. Lorsqu'un arbre est marqué avec
'export' (org-export-select-tags), Org sélectionne cet arbre et ses sous-
arbres pour l'exportation. Org exclut les arbres avec des balises 'noexport',
voir ci-dessous. Lors de l'exportation sélective de fichiers avec les balises
'export', Org n'exporte pas le texte qui apparaît avant le premier titre.
'EXCLUDE_TAGS' (EN ANGLAIS)
La valeur par défaut est '("noexport")'. Lorsqu'un arbre est marqué avec
'noexport' (org-export-exclude-tags), Org exclut cet arbre et ses sous-
arbres de l'exportation. Les entrées marquées avec 'noexport' sont
inconditionnellement exclues de l'exportation, même si elles ont une balise
'export'. Même si un sous-arbre n'est pas exporté, Org exécute tous les
blocs de code qu'il contient.
'TITLE' Org affiche ce titre. Pour les titres longs, utilisez plusieurs lignes
'#+TITLE'. 'NOM_DU_FICHIER_EXPORT'
Le nom du fichier de sortie à générer. Sinon, Org génère le fichier
le nom du fichier est basé sur le nom de la mémoire tampon et l'extension
est basée sur le format du back-end.
Le mot-clé 'OPTIONS' est une forme compacte. Pour configurer plusieurs options,
utilisez plusieurs lignes 'OPTIONS'. Le mot clé 'OPTIONS' reconnaît les arguments
suivants.
' Activer les guillemets intelligents (org-export-with-smart-quotes). En fonction de la
langue utilisée, Org traite les paires de guillemets doubles comme des
guillemets primaires, les paires de guillemets simples comme des guillemets
secondaires et les guillemets simples comme des apostrophes.
* Permet d'accentuer le texte (org-export-with-emphasize).
- Conversion des chaînes spéciales (org-export-with-special-strings).
: Afficher les sections à largeur fixe (org-export-with-fixed-width).
2
La variable org-export-date-timestamp-format définit la manière dont ces horodatages sont exportés.
3
Pour l'exportation vers le format LATEX - ou des formats apparentés à LATEX comme Beamer -, la variable
'org-latex-package-alist' doit être configurée davantage. Voir Section 13.10.2 [Paramètres d'exportation
spécifiques à LATEX], page 169.
Chapitre 13 : 255
L'exportation

< Inclure les tampons d'heure/date actifs/inactifs (org-export-with- timestamps).


\nCette option permet de préserver ou non les sauts de ligne (org-export-preserve-breaks).
^ Syntaxe de type TEX pour les exposants et les sous-exposants. Si vous écrivez
'^:{}', 'a_{b}' est interprété, mais le simple 'a_b' est laissé tel quel (org-
export-with-sub- superscripts).
arch Configure la manière dont les arbres archivés sont exportés. Si la valeur est
"headline", le processus d'exportation ignore le contenu et ne traite que les
titres (org-export-with- archived-trees).
author Inclure le nom de l'auteur dans le fichier exporté (org-export-with-author).
liens brisés
Indique si Org doit continuer à exporter lorsqu'il trouve un lien interne brisé.
Lorsqu'il est réglé sur mark, Org marque clairement le lien problématique
dans la sortie (org-export-with-broken-links).
c Inclure les mots-clés "CLOCK" (org-export-with-clocks).
creator Permet d'inclure les informations relatives au créateur dans le fichier exporté
(org-export-with- creator).
d Permet d'inclure les tiroirs, de dresser la liste des tiroirs à inclure ou
d'exclure la liste des tiroirs (org-export-with-drawers).
date Permet d'inclure une date dans le fichier exporté (org-export-with-date).
e Inclure les entités (org-export-with-entities).
courriel Permet d'inclure l'adresse électronique de l'auteur dans le fichier exporté
(org-export-with- email).
f Inclure les notes de bas de page (org-export-with-footnotes).
H Définir le nombre de niveaux de titres pour l'exportation (org-export-headline-
levels). En dessous de ce niveau, les titres sont traités différemment. Dans
la plupart des backends, ils deviennent des éléments de liste.
en ligne Inclure les tâches en ligne (org-export-with-inlinetasks).
num Toggle section-numbers (org-export-with-section-numbers). Lorsque la valeur
est N, Org ne numérote que les titres de niveau N ou supérieur. Définir la
propriété 'UNNUMBERED' à une valeur non nulle pour désactiver
complètement la numérotation des titres et sous-titres. En outre, lorsque la
valeur est "notoc", le titre et tous ses enfants n'apparaissent pas non plus
dans la table des matières (voir Section 13.3 [Table des matières], page
151).
p Basculer l'exportation des informations de planification (org-export-with-planning).
Les "informations de planification" proviennent des lignes situées juste après
le titre et contiennent n'importe quelle combinaison de ces témoins :
"SCHEDULED", "DEADLINE" ou "CLOSED".
pri Inclure les cookies de priorité (org-export-with-priority).
prop Permet d'inclure les tiroirs de propriétés, ou de lister les propriétés à inclure
(org-export-with-properties).
Chapitre 13 : 256
L'exportation

statut Basculerinclusion des statistiques cookies (org-export-with-


statistics- cookies).
balises Permet d'inclure les balises, peut également être not-in-toc (org-export-with-tags).
tâches Inclure les tâches (éléments TODO) ; ou nil pour supprimer toutes les
tâches ; ou todo pour supprimer les tâches effectuées ; ou lister les mots-
clés à conserver (org-export-with-tasks).
texnil n'exporte pas ; t exporte ; verbatim garde tout en verbatim (org-
export-with-latex).
horodatage
Inclure l'heure de création dans le fichier exporté (org-export-time stamp-
file).
title Inclure le titre (org-export-with-title).
toc Permet d'inclure la table des matières ou de fixer une limite de niveau (org-
export- with-toc).
todo Inclure les mots-clés TODO dans le texte exporté (org-export-with- todo-
keywords).
| Inclure les tableaux (org-export-with-tables).
Lors de l'exportation de sous-arbres, des propriétés de nœuds spéciales peuvent
remplacer les mots-clés ci-dessus. Ces propriétés ont un préfixe "EXPORT_". Par
exemple, "DATE" devient "EXPORT_DATE" lorsqu'il est utilisé pour un sous-arbre
spécifique. À l'exception de "SETUPFILE", tous les autres mots-clés énumérés ci-dessus
ont un équivalent "EXPORT_".
Si org-export-allow-bind-keywords est non-nil, les variables Emacs peuvent
devenir locales au tampon pendant l'exportation en utilisant le mot-clé 'BIND'. Sa syntaxe
est "#+BIND : valeur de la variable". Ceci est particulièrement utile pour les
paramètres dans la mémoire tampon qui ne peuvent pas être modifiés à l'aide de mots-
clés.

13.3 Table des matières


La table des matières reprend tous les titres du document. Sa profondeur est donc la
même que celle des titres du fichier. Si vous souhaitez utiliser une profondeur différente,
ou la désactiver complètement, définissez la variable org-export-with-toc en
conséquence. Vous pouvez obtenir la même chose pour chaque fichier, en utilisant
l'élément "toc" suivant dans le mot-clé "OPTIONS" :
#+OPTIONS : toc:2 (n'inclure quedeux niveaux dans
la TOC de) #+OPTIONS : toc:nil (pas de TOC par défaut
Org inclut les titres numérotés et non numérotés dans la table des matières4 . Si vous
souhaitez exclure un titre non numéroté, ainsi que tous ses enfants, attribuez la valeur
"notoc" à la propriété "UNNUMBERED".
* La sous-arborescence n'est pas numérotée et ne figure pas non plus dans la table
des matières.
:PROPRIÉTÉS :
:UNNUMBERED : notoc
:FIN :
Chapitre 13 : 257
L'exportation
4
À l'heure actuelle, certains back-ends d'exportation n'obéissent pas à cette spécification. Par exemple,
l'exportation LATEX exclut de la table des matières tous les titres non numérotés.
Chapitre 13 : 258
L'exportation

Org insère normalement la table des matières directement avant le premier titre du
fichier. Pour déplacer la table des matières à un autre endroit, désactivez d'abord la
valeur par défaut avec la variable org-export- with-toc ou avec '#+OPTIONS :
toc:nil'. Insérez ensuite '#+TOC : headlines N' à l'endroit ou aux endroits souhaités.
#+OPTIONS : toc:nil
...
#+TOC : titres 2
Pour ajuster la profondeur de la table des matières pour une section spécifique du
document Org, ajoutez un paramètre supplémentaire "local". Ce paramètre devient une
profondeur relative pour le niveau actuel. L'exemple suivant insère une table des
matières locale, avec les enfants directs uniquement.
* Section
#+TOC : titres 1 local
Notez que pour que cette fonctionnalité fonctionne correctement dans l'exportation
LATEX, le fichier Org nécessite l'inclusion du paquet titletoc. Pour des raisons de
compatibilité, titletoc doit être chargé avant hyperref. Personnalisez la variable org-
latex-default-packages-alist.
L'exemple suivant insère une table des matières qui renvoie aux enfants de la cible
spécifiée.
* Cible
:PROPRIÉTÉS :
:CUSTOM_ID : TargetSection
:FIN :
** Rubrique A
** Rubrique B
* Une autre section
#+TOC : headlines 1 :target #TargetSection
L'attribut ':target' est pris en charge dans les exportations HTML, Markdown, ODT
et ASCII. Utilisez le mot-clé "TOC" pour générer une liste de tableaux - respectivement,
toutes les listes - avec des légendes.
#+TOC : listes
#+TOC :
tableaux
Normalement, Org utilise le titre pour son entrée dans la table des matières. Mais la
propriété 'ALT_TITLE' permet de spécifier une entrée différente pour la table des
matières.

13.4 Inclure les fichiers


Lors de l'exportation, vous pouvez inclure le contenu d'un autre fichier. Par exemple,
pour inclure votre fichier '.emacs', vous pouvez utiliser :
#+INCLUDE : "~/.emacs" src emacs-lisp
Le premier paramètre est le nom du fichier à inclure. Le deuxième paramètre facultatif
indique le type de bloc : "exemple", "export" ou "src". Le troisième paramètre facultatif
indique le langage de code source à utiliser pour formater le contenu. Ce paramètre
s'applique aux types de blocs "export" et "src".
Si un fichier inclus est spécifié comme ayant un langage de balisage, Org ne vérifie
pas la validité de la syntaxe et ne modifie pas le contenu de quelque manière que ce
Chapitre 13 : 259
L'exportation
soit. Pour les exemples et les blocs de source, Org met en évidence le code avant
l'inclusion.
Chapitre 13 : 260
L'exportation

Si un fichier inclus n'est pas spécifié comme ayant un langage de balisage, Org
suppose qu'il est au format Org et procède comme d'habitude à quelques exceptions
près. Org rend les étiquettes de notes de bas de page (voir Section 12.10 [Créer des
notes de bas de page], page 145) dans le fichier inclus locales à ce fichier. Le contenu
du fichier inclus appartient à la même structure - titre, article - qui contient le mot-clé
"INCLUDE". En particulier, les titres à l'intérieur du fichier deviennent des enfants de la
section courante. Ce comportement peut être modifié en fournissant un mot-clé
supplémentaire, ':minlevel'. Il fait passer les titres du fichier inclus au niveau le plus
bas. Par exemple, cette syntaxe fait du fichier inclus un frère ou une sœur du titre de
premier niveau actuel :
#+INCLUDE : "~/mon-livre/chapitre2.org" :minlevel 1
L'inclusion de parties de fichiers seulement est spécifiée en utilisant le paramètre
ranges avec le mot-clé ':lines'. La ligne située à l'extrémité supérieure de l'intervalle ne
sera pas incluse. Le début et/ou la fin de l'intervalle peuvent être omis pour utiliser les
valeurs par défaut évidentes.
'#+INCLUDE : "~/.emacs" :lignes "5-10"' Inclure les lignes 5 à 10, 10 exclues
'#+INCLUDE : "~/.emacs" :lignes "-10"' Inclure leslignes 1 à 10, 10
exclues '#+INCLUDE : "~/.emacs" :lines "10-"' Inclure les lignes
de 10 à EOF
Les inclusions peuvent spécifier un lien vers un fichier pour extraire un objet
correspondant à org-link-search5 (voir section 4.8 [Options de recherche], page 46).
Les plages du mot-clé ':lines' sont relatives à l'élément demandé. Par conséquent,
#+INCLUDE : "./paper.org::*conclusion" :lignes 1-20
comprend les 20 premières lignes du titre intitulé "conclusion".
Pour extraire uniquement le contenu de l'objet correspondant, définissez la propriété
':only-contents' comme non nulle. Cela permet d'omettre les lignes de planification
ou les tiroirs de propriétés. Par exemple, pour inclure le corps de l'en-tête avec
l'identifiant personnalisé "théorie", vous pouvez utiliser la propriété ':only-contents'.
#+INCLUDE : "./paper.org::#theory" :only-contents t
La commande suivante permet de naviguer vers le document inclus :
C-c ' (org-edit-special)
Visitez le fichier inclus au point.

13.5 Remplacement des macros


Les macros remplacent les extraits de texte lors de l'exportation. Les macros sont
définies globalement dans org-export- global-macros, ou par document avec la
syntaxe suivante :
#+MACRO : texte de remplacement du nom ; $1, $2 sont des arguments
qui peuvent être référencés en utilisant '{{nom(arg1, arg2)}}'6 . Par exemple
#+MACRO : poème La rose est à 1$, la violette à 2$. La vie est ordonnée : Org vous
assiste.
{{poème(rouge,bleu)}}}
devient
5
Notez que org-link-search-must-match-exact-headline est localement lié à non-nil. Par conséquent,
org-link-search ne correspond qu'aux titres et aux éléments nommés.
Chapitre 13 : 261
L'exportation
6
Comme les virgules séparent les arguments, les virgules à l'intérieur des arguments doivent être
échappées par le caractère barre oblique inverse. Ainsi, seuls les caractères d'antislash précédant une
virgule doivent être échappés par un autre caractère d'antislash.
Chapitre 13 : 262
L'exportation

La rose est rouge, la violette est bleue. La vie est ordonnée : Org vous assiste.
Dans un cas particulier, Org analyse tout texte de remplacement commençant par
'(eval' comme une expression Emacs Lisp et l'évalue en conséquence. Dans de tels
modèles, les arguments deviennent des chaînes de caractères. Ainsi, la macro suivante
#+MACRO : gnustamp (eval (concat "GNU/" (capitalize $1)))
transforme '{{{gnustamp(linux)}}}' en 'GNU/Linux' lors de l'exportation.
Org reconnaît les références macro dans les zones de balisage suivantes :
paragraphes, titres, blocs de vers, tableaux, cellules et listes. Org reconnaît également les
références macro dans les mots-clés, tels que 'CAPTION', 'TITLE', 'AUTHOR', 'DATE', et pour
certaines options d'exportation spécifiques au back-end.
Org est livré avec les macros prédéfinies suivantes :
'{{{mot clé(NOM)}}}'
'{{{titre}}}'
'{{{auteur}}}'
'{{{email}}}'
La macro "keyword" recueille toutes les valeurs des mots-clés NAME dans la
mémoire tampon, séparées par un espace blanc. Les macros 'title',
'author' et 'email' sont des raccourcis pour, respectivement, '{{{mot-
clé(TITLE)}}', '{{mot-clé(AUTHOR)}}' et '{{mot-clé(EMAIL)}}'.
'{{{date}}}'
'{{{date(FORMAT)}}}'
Cette macro fait référence au mot-clé 'DATE'. FORMAT est un argument
facultatif de la macro 'date' qui n'est utilisé que si 'DATE' est un
horodatage unique. FORMAT doit être une chaîne de format comprise par
format-time-string.
'{{{heure(FORMAT)}}}'
'{{{modification-time(FORMAT, VC)}}}'
Ces macros font référence à la date et à l'heure d'exportation et à la date et à
l'heure de modification du document. FORMAT est une chaîne comprise par
format-time-string. Si le deuxième argument de la macro
modification-time est non nul, Org utilise 'vc.el' pour récupérer l'heure
de modification du document à partir du système de contrôle de version.
Sinon, Org lit les attributs du fichier.
'{{{fichier d'entrée}}}'
Cette macro fait référence au nom du fichier exporté.
'{{property(PROPERTY-NAME)}}}'
'{{property(PROPERTY-NAME, SEARCH OPTION)}}'
Cette macro renvoie la valeur de la propriété PROPERTY-NAME dans
l'entrée courante. Si SEARCH-OPTION (voir Section 4.8 [Options de
recherche], page 46) fait référence à une entrée distante, utilisez-la à la
place.
'{{{n}}}'
'{{n(NOM)}}}'
'{{n(NOM, ACTION)}}}'
Cette macro met en œuvre des compteurs personnalisés en renvoyant le
nombre de fois que la macro a été développée jusqu'à présent lors de
l'exportation de la mémoire tampon. Vous pouvez créer plusieurs compteurs en
Chapitre 13 : 263
L'exportationutilisant différentes valeurs de NOM. Si ACTION est '-', le compteur
précédent
Chapitre 13 : 264
L'exportation

la valeur du compteur est maintenue, c'est-à-dire que le compteur spécifié


n'est pas incrémenté. Si la valeur est un nombre, le compteur spécifié est
mis à cette valeur. Si c'est une autre chaîne non vide, le compteur
spécifié est remis à 1. S'il s'agit d'une autre chaîne non vide, le compteur
spécifié est réinitialisé à 1. Vous pouvez laisser NAME vide pour
réinitialiser le compteur par défaut.
De plus, les blocs de source en ligne (voir Section 16.2 [Structure des blocs de code],
page 218) utilisent la macro spéciale "results" pour marquer leur sortie. Il est donc
déconseillé de la redéfinir, à moins de savoir ce que l'on fait.
Les parenthèses environnantes peuvent être rendues invisibles en donnant à org-
hide-macro-markers une valeur non nulle.
Org développe les macros au tout début du processus d'exportation.

13.6 Lignes de commentaires


Les lignes commençant par zéro ou plusieurs caractères d'espacement suivis d'un "#" et
d'un espacement sont considérées comme des commentaires et, en tant que tels, ne
sont pas exportés.
De même, les régions entourées de "#+BEGIN_COMMENT" . . . '#+END_COMMENT' ne sont
pas examinées.
Enfin, un mot-clé "COMMENT" au début d'une entrée, mais après tout autre mot-clé ou
cookie de priorité, commente l'ensemble du sous-arbre. Dans ce cas, le sous-arbre n'est
pas exporté et aucun bloc de code qu'il contient n'est exécuté non plus7 . La commande
ci-dessous permet de modifier le statut de commentaire d'un titre.
C-c ; (org-toggle-comment)
Basculer le mot-clé "COMMENT" au début d'une entrée.

13.7 Exportation ASCII/Latin-1/UTF-8


L'exportation ASCII produit un fichier de sortie contenant uniquement des caractères
ASCII. Il s'agit de la sortie texte la plus simple et la plus directe. Elle ne contient aucune
marque Org. Les exportations Latin-1 et UTF-8 utilisent des caractères et des symboles
supplémentaires disponibles dans ces normes d'encodage. Ces trois formats d'exportation
offrent la sortie texte la plus basique pour une portabilité maximale.
Lors de l'exportation, Org remplit et justifie le texte en fonction de la largeur de texte
définie dans org-ascii- text-width.
Org exporte les liens en utilisant un style similaire à celui des notes de bas de page
où la partie descriptive est dans le texte et le lien dans une note avant le titre suivant.
Voir la variable org-ascii-links-to-notes pour plus de détails.

Commandes d'exportation ASCII


C-c C-e t a (org-ascii-export-to-ascii)
C-c C-e t l
C-c C-e t u
Exporter sous forme de fichier ASCII avec une extension '.txt'. Pour
'monfichier.org', Org exporte vers 'monfichier.txt', en écrasant sans
avertissement. Pour 'monfichier.txt', Org exporte vers
'monfichier.txt.txt' afin d'éviter toute perte de données.
7
Pour un comportement moins radical, envisagez d'utiliser une balise de sélection (voir Section 13.2
Chapitre 13 : 265
L'exportation
[Paramètres d'exportation], page 148) à la place.
Chapitre 13 : 266
L'exportation

C-c C-e t A (org-ascii-export-to-ascii)


C-c C-e t L
C-c C-e t U
Exporter vers une mémoire tampon temporaire. Ne crée pas de fichier.
Paramètres d'exportation spécifiques à l'ASCII
Le back-end d'exportation ASCII dispose d'un mot-clé supplémentaire pour
personnaliser la sortie ASCII. La définition de ce mot-clé fonctionne de la même manière
que les options générales (voir Section 13.2 [Paramètres d'exportation], page 148).
SUBTITLE' (SOUS-TITRES)
Le sous-titre du document. Pour les sous-titres longs, utilisez plusieurs lignes '#+SUBTITLE'
dans le document
le fichier Org. Org les imprime sur une ligne continue, en les regroupant sur
plusieurs lignes si nécessaire.
Structure de l'en-tête et de la section
Org convertit les trois premiers niveaux du plan en titres pour l'exportation ASCII. Les
autres niveaux sont transformés en listes. Pour modifier le seuil à partir duquel les
niveaux deviennent des listes, voir Section 13.2 [Paramètres d'exportation], page 148.
Citation d'un texte ASCII
Pour insérer du texte dans le fichier Org par l'intermédiaire du back-end ASCII, utilisez
l'une des constructions suivantes : inline, mot-clé ou bloc d'exportation :
Texte en ligne @@ascii:et texte supplémentaire@@ dans un

paragraphe. #+ASCII : Un peu de texte

#+BEGIN_EXPORT ascii
Org n'exporte le texte dans ce bloc que lorsqu'il utilise le back-end
ASCII. #+END_EXPORT

Attributs spécifiques à l'ASCII


Le back-end ASCII ne reconnaît qu'un seul attribut, ':width', qui spécifie la largeur d'une
règle horizontale en nombre de caractères. Le mot-clé et la syntaxe pour spécifier les
largeurs sont :
#+ATTR_ASCII : :largeur 10

Blocs spéciaux ASCII


Outre les blocs '#+BEGIN_CENTER' (voir Section 12.1 [Paragraphes], page 137), le back-end
ASCII dispose de ces deux blocs de justification à gauche et à droite :
#+BEGIN_JUSTIFYLEFT
C'est juste un saut à gauche...
#+END_JUSTIFYLEFT

#+BEGIN_JUSTIFYRIGHT
...et ensuite un pas vers la droite.
#+END_JUSTIFYRIGHT
Chapitre 13 : 267
L'exportation

13.8 Beamer Export


Org utilise l'exportation Beamer pour convertir une arborescence de fichiers Org en
diapositives interactives de haute qualité pour les présentations. Beamer est une classe
de documents LATEX permettant de créer des présentations au format PDF, HTML et
autres formats d'affichage courants.

13.8.1 Commandes d'exportation du Beamer


C-c C-e l b (org-beamer-export-to-latex)
Exporter sous forme de fichier LATEX avec une extension '.tex'. Pour
'monfichier.org', Org exporte vers 'monfichier.tex', en l'écrasant sans
avertissement.
C-c C-e l B (org-beamer-export-as-latex)
Exporter vers une mémoire tampon temporaire. Ne crée pas de fichier.
C-c C-e l P (org-beamer-export-to-pdf)
Exporter en tant que fichier LATEX et le convertir ensuite au format PDF.
C-c C-e l
O Exporter un fichier LATEX, le convertir au format PDF, puis ouvrir le fichier PDF.
13.8.2 Paramètres d'exportation spécifiques à Beamer
Le back-end d'exportation de Beamer dispose de plusieurs mots-clés supplémentaires
pour personnaliser la sortie de Beamer. Ces mots-clés fonctionnent de la même manière
que les options générales (voir Section 13.2 [Paramètres d'exportation], page 148).
BEAMER_THEME
Le thème de présentation Beamer (org-beamer-theme). Utilisez des
crochets pour les op- tions. Par exemple :
#+BEAMER_THEME : Rochester [height=20pt]
'BEAMER_FONT_THEME' (THÈME DE LA POLICE DE CARACTÈRES)
Le thème de la police Beamer.
'BEAMER_INNER_THEME' (THÈME INTÉRIEUR)
Le thème intérieur de Beamer.
'BEAMER_OUTER_THEME' (EN ANGLAIS)
Le thème extérieur de Beamer.
'BEAMER_HEADER'
Lignes arbitraires insérées dans le préambule, juste avant les paramètres "hyperref".
DESCRIPTION
La description du document. Pour les descriptions longues, utilisez plusieurs
mots-clés "DESCRIPTION". Par défaut, 'hyperref' insère 'DESCRIPTION'
comme métadonnée. Utilisez org-latex-hyperref-template pour
configurer les métadonnées du document. Utilisez org-latex-title-
command pour configurer la mise en page de la description en tant que partie
de la première page.
KEYWORDS"
Les mots-clés pour définir le contenu du document .
(MOTS-
Utilisezplusieurs lignes 'KEYWORDS' si
CLÉS) nécessaire. Par défaut, 'hyperref' insère 'KEYWORDS'.
Chapitre 13 : 268
L'exportation

comme métadonnées. Utilisez org-latex-hyperref-template pour


configurer les métadonnées du document. Utilisez org-latex-title-
command pour configurer la mise en page des mots-clés en tant que partie
de la première page.
SUBTITLE'
(SOUS-
Sous-titre du document. Pour la composition, utilisez la chaîne org-beamer-
TITRES) subtitle-format. Utilisez org-latex-hyperref-template pour configurer
les métadonnées du document. Utilisez org-latex-title-command pour
configurer la mise en page du sous-titre en tant que partie de la première
page.

13.8.3 Cadres et blocs dans Beamer


Org transforme les niveaux d'en-tête en éléments de sectionnement, cadres et blocs de
Beamer. Toute arborescence Org avec un niveau d'imbrication pas trop profond devrait
en principe pouvoir être exportée sous forme de présentation Beamer.
• Les titres Org deviennent des cadres Beamer lorsque le niveau d'en-tête dans Org
est égal à org-beamer-frame-level ou à la valeur 'H' dans une ligne 'OPTIONS'
(voir Section 13.2 [Paramètres d'exportation], page 148).
Org remplace la conversion des titres en cadres pour l'arbre courant d'un fichier Org
s'il rencontre la propriété 'BEAMER_ENV' définie sur 'frame' ou 'fullframe'. Org ignore
le niveau org-beamer-frame, quel qu'il soit, pour ce niveau de titre dans l'arbre
Org. Dans la terminologie Beamer, un cadre complet est un cadre sans son titre.
• Org exporte les objets d'un cadre Beamer en tant qu'environnements de blocs. Org
peut imposer le wrapping dans des types de blocs spéciaux lorsque la propriété
'BEAMER_ENV' est fixée à8 . Pour les valeurs valides, voir org-beamer-
environments-default. Pour ajouter d'autres valeurs, voir org-beamer-
environments-extra.
• Si 'BEAMER_ENV' est réglé sur 'appendix', Org exporte l'entrée en tant qu'appendice.
Si "note" est défini, Org exporte l'entrée sous forme de note à l'intérieur du cadre ou
entre les cadres, en fonction du niveau de titre de l'entrée. Avec la valeur "noteNH",
Org exporte l'entrée sous forme de note sans titre. Avec la valeur "againframe",
Org exporte l'entrée avec la commande "\againframe", ce qui rend la propriété
"BEAMER_REF" obligatoire car "\againframe" a besoin d'un cadre pour reprendre.
Lorsque l'option "ignoreheading" est activée, l'exportation Org ignore le titre de
l'entrée, mais pas son contenu. Ceci est utile pour insérer du contenu entre les
cadres. C'est également utile pour fermer correctement un environnement
"colonne".
Lorsque 'BEAMER_ACT' est défini pour un titre, Org export traduit ce titre en tant que
spécification de recouvrement ou d'action. Lorsqu'il est placé entre crochets,
l'exportation Org fait de la spécification d'incrustation une valeur par défaut. Utilisez
'BEAMER_OPT' pour définir toutes les options applicables au cadre ou au bloc Beamer
actuel. Le back-end de l'export Beamer s'enveloppe des crochets angulaires ou
carrés appropriés. Il ajoute également l'option "fragile" pour tout code pouvant
nécessiter un bloc mot à mot.
Pour créer une colonne sur la diapositive Beamer, utilisez la propriété 'BEAMER_COL'
pour son titre dans le fichier Org. Définissez la valeur de 'BEAMER_COL' comme un
nombre décimal représentant la fraction de la largeur totale du texte. L'exportation
Beamer utilise cette valeur pour définir la largeur de la colonne.
Chapitre 13 : 269
L'exportation

8
Si 'BEAMER_ENV' est défini, l'exportation Org ajoute la balise 'B_environment' pour la rendre visible. Cette
balise sert d'aide visuelle et n'a aucune pertinence sémantique.
Chapitre 13 : 270
L'exportation

et remplit la colonne avec le contenu de l'entrée Org. Si l'entrée Org n'a pas
d'environnement spécifique défini, Beamer export ignore l'en-tête. Si l'entrée Org a
un environnement défini, Beamer export utilise l'en-tête comme titre. Dans les
coulisses, l'exportation Beamer gère automatiquement les séparations de colonnes
LATEX pour les titres contigus. Pour les ajuster manuellement en fonction des
besoins de configuration uniques, utilisez la propriété 'BEAMER_ENV'.

13.8.4 Syntaxe spécifique au Beamer


Comme le back-end d'exportation Beamer d'Org est une extension du back-end LATEX,
il reconnaît d'autres syntaxes spécifiques à LATEX - par exemple, '#+LATEX:' ou
'#+ATTR_LATEX:'. Voir Section 13.10 [Exportation LATEX], page 168, pour plus de détails.
L'exportation Beamer enveloppe la table des matières générée avec le mot-clé
'OPTION' 'toc:t' dans un environnement 'frame'. L'exportation Beamer ne recouvre pas la
table des matières générée avec le mot-clé 'TOC' (voir Section 13.3 [Table des matières],
page 151). Utilisez des crochets pour spécifier les options.
#+TOC : titres [currentsection]
Insérer du code spécifique à Beamer à l'aide des constructions suivantes :
#+BEAMER : \pause

#+BEGIN_EXPORT beamer
Seul le back-end d'exportation Beamer
exporte ceci. #+END_EXPORT

Texte @@beamer:some code@@ dans un paragraphe.


Les constructions en ligne, comme la dernière ci-dessus, sont utiles pour ajouter des
spécifications de superposition aux objets de type gras, élément, lien, cible radio et
cible. Mettez la valeur entre crochets angulaires et placez la spécification au début de
l'objet, comme indiqué dans cet exemple :
Un *@@beamer:<2->@@@usful* feature
L'exportation Beamer reconnaît le mot-clé 'ATTR_BEAMER' avec les attributs suivants
des configurations Beamer : ':environment' pour modifier l'environnement local de
Beamer, ':overlay' pour spécifier les recouvrements de Beamer entre crochets ou
angulaires, et ':options' pour insérer des arguments optionnels.
#+ATTR_BEAMER : :environnement nonindentlist
- point 1, non indenté
- point 2, non indenté
- point 3, non indenté
#+ATTR_BEAMER : :overlay <+->
- point 1
- point 2
#+ATTR_BEAMER : :options [Lagrange]
Soit $G$ un groupe fini, et soit $H$ un groupe fini.
un sous-groupe de $G$. Alors l'ordre de $H$ divise l'ordre de $G$.
Chapitre 13 : 271
L'exportation

13.8.5 Aide à la rédaction


Le mode Org Beamer est un mode mineur spécial permettant une édition plus rapide des documents
Beamer.
#+STARTUP : beamer

C-c C-b (org-beamer-select-environment)


Le mode Org Beamer fournit cette touche pour des sélections plus rapides
dans les environnements normaux Beamer, et pour sélectionner la propriété
'BEAMER_COL'.

13.8.6 Un exemple de Beamer


Voici un exemple de document Org prêt à être exporté par Beamer.
#+TITLE : Example Presentation
#+AUTHOR : Carsten Dominik
#+OPTIONS : H:2 toc:t num:t
#+LATEX_CLASS : beamer
#+LATEX_CLASS_OPTIONS : [presentation]
#+BEAMER_THEME : Madrid
#+COLUMES : %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col)

* Il s'agit de la première section structurelle

** Cadre 1
*** Merci à Eric Fraga B_block :
:PROPRIÉTÉS :
:BEAMER_COL : 0.48
:BEAMER_ENV : bloc
:FIN :
pour la première installation viable de Beamer en Org
*** Merci à tous les autres B_block :
:PROPRIÉTÉS :
:BEAMER_COL : 0.48
:BEAMER_ACT : <2->
:BEAMER_ENV : bloc
:FIN :
pour avoir contribué à la discussion
**** Ceci sera formaté comme une note beamer :B_note :
:PROPRIÉTÉS :
BEAMER_env : note
:FIN :
** Cadre 2 (où nous n'utiliserons pas de colonnes)
*** Demande
S'il vous plaît, testez ce produit !

13.9 Exportation HTML


Org contient un exportateur HTML avec un formatage HTML étendu compatible avec le
standard XHTML 1.0 strict.
Chapitre 13 : 272
L'exportation

13.9.1 Commandes d'exportation HTML


C-c C-e h h (org-html-export-to-html)
Exportation en tant que fichier HTML avec une extension '.html'. Pour
"monfichier.org", Org exporte vers "monfichier.html", en l'écrasant sans
avertissement. C-c C-e h o exporte en HTML et l'ouvre dans un navigateur
web.
C-c C-e h H (org-html-export-as-html)
Exporte vers une mémoire tampon temporaire. Ne crée pas de fichier.
13.9.2 Paramètres d'exportation spécifiques à HTML
L'exportation HTML comporte un certain nombre de mots-clés, similaires aux options
générales décrites à la section 13.2 [Paramètres d'exportation], page 148.
DESCRIPTION
Il s'agit de la description du document, que l'exportateur HTML insère en tant
que balise méta HTML dans le fichierHTML. Pour lesdescriptions longues,
utilisez plusieurs lignes "DESCRIPTION". L'exportateur se charge
d'envelopper les lignes correctement. L'exportateur inclut un certain nombre
d'autres métabalises, qui peuvent être personnalisées en modifiant org-
html-meta-tags.
HTML_DOCTYPE
Spécifiez le type de document, par exemple : HTML5 (org-html-doctype).
HTML_CONTAINER
Spécifier le conteneur HTML, tel que "div", pour envelopper les sections et les
éléments (org-html-container-element).
'HTML_LINK_HOME'
L'URL du lien d'accueil (org-html-link-home).
HTML_LINK_UP
L'URL pour le lien vers le haut des pages HTML exportées (org-html-link-up).
HTML_MATHJAX
Options pour MathJax (org-html-mathjax-options). MathJax est utilisé
pour mettre en forme les mathématiques LATEX dans les documents HTML.
Voir Section 13.9.10 [Formatage mathématique dans l'exportation HTML],
page 165, pour un exemple.
HTML_HEAD
Lignes arbitraires à ajouter à l'en-tête du document HTML (org-html-head).
'HTML_HEAD_EXTRA'
Plus de lignes arbitraires à ajouter à l'en-tête du document HTML (org-
html- head-extra).
KEYWORDS"
Mots-clés décrivant le contenu du document. L'exportateur HTML insère ces
(MOTS-
mots-clés en tant que métabalises HTML. Pour les mots-clés longs, utilisez
CLÉS) plusieurs lignes 'KEYWORDS'.
'LATEX_HEADER'
Lignes arbitraires à ajouter au préambule ; l'exportateur HTML les ajoute lors
du transcodage des fragments LATEX en images (voir Section 13.9.10
[Formatage mathématique dans l'exportation HTML], page 165).
Chapitre 13 : 273
L'exportation

SUBTITLE' (SOUS-TITRES)
Le sous-titre du document. L'exportateur HTML formate le sous-titre si le
type de document est 'HTML5' et si le CSS a une classe 'subtitle'.
Certains de ces mots-clés sont expliqués plus en détail dans les sections suivantes
du manuel.

13.9.3 Doctypes HTML


Org peut être exporté vers différents formats (X)HTML.
Définissez la variable org-html-doctype pour les différentes variantes (X)HTML.
Selon la variante, l'exportateur HTML ajuste la syntaxe de la conversion HTML en
conséquence. Org comprend les variantes prêtes à l'emploi suivantes :
• "html4-strict"
• "html4-transitional"
• "html4-frameset"
• "xhtml-strict"
• "xhtml-transitional"
• "xhtml-frameset"
• "xhtml-11"
• "html5"
• "xhtml5"
Voir la variable org-html-doctype-alist pour plus de détails. La valeur par défaut est "xhtml-strict".
L'exportateur HTML d'Org n'active pas par défaut les nouveaux éléments de bloc
introduits par le standard HTML5. Pour les activer, définissez org-html-html5-fancy à
non-nil. Ou utilisez une ligne 'OPTIONS' dans le fichier pour définir 'html5-fancy'.
Les documents HTML5 peuvent désormais comporter des blocs arbitraires '#+BEGIN' . . . #+END'
arbitraires. Par exemple :
#+BEGIN_aside
Lorem ipsum
#+END_aside
à l'exportation :
<aside>
</p> <p>Lorem ipsum</p> <p>Lorem ipsum</p> <p>Lorem ipsum
</aside>
alors que ceci :
#+ATTR_HTML : :controls controls :width 350
#+BEGIN_video
#+HTML : <source src="movie.mp4" type="video/mp4">
#+HTML : <source src="movie.ogg" type="video/ogg">
Votre navigateur ne prend pas en charge la balise
vidéo. #+END_video
à l'exportation :
Chapitre 13 : 274
L'exportation

<video controls="controls" width="350">


<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
<p>Votre navigateur ne prend pas en charge la balise vidéo.</p>
</video>
Lorsque des blocs spéciaux n'ont pas d'élément HTML5 correspondant, l'exportateur
HTML revient à la traduction standard (voir org-html-html5-elements). Par exemple,
'#+BEGIN_lederhosen' s'exporte en <div class="lederhosen">.
Les blocs spéciaux ne peuvent pas avoir de titre. Pour que l'exportateur HTML
enveloppe le titre et son contenu dans des balises <section> ou <article>, définissez
la propriété "HTML_CONTAINER" pour le titre.

13.9.4 Préambule et postambule HTML


L'exportateur HTML dispose de délimitations pour le préambule et le postambule. La
valeur par défaut de org-html-preamble est t, ce qui fait que l'exportateur HTML
insère le préambule. Voir la variable org-html-preamble-format pour la chaîne de
format.
Donner à org-html-preamble la valeur d'une chaîne pour remplacer la chaîne de
format par défaut. S'il s'agit d'une fonction, l'exportateur HTML s'attend à ce que la
fonction renvoie une chaîne lors de son exécution. L'exportateur HTML insère cette
chaîne dans le préambule. L'exportateur HTML n'insère pas de préambule si org-html-
preamble est défini comme nil.
Ce qui précède s'applique également à org-html-postamble et org-html-
postamble-format. En outre, org-html-postamble peut être défini sur auto (sa valeur
par défaut), ce qui oblige l'exportateur HTML à construire un postambule à partir du nom
de l'auteur, de l'adresse électronique, du nom du créateur et de la date.

13.9.5 Citer des balises HTML


Le back-end d'exportation HTML transforme '<' et '>' en '&lt;' et '&gt;'. Pour inclure du
code HTML brut dans le fichier Org afin que le back-end d'exportation HTML puisse
insérer ce code HTML dans la sortie, utilisez cette syntaxe inline : '@@html :...@@'. Par
exemple :
@@html:<b>@@texte en gras@@html:</b>@@@
Pour des blocs de code HTML brut plus importants, utilisez ces blocs de code d'exportation HTML :
#+HTML : Code HTML littéral pour l'exportation

#+BEGIN_EXPORT html
Toutes les lignes entre ces marqueurs sont exportées
littéralement #+END_EXPORT

13.9.6 Titres dans l'exportation HTML


Les titres sont exportés sous forme de '<h1>', '<h2>', etc. Chaque titre reçoit l'attribut
"id" de la propriété "CUSTOM_ID" ou une valeur unique générée, voir la section 4.2 [Liens
internes], page 39.
Lorsque la valeur de org-html-self-link-headlines est différente de zéro, le
texte des lignes d'en-tête est également entouré de balises "<a>". Ces balises ont un
Chapitre 13 : 275
L'exportation
attribut "href" qui fait que les titres sont liés à eux-mêmes.
Chapitre 13 : 276
L'exportation

13.9.7 Liens dans l'exportation HTML


Le back-end d'exportation HTML transforme les liens internes d'Org (voir Section 4.2
[Liens internes], page 39) en liens HTML équivalents dans la sortie. Le back-end traite
de la même manière les liens automatiques d'Org créés par les cibles radio (voir Section
4.3 [Cibles radio], page 40). Pour les liens Org vers des fichiers externes, le back-end
transforme les liens en chemins relatifs.
Pour les liens Org vers d'autres fichiers '.org', le back-end change automatiquement
l'extension du fichier en '.html' et rend les chemins d'accès relatifs. Si les fichiers '.org'
ont une version '.html' équivalente au même endroit, les liens convertis devraient
fonctionner sans autre intervention manuelle. Cependant, pour désactiver cette
traduction automatique des chemins, définissez org-html- link-org-files-as-html
à nil. Lorsqu'il est désactivé, le back-end d'exportation HTML remplace les liens basés
sur l'ID dans la sortie HTML. Pour plus d'informations sur la création de liens entre les
fichiers lors de la publication dans un répertoire, voir Section 14.1.6 [Publication de
liens], page 209.
Les fichiers Org peuvent également contenir des directives spéciales pour le back-
end d'exportation HTML. Par exemple, en utilisant les lignes '#+ATTR_HTML' pour
spécifier de nouveaux attributs de format aux balises <a> ou <img>. Cet exemple
montre la modification du titre et du style du lien :
#+ATTR_HTML : :title Le site web du mode Org :style color:red ;
[[https://orgmode.org]]

13.9.8 Tableaux dans l'exportation HTML


Le back-end d'exportation HTML utilise org-html-table-default-attributes lors de
l'exportation des tableaux Org vers HTML. Par défaut, l'exportateur ne dessine pas les
cadres et les bordures des cellules. Pour changer cela pour un tableau, utilisez les
lignes suivantes avant le tableau dans le fichier Org :
#+CAPTION : Ceci est un tableau avec des lignes autour et entre les
cellules #+ATTR_HTML : :border 2 :rules all :frame border
Le back-end d'exportation HTML préserve les regroupements de colonnes dans les
tableaux Org (voir section 3.3 [Groupes de colonnes], page 22) lors de l'exportation vers
HTML.
Options supplémentaires pour la personnalisation des tableaux pour l'exportation HTML.
org-html-table-align-individual-fields
Non-nil attache des attributs de style pour l'alignement à chaque champ de la table.
org-html-table-caption-above
Une valeur non nulle place la chaîne de légende au début du tableau.
org-html-table-data-tags
Balises d'ouverture et de fermeture pour les champs de données de la table.
org-html-table-default-attributes
Attributs et valeurs par défaut des balises de tableau.
org-html-table-header-tags
Balises d'ouverture et de fermeture pour les champs d'en-tête de la table.
org-html-table-row-tags
Balises d'ouverture et de fermeture pour les lignes du tableau.
org-html-table-use-header-tags-for-first-column
Chapitre 13 : 277
L'exportation
Non-nil formate la colonne 1 dans les tableaux avec balises d'en-tête.
Chapitre 13 : 278
L'exportation

13.9.9 Images dans l'exportation HTML


Le back-end d'exportation HTML dispose de fonctions permettant de convertir les liens
d'image Org en images HTML en ligne et en liens d'image HTML cliquables.
Lorsque le lien dans le fichier Org n'a pas de description, le back-end d'exportation
HTML intègre par défaut cette image. Par exemple : "[[file:myimg.jpg]]" est aligné,
tandis que "[[file:myimg.jpg][l'image]]" renvoie au texte "l'image". Pour plus de
détails, voir la variable org-html-inline-images.
En revanche, si la partie description du lien Org est elle-même un autre lien, tel
qu'une URL "file :" ou "http :" pointant vers une image, le back-end d'exportation
HTML intègre cette image et établit un lien avec l'image principale. Cette syntaxe Org
permet au back-end de lier la vignette basse résolution à la version haute résolution de
l'image, comme le montre cet exemple :
[[file:highres.jpg][file:thumb.jpg]]
Pour modifier les attributs des images alignées, utilisez les lignes "#+ATTR_HTML"
dans le fichier Org. Cet exemple montre un réalignement vers la droite et ajoute les
attributs alt et title pour prendre en charge les visionneuses de texte et les normes
modernes d'accessibilité au web.
#+CAPTION : Un chat noir traquant une araignée
#+ATTR_HTML : :alt image chat/araignée :title Action ! :align right
[[./img/a.jpg]]
Le back-end d'exportation HTML copie tels quels les liens "http" du fichier Org.

13.9.10 Formatage mathématique dans l'exportation HTML


Les extraits mathématiques LATEX (voir Section 12.5.1 [Fragments LATEX], page 139)
peuvent être affichés de deux manières différentes sur les pages HTML. Par défaut, on
utilise MathJax, qui devrait fonctionner d'emblée avec Org910 . Certaines options
d'affichage de MathJax peuvent être configurées via org-html-mathjax-options, ou
dans le tampon. Par exemple, avec les paramètres suivants,
#+HTML_MATHJAX : align : left indent : 5em tagside : left
les étiquettes des équations sont affichées dans la marge de gauche et les équations
sont à cinq em de la marge de gauche.
Voir la docstring de org-html-mathjax-options pour toutes les variables supportées.
Le modèle Math- Jax peut être configuré via org-html-mathjax-template.
Si vous préférez, vous pouvez également demander que les fragments LATEX soient
transformés en petites images qui seront insérées dans la page du navigateur. Avant
l'apparition de MathJax, c'était la méthode par défaut pour les fichiers Org. Cette
méthode nécessite que le programme dvipng, dvisvgm ou la suite ImageMagick soit
disponible sur votre système. Vous pouvez toujours obtenir ce traitement avec
#+OPTIONS :
tex:dvipng #+OPTIONS
: tex:dvisvgm
ou
#+OPTIONS : tex:imagemagick
9
Par défaut, Org charge MathJax à partir de jsDelivr, comme recommandé dans Getting Started with
MathJax Components.
10
Veuillez noter que les formules exportées font partie d'un document HTML et que les signes tels que "<",
Chapitre 13 : 279
L'exportation
">" ou "&" ont une signification particulière. Voir MathJax TEX et LATEX dans les documents HTML.
Chapitre 13 : 280
L'exportation

13.9.11 Zones de texte dans l'exportation HTML


Avant Babel d'Org mode, une approche populaire de la publication de code en HTML
consistait à utiliser ':textarea'. L'avantage de cette approche était que le copier-coller
était intégré dans les navigateurs avec de simples commandes JavaScript. Même l'édition
avant le collage était simplifiée.
Le back-end d'exportation HTML peut créer de telles zones de texte. Il nécessite une
ligne '#+ATTR_HTML' comme indiqué dans l'exemple ci-dessous avec l'option ':textarea'.
Cette ligne doit être suivie d'un exemple ou d'un bloc de code source. Les autres types
de blocs Org ne respectent pas l'option ':textarea'.
Par défaut, le back-end d'exportation HTML crée une zone de texte de 80 caractères
de large et d'une hauteur juste suffisante pour contenir le contenu. Les options ':width'
et ':height' de la ligne '#+ATTR_HTML' permettent d'outrepasser ces valeurs par défaut.
#+ATTR_HTML : :textarea t :width 40
#+BEGIN_EXAMPLE
(defun org-xor (a
b) "Exclusif
ou." (if a (not
b) b))
#+END_EXAMPLE

13.9.12 Support CSS


Vous pouvez modifier les définitions de style CSS pour le fichier exporté. L'exportateur
HTML attribue les classes CSS spéciales suivantes11 aux parties appropriées du
document - vos spécifications de style peuvent les modifier, en plus des classes
standard comme pour les titres, les tableaux, etc.
p.auteur informations sur l'auteur, y compris son adresse électronique
p.date date de publication
p.creator infos sur le créateur, sur la version du mode org
.titre titre du document
.sous-titre sous-titre du document
.todo Mots clés TODO, tous les états non faits
.done les mots-clés DONE, tous les états qui comptent comme étant faits
.WAITING chaque mot-clé TODO utilise également une classe qui porte son nom
.timestamp horodatage
.timestamp-kwd mot-clé associé à un horodatage, comme "SCHEDULED".
.timestamp-wrapper espace autour du mot-clé et de l'horodatage
.tag dans un titre
._HOME chaque balise s'utilise elle-même comme classe, "@" étant remplacé par " ".
.target cible pour les liens
.linenr le numéro de ligne dans un exemple de code
.code-highlighted pour mettre en évidence les lignes de
code référencées div.outline-N div pour le niveau de contour N
(titre et texte) div.outline-text-Ndiv supplémentaire pour le
texte de niveau N
.section-number-N numéro de section dans les titres, différent pour chaque niveau
.figure-number étiquette comme "Figure 1 :"
11
Si les classes sur les mots-clés et les balises TODO conduisent à des conflits, utilisez les variables org-
html-todo-kwd- class-prefix et org-html-tag-class-prefix pour les rendre uniques.
Chapitre 13 : 281
L'exportation

.table-number étiquette comme "Tableau 1 :"


.listing-number étiquette comme "Listing 1 :"
div.figure comment mettre en forme une image doublée
pre.src code source formaté
pré.exemple exemple normal
p.vers paragraphe de verset
div.footnotes titre de la section des notes de bas de page
p.footnote paragraphe de définition d'une note de bas de page, contenant une note de bas
de page
.footref un numéro de référence de note de bas de page (toujours un <sup>)
.footnum numéro de la note de bas de page dans la définition de la note de bas de page
(toujours <sup>)
.org-svg classe par défaut pour une image '.svg' liée
Le back-end d'exportation HTML inclut un style compact par défaut dans chaque
fichier HTML exporté. Pour remplacer le style par défaut par un autre style, utilisez ces
mots-clés dans le fichier Org. Ils remplaceront les valeurs par défaut globales utilisées
par l'exportateur HTML.
#+HTML_HEAD : <link rel="stylesheet" type="text/css" href="style1.css" />
#+HTML_HEAD_EXTRA : <link rel="alternate stylesheet" type="text/css" href="style2.css"
Pour désactiver le style par défaut, personnalisez org-html-head-include-default-style
ou utiliser cette ligne d'option dans le fichier Org.
#+OPTIONS : html-style:nil
Pour les définitions de style plus longues, utilisez plusieurs mots-clés "HTML_HEAD" et
"HTML_HEAD_EXTRA", ou utilisez des blocs <style> ... </style> autour d'elles. Ces
deux approches permettent d'éviter de faire référence à un fichier externe.
Pour ajouter des styles à une sous-arborescence, utilisez la propriété
"HTML_CONTAINER_CLASS" pour attribuer une classe à l'arborescence. Afin de spécifier
des styles CSS pour un titre particulier, vous pouvez utiliser l'ID spécifié dans la
propriété 'CUSTOM_ID'. Vous pouvez également attribuer une classe spécifique à un titre
à l'aide de la propriété "HTML_HEADLINE_CLASS".
Ne modifiez jamais la constante org-html-style-default. Utilisez plutôt d'autres
moyens plus simples de personnalisation, comme décrit ci-dessus.
13.9.13 Affichage de pages web supporté par JavaScript
Sebastian Rose a écrit un programme JavaScript spécialement conçu pour permettre de
visualiser les fichiers HTML créés avec Org de deux manières différentes. L'une est un
mode Info-like où chaque section est affichée séparément et où la navigation peut se
faire avec les touches n et p, et quelques autres touches également, appuyez sur ? pour
un aperçu des touches disponibles. Le second mode est une vue pliante, à l'image de ce
que propose Org dans Emacs. Le script est disponible à l'adresse
https://orgmode.org/ org-info.js et la documentation à l'adresse
https://orgmode.org/worg/code/org-info-js/.
. Le script est hébergé sur https://orgmode.org, mais pour plus de fiabilité, préférez
l'installer sur votre propre serveur web.
Pour utiliser ce programme, il suffit d'ajouter cette ligne au fichier Org :
#+INFOJS_OPT : view:info toc:nil
L'en-tête HTML contient maintenant le code nécessaire pour invoquer automatiquement
le script. Pour définir les options, utilisez la syntaxe de la ligne ci-dessus pour les options
décrites ci-dessous :
Chapitre 13 : 282
L'exportation
'path:' Le chemin vers le script. Par défaut, le script est récupéré à partir de https : /
/ orgmode.org/org-info.js, mais vous pourriez vouloir avoir une copie
locale et utiliser un chemin comme '../scripts/org-info.js'.
Chapitre 13 : 283
L'exportation

view : " Vue initiale lorsque le site web est affiché pour la première fois.
Les valeurs possibles sont les suivantes 'info'Interface de
type infographique avec une section par page 'overview'
Interface pliante, ne montrant initialement que le niveau
supérieur 'content'Interface pliante, commençant avec tous
les titres visibles 'showall' Interface pliante, tous les titres et
le texte visibles
sdepth:' Niveau maximum des titres, toujours considéré comme une section
indépendante pour les modes info et folding. La valeur par défaut est tirée
de org-export-headline-levels, c'est-à-dire de l'option "H" dans "OPTIONS".
Si cette valeur est inférieure à celle de org-export-headline- levels,
chaque section info/folding peut encore contenir des titres enfants.
'toc:' La table des matières doit-elle être visible au départ ? Même si elle est "nulle",
vous pouvez toujours accéder à la "toc" avec i.
'tdepth:' Profondeur de la table des matières. Les valeurs par défaut sont tirées des variables
org-export-headline-levels et org-export-with-toc.
ftoc : "Le CSS de la page spécifie-t-il une position fixe pour le "toc" ? Si oui, la toc est
affichée comme une section.
ltoc : " Doit-il y avoir des contenus courts (enfants) dans chaque section ? Indiquez
"above" si la section doit être placée au-dessus du texte initial.
souris : Les titres sont mis en évidence lorsque la souris passe dessus. Doit être
'underline' (par défaut) ou une couleur d'arrière-plan comme '#cccccc'.
'boutons:'
Les boutons de basculement de la vue doivent-ils être omniprésents ? Si le
bouton est "nil" (valeur par défaut), un seul bouton de ce type est présent.
Vous pouvez choisir des valeurs par défaut pour ces options en personnalisant la
variable org-infojs- options. Si vous souhaitez toujours appliquer le script à vos
pages, configurez la variable org-export-html-use-infojs.

13.10 Exportation LATEX


Le back-end d'exportation LATEX peut traiter des documents complexes, incorporer des
classes de documents LATEX standard ou personnalisées, générer des documents à l'aide
d'autres moteurs LATEX et produire des fichiers PDF entièrement liés avec des index, des
bibliographies et des tables des matières, destinés à une visualisation interactive en
ligne ou à une publication imprimée de haute qualité.
Bien que les détails soient couverts en profondeur dans cette section, voici quelques
références rapides aux variables pour les impatients : pour les moteurs, voir org-latex-
compiler ; pour les séquences de construction, voir org-latex-pdf-process ; pour les
paquets, voir org-latex-default-packages-alist et org-latex-packages-alist.
Une remarque importante concernant le back-end d'exportation LATEX : il est
sensible aux lignes vides dans le document Org. Cela s'explique par le fait que LATEX
lui-même dépend des lignes vides pour distinguer les éléments syntaxiques, tels que les
paragraphes.
13.10.1 Commandes d'exportation LATEX/PDF
C-c C-e l l (org-latex-export-to-latex)
Exportation vers un fichier LATEX avec une extension '.tex'. Pour
'monfichier.org', Org exporte vers 'monfichier.tex', en l'écrasant sans
Chapitre 13 : 284
L'exportationavertissement.
Chapitre 13 : 285
L'exportation

C-c C-e l L (org-latex-export-as-latex)


Exporter vers une mémoire tampon temporaire. Ne pas créer de fichier.
C-c C-e l p (org-latex-export-to-pdf)
Exporter un fichier LATEX et le convertir en fichier PDF.
C-c C-e l o
Exporter en tant que fichier LATEX et le convertir en PDF, puis ouvrir le
PDF à l'aide de la visionneuse par défaut.
M-x org-export-region-as-latex
Convertit la région en LATEX en supposant qu'elle était auparavant en mode
syntaxe Org. Il s'agit d'une commande globale qui peut être invoquée dans
n'importe quel tampon.
Le back-end d'exportation LATEX peut utiliser n'importe lequel de ces moteurs LATEX :
'pdflatex', 'xelatex' et 'lualatex'. Ces moteurs compilent les fichiers LATEX avec
différents compilateurs, paquets et options de sortie. Le back-end d'exportation LATEX
trouve la version du compilateur à utiliser à partir de la variable org-latex-compiler ou
du mot-clé '#+LATEX_COMPILER' dans le fichier Org. Voir la docstring pour org-latex-
default-packages-alist pour charger les paquets avec certains compilateurs. Voir
aussi org-latex-bibtex-compiler pour définir le compilateur de bibliographie12 .

13.10.2 Paramètres d'exportation spécifiques à L A T E X


Le back-end d'exportation LATEX dispose de plusieurs mots-clés supplémentaires pour
personnaliser la sortie de LATEX. La définition de ces mots-clés fonctionne de la même
manière que les options générales (voir Section 13.2 [Paramètres d'exportation], page
148).
DESCRIPTION
La description du document. La description ainsi que le nom de l'auteur, les
mots-clés et les métadonnées des fichiers connexes sont insérés dans le
fichier de sortie par le paquet hyperref. Voir org-latex-hyperref-template
pour personnaliser les éléments de métadonnées. Voir org-latex-title-
command pour la composition de la description dans la première page du
document. Utilisez plusieurs mots-clés "DESCRIPTION" pour les descriptions
longues.
LANGUE
Code de la langue du document principal.
La liste des codes de langue pris en charge par Org est stockée dans la
variable org-latex- language-alist.
Pour être efficaces, les paquets 'babel' ou 'polyglossia' - selon le
compilateur LATEX utilisé - doivent être chargés avec le langage approprié
comme argument. Ceci peut être réalisé en modifiant la variable org-latex-
packages- alist, par exemple, avec l'extrait suivant (notez que
'polyglossia' ne fonctionne pas avec pdfLATEX) :
(ajouter à la liste 'org-latex-packages-alist
'("AUTO" "babel" t ("pdflatex" "xelatex"
"lualatex"))) (add-to-list 'org-latex-packages-alist
'("AUTO" "polyglossia" t ("xelatex" "lualatex")))
12
Cela ne permet pas de définir des compilateurs de bibliographie différents pour des fichiers différents.
Cependant, les systèmes de compilation LATEX "intelligents", tels que latexmk, peuvent
sélectionner le compilateur de bibliographie correct.
Chapitre 13 : 286
L'exportation

'LATEX_CLASS'
Il s'agit d'une classe de document LATEX, telle que article, rapport, livre, etc.,
qui contient un préambule prédéfini et une correspondance au niveau du
titre dont le back-end de l'ex-port LATEX a besoin. Le back-end lit le nom de
la classe par défaut à partir de la variable org-latex-default-class. Org a
article comme classe par défaut. Une classe par défaut valide doit être un
élément de org-latex-classes.
'LATEX_CLASS_OPTIONS'
Options utilisées par le back-end d'exportation LATEX lors de l'appel de la classe de document LATEX.
'LATEX_COMPILER'
Le compilateur, tel que 'pdflatex', 'xelatex', 'lualatex', pour produire le
PDF. Voir org-latex-compiler.
'LATEX_HEADER'
'LATEX_HEADER_EXTRA'
Lignes arbitraires à ajouter au préambule du document, avant les paramètres
de l'hyperref. Voir org-latex-classes pour ajuster la structure et l'ordre des
en-têtes LATEX.
KEYWORDS"
Les mots-clés du document. La description ainsi que le nom de l'auteur, les
(MOTS-
mots-clés et les métadonnées des fichiers connexes sont insérés dans le
CLÉS) fichier de sortie par le paquet hyperref. Voir org-latex-hyperref-template
pour personnaliser les éléments de métadonnées. Voir org-latex-title-
command pour la composition de la description dans la première page du
document. Utilisez plusieurs lignes "KEYWORDS" si nécessaire.

Le sous-titre du document. Il est typographié selon org-latex-subtitle-


SUBTITLE' format. Si org-latex-subtitle-separate est non nul, il est tapé en
(SOUS- dehors de la macro \title. Voir org-latex-hyperref-template pour
TITRES) personnaliser les éléments de métadonnées. Voir org-latex-title-command
pour la composition de la description dans la première page du document.
Les sections suivantes donnent plus de détails.

13.10.3 Structure de l'en-tête et de la section de L A T E X


Le back-end d'exportation LATEX convertit les trois premiers niveaux d'Org en lignes de
tête LATEX. Les autres niveaux d'Org sont exportés sous forme de listes. Pour modifier
globalement le point de coupure entre les niveaux et les listes, (voir Section 13.2
[Paramètres d'exportation], page 148).
Par défaut, le back-end d'exportation LATEX utilise la classe article.
Pour changer la classe par défaut globalement, éditez org-latex-default-class.
Pour modifier la classe par défaut localement dans un fichier Org, ajoutez les lignes
d'option "#+LATEX_CLASS : myclass". Pour modifier la classe par défaut pour une partie
seulement du fichier Org, définissez une propriété de sous-arbre, 'EXPORT_LATEX_CLASS'.
Le nom de la classe saisi ici doit être un membre valide de org-latex-classes. Cette
variable définit un modèle d'en-tête pour chaque classe dans lequel l'exportateur insère
les valeurs de org-latex-default-packages-alist et org-latex-packages-alist.
Utilisez les trois mêmes variables pour définir des sections ou des classes
personnalisées.
Le back-end d'exportation LATEX envoie le mot-clé "LATEX_CLASS_OPTIONS" et la
propriété "EXPORT_LATEX_CLASS_OPTIONS" en tant qu'options à la macro LATEX
\documentclass.
Chapitre 13 : 287
L'exportation

Les options et la syntaxe pour les spécifier, y compris leur mise entre crochets, suivent
les conventions LATEX.
#+LATEX_CLASS_OPTIONS : [a4paper,11pt,twoside,twocolumn]
Le back-end d'exportation LATEX ajoute les valeurs des mots-clés 'LATEX_HEADER' et
'LATEX_HEADER_EXTRA' à l'en-tête LATEX. La docstring pour les classes org-latex-
explique plus en détail. Notez également que le back-end d'exportation LATEX n'ajoute
pas 'LATEX_HEADER_EXTRA' à l'en-tête lors de la prévisualisation de fragments LATEX (voir
Section 12.5.2 [Prévisualisation de fragments LATEX], page 140).
Un exemple de fichier Org avec les en-têtes ci-dessus :
#+LATEX_CLASS : article
#+LATEX_CLASS_OPTIONS :
[a4paper]
#+LATEX_HEADER : \usepackage{xyz}

* Titre 1
un peu de
texte
* Titre 2 un
peu plus de
texte
Les paquets LATEX "babel" ou "polyglossia" peuvent également être chargés dans
un document. La chaîne "AUTO" sera remplacée dans les deux cas par la valeur
appropriée du mot-clé "LANGUAGE", s'il est présent dans le document, ou par la valeur de
org-export-default-language. Voyons quelques exemples dans l'un ou l'autre cas.
Babel accepte la syntaxe classique et (en plus) la nouvelle syntaxe avec la
commande '\babelprovide' pour charger les langues en utilisant la nouvelle procédure
des fichiers 'INI'. Gardez à l'esprit qu'il existe un certain nombre de langues qui ne sont
servies dans Babel qu'à l'aide de fichiers 'INI', et qui ne peuvent donc pas être
déclarées à l'aide de la syntaxe classique, mais uniquement à l'aide de la commande
'\babelprovide' (voir https : / /mirrors .ctan .org /macros /latex /required /babel
/base / babel.pdf). Des exemples d'utilisation valables pourraient être :
#+LATEX_HEADER : \usepackage[french,italian,AUTO]{babel}
où "AUTO" est la langue principale. Mais il peut également être chargé à l'aide de la
commande "\babelprovide" :
#+LATEX_HEADER : \usepackage[french,italian]{babel}
#+LATEX_HEADER : \babelprovide[import, main]{AUTO}
Pour que cette procédure soit efficace, la "polyglossie" doit être chargée en utilisant
la même syntaxe classique de "babel" (mais notez qu'il ne s'agit pas de la syntaxe réelle de
la polyglossie). Par exemple, supposons qu'un document déclare le grec polytonique
comme langue principale et le français comme langue secondaire. Dans ce cas, il serait
exprimé comme suit :
#+LANGUE : el-polyton
#+LATEX_HEADER : \usepackage[french,AUTO]{polyglossia}
Cela produirait en LATEX (avec la syntaxe "polyglossique" actuelle) :
\n-usepackage{polyglossia}
\setmainlanguage[variant=polytonic]{greek}
\setotherlanguage{french}
Chapitre 13 : 288
L'exportation

13.10.4 Citation du code L A T E X


Le back-end d'exportation LATEX peut insérer n'importe quel code LATEX arbitraire, voir
Section 12.5 [Embedded LATEX], page 139. Il y a trois façons d'incorporer un tel code dans
le fichier Org et elles utilisent toutes une syntaxe de citation différente.
Insertion de citations en ligne avec les symboles @ :
Code intégré en ligne @@latex:tout code LaTeX arbitraire@@ dans un paragraphe.
Insertion d'une ou plusieurs lignes de mots-clés dans le fichier Org :
#+LATEX : tout code LaTeX arbitraire
Insertion d'un bloc d'exportation dans le fichier Org, où le back-end exporte tout code
entre les marqueurs de début et de fin :
#+BEGIN_EXPORT latex
tout code LaTeX arbitraire
#+END_EXPORT

13.10.5 Tableaux dans l'exportation L A T E X


Le back-end d'exportation LATEX peut transmettre plusieurs attributs LATEX pour le
contenu et la présentation des tables. Outre la spécification d'une étiquette (voir la section
4.2 [Liens internes], page 39) et d'une légende (voir la section 12.8 [Légendes], page
144), les autres attributs LATEX valides sont les suivants :
':mode' Le back-end d'exportation LATEX enveloppe le tableau différemment en
fonction du mode pour un rendu précis des symboles mathématiques. Le
mode est soit 'table', 'math', 'inline-math', 'verbatim' ou 'tabbing'.
Pour le mode 'math' ou 'inline-math', le back-end d'exportation LATEX
enveloppe le tableau dans un environnement mathématique, mais chaque
cellule du tableau est exportée telle quelle. Pour le mode "tabbing",
l'environnement de tabulation LATEX est utilisé et les délimiteurs de
tabulation corrects "\>" sont utilisés. Le back-end d'exportation LATEX
détermine le mode par défaut à partir de org-latex- default-table-mode.
Le back-end d'exportation LATEX fusionne les tables contiguës dans le
même mode en un seul environnement.
':environnement'
Définir l'environnement de table LATEX par défaut que le back-end
d'exportation LATEX doit utiliser lors de l'exportation de tables Org. Les
environnements de table LATEX courants sont fournis par les paquets suivants
: tabularx, longtable, array, tabu et bmatrix. Pour les paquets tels que
tabularx et tabu, ou tout autre remplacement plus récent, incluez-les dans la
variable org-latex-packages-alist afin que le back-end d'exportation
LATEX puisse insérer les en-têtes de paquetage de chargement appropriés
dans le fichier LATEX converti. Consultez la docstring de la variable org-
latex-packages-alist pour configurer ces paquets pour les aperçus
d'extraits LATEX, s'il y en a.
':caption'
Le mot-clé "CAPTION" permet de définir une légende simple pour un tableau
(voir la section 12.8 [Légendes], page 144). Pour des légendes
personnalisées, utilisez l'attribut ':caption', qui accepte le code LATEX brut.
':float' La valeur ':caption' est prioritaire sur la valeur 'CAPTION'.
':placement'
Par défaut, les environnements des tableaux ne sont pas des objets flottants
dans LATEX. Pour en faire des objets flottants, utilisez ':float' avec l'une des
options suivantes : 't' (pour un environnement de-
Chapitre 13 : 289
L'exportation

fault 'table' environment), 'sideways' (pour un environnement


'sidewaystable'), 'multicolumn' (pour étendre le tableau sur plusieurs
colonnes d'une page dans un environnement 'table*') et 'nil'. En plus de ces
trois valeurs, ':float' peut transmettre n'importe quelle valeur arbitraire, par
exemple un type de flottant défini par l'utilisateur avec le paquetage LATEX
'float'.
Les flottants LATEX peuvent également être dotés d'attributs de mise en page
supplémentaires ':placement'. Il s'agit des autorisations habituelles '[h t b
p ! H]' spécifiées entre crochets. Notez que pour les tableaux ':float
sideways', le back-end d'exportation LATEX ignore les attributs ':placement'.
':align'
':font'
':width' Le back-end d'exportation LATEX utilise ces attributs pour les tables régulières afin de définir leur
les alignements, les polices et les largeurs.
':options'
L'attribut ' :options' permet d'ajouter un argument facultatif avec une liste de
diverses options de tableau (entre crochets dans l'exportation LATEX),
puisque certains environnements tabulaires, tels que longtblr du paquet
LATEX tabularray, fournissent cette structure. Par exemple : ':options
remark{Note}={note},remark{Source}={source}'.
':spread' Lorsque ':spread' est différent de zéro, l'exportateur LATEX étend ou réduit le
tableau de la valeur de ':width' pour les environnements tabu et longtabu.
':spread' n'a aucun effet si ':width' n'est pas défini.
':booktabs'
':center'
':rmlines'
Ces trois commandes sont des bascules. ':booktabs' apporte des
améliorations typographiques modernes aux tableaux ordinaires. Le paquet
booktabs doit être chargé via org-latex-packages-alist. ':center' permet
de centrer le tableau. ':rmlines' supprime toutes les lignes horizontales, à
l'exception de la première ligne composée de caractères ASCII, des
tableaux "table.el" uniquement.
':math-prefix'
':math-suffix'
':math-arguments'
Le back-end d'exportation LATEX insère la valeur de chaîne ':math-prefix'
dans un environnement mathématique avant la table. Le back-end
d'exportation LATEX insère la valeur de chaîne ':math-suffix' dans un
environnement mathématique après la table. Le back-end d'exportation
LATEX insère la valeur de chaîne ':math-arguments' entre le nom de la macro
et le contenu de la table. ':math-arguments' est utilisé pour les macros
matricielles qui nécessitent plus d'un argument, comme 'qbordermatrix'.
Les attributs de tableau LATEX permettent de formater les tableaux dans un grand
nombre de situations, telles que les produits matriciels ou les tableaux couvrant
plusieurs pages :
#+ATTR_LATEX : :environment longtable :align l|lp{3cm}r|l
| ... | ... |
| ... | ... |
Chapitre 13 : 290
L'exportation

#+ATTR_LATEX : :mode math :environment bmatrix :math-suffix \times


| a | b |
| c | d |
#+ATTR_LATEX : :mode math :environment bmatrix
| 1 | 2 |
| 3 | 4 |
Définissez la légende à l'aide de la commande LATEX "\bicaption{HeadingA}{HeadingB}" :
#+ATTR_LATEX : :caption \bicaption{HeadingA}{HeadingB}
| ... | ... |
| ... | ... |

13.10.6 Images dans l'exportation L A T E X


Le back-end d'exportation LATEX traite les liens d'image dans les fichiers Org qui n'ont pas
de description, tels que ces liens '[[file:img.jpg]]' ou '[[./img.jpg]]', comme des
insertions d'images directes dans la sortie finale du PDF. Dans le PDF, il ne s'agit plus
de liens, mais d'images réelles intégrées à la page. Le back-end d'exportation LATEX
utilise la macro '\includegraphics' pour insérer l'image. Mais pour les images TikZ
(https://sourceforge.net/projects/pgf/), le back-end utilise une macro '\includegraphics'
pour insérer l'image.
\Macro d'entrée enveloppée dans un environnement d'image.
Pour spécifier la ':largeur', la ':hauteur', l' ':échelle' et d'autres ':options' de l'image, utilisez cette
syntaxe :
#+ATTR_LATEX : :largeur 5cm :options
angle=90 [[./img/sed-hr4049.pdf]]
Un attribut ':scale' remplace les attributs ':width' et ':height'.
Pour les commandes personnalisées de légendes, utilisez l'attribut ':caption'. Il
remplace la valeur par défaut "#+CAPTION" :
#+ATTR_LATEX : :caption \bicaption{HeadingA}{HeadingB}
[[./img/sed-hr4049.pdf]]
Lorsque les légendes suivent la méthode décrite dans la section 12.8 [Légendes], page
144, le back-end d'exportation LATEX enveloppe l'image dans un environnement flottant
de type "figure". Pour faire flotter une image sans spécifier de légende, définissez
l'attribut ':float' comme suit :
't' Pour un environnement 'figure'
par défaut. multicolonne
Pour que l'image s'étende sur plusieurs colonnes d'une page, le système dorsal enveloppe
l'élément
dans un environnement "figure*".
Pour que le texte circule autour de l'image de droite ; la figure occupe la moitié gauche
de la page.
latéral
Pour une nouvelle page avec l'image de côté, tournée de quatre-vingt-dix
degrés, dans u n environnement 'sidewaysfigure' ; remplace le paramètre
':placement'.
'nil' Pour éviter un ':float' même en cas
d'utilisation d'une légende. Toute valeur arbitraire
Chapitre 13 : 291
L'exportation

Par exemple, un type float défini par l'utilisateur avec le package LATEX 'float'.
Chapitre 13 : 292
L'exportation

Utilisez l'attribut "placement" pour modifier l'emplacement d'un environnement flottant.


#+ATTR_LATEX : :float wrap :width 0.38\textwidth :placement
{r}{0.4\textwidth} [[./img/hst.png]]
Le back-end d'exportation LATEX centre toutes les images par défaut. Définir
':center' à 'nil' désactive le centrage. Pour désactiver le centrage de manière globale,
définissez org-latex-images-centered à 'nil'.
Définir l'attribut ':comment-include' à une valeur non nulle pour que le back-end
d'exportation LATEX commente la macro '\includegraphics'.

13.10.7 Listes simples dans l'exportation L A T E X


Le back-end d'exportation LATEX accepte les attributs "environment" et "options" pour
les listes simples. Ces deux attributs permettent de personnaliser les listes, comme le
montrent les exemples :
#+LATEX_HEADER : \usepackage[inline]{enumitem}
Quelques façons de dire "Hello" :
#+ATTR_LATEX : :environnement itemize*
#+ATTR_LATEX : :options [label={}, itemjoin={,}, itemjoin*={, and}]
- Hola
- Bonjour à tous
- Guten Tag.
Comme LATEX ne prend en charge que quatre niveaux d'imbrication pour les listes, il
convient d'utiliser un paquetage externe, tel que "enumitem" dans LATEX, pour les
niveaux supérieurs à quatre :
#+LATEX_HEADER : \N-usepackage{enumitem}
#+LATEX_HEADER : \renewlist{itemize}{itemize}{9}
#+LATEX_HEADER : \setlist[itemize]{label=$\circ$}
- Un
- Deux
- Trois
- Quatre
- Cinq

13.10.8 Blocs sources dans l'exportation L A T E X


Le back-end d'exportation LATEX peut transformer les blocs de code source en objets
flottants grâce aux attributs ':float' et ':options'. Pour ':float' :
't' Fait flotter un bloc source ; par défaut, fait flotter tout bloc source avec une
légende. multicolonne
Étend le bloc source sur plusieurs colonnes d'une page.
'nil 'Évite un ':float' même en cas d'utilisation d'une légende ; utile pour les
blocs de code source qui peuvent ne pas tenir sur une page.
#+ATTR_LATEX : :float
nil #+BEGIN_SRC emacs-
lisp
Code Lisp qui ne tient pas sur une seule
page. #+END_SRC
Le back-end d'exportation LATEX transmet des valeurs de chaîne dans ':options' aux
paquets LATEX pour la personnalisation de ce bloc source spécifique. Dans l'exemple ci-
dessous, les ':options' sont définies comme suit
Chapitre 13 : 293
L'exportation

pour Engraved ou Minted. Minted est un paquetage LATEX de mise en évidence du


code source avec de nombreuses options configurables13 . Minted et Engraved sont tous
deux construits sur fvextra, et supportent donc la plupart des mêmes options.
#+ATTR_LATEX : :options mathescape
#+BEGIN_SRC emacs-lisp
(defun Fib (n) ; $n_i = n_{i-2} + n_{i-1}$
(if (< n 2) n (+ (Fib (- n 1)) (Fib (- n 2)))))
#+END_SRC
Pour appliquer des options de configuration similaires à tous les blocs source d'un
fichier, utilisez les variables org-latex- listings-options, org-latex-engraved-
options et org-latex-minted-options.

13.10.9 Exemples de blocs dans l'exportation L A T E X


Le back-end d'exportation LATEX enveloppe le contenu des blocs d'exemple dans un
environnement "verbatim". Pour modifier ce comportement et utiliser un autre
environnement globalement, spécifiez un filtre d'exportation approprié (voir Section 13.17
[Configuration avancée de l'exportation], page 199). Pour modifier ce comportement et
utiliser un autre environnement pour chaque bloc, utilisez le paramètre ':environment'
pour spécifier un environnement personnalisé.
#+ATTR_LATEX : :environment myverbatim
#+BEGIN_EXAMPLE
Cette phrase est
fausse. #+END_EXAMPLE

13.10.10 Blocs spéciaux dans l'exportation L A T E X


Pour les autres blocs spéciaux du fichier Org, le back-end d'exportation LATEX crée un
environnement spécial du même nom. Le back-end prend aussi ':options', s'il y en a, et
l'ajoute tel quel à la chaîne d'ouverture de l'environnement. Par exemple :
#+BEGIN_abstract
Nous démontrons comment résoudre le problème de
Syracuse. #+END_abstract

#+ATTR_LATEX : :options [Preuve du théorème


important] #+BEGIN_proof
...
Par conséquent, tout nombre pair supérieur à 2 est la somme de deux
nombres premiers. #+END_proof
exportations vers
\begin{abstract}
Nous démontrons comment résoudre le problème de Syracuse.
\n-{abstract}

\begin{proof}[Preuve d'un théorème important]


...
13
Minted utilise un paquetage Python externe pour la mise en évidence du code, ce qui nécessite l'ajout de
l'option '-shell-escape' à org-latex-pdf-process.
Chapitre 13 : 294
L'exportation

Par conséquent, tout nombre pair supérieur à 2 est la somme de deux nombres
premiers.
\n-{preuve}
Si vous souhaitez insérer une commande de légende spécifique, utilisez l'attribut
':caption'. Il remplace la valeur standard "CAPTION", le cas échéant. Par exemple,
l'attribut ':caption' remplace la valeur standard 'CAPTION' :
#+ATTR_LATEX : :caption \MyCaption{HeadingA}
#+BEGIN_proof
...
#+END_proof

13.10.11 Règles horizontales dans l'exportation L A T E X


Le back-end d'exportation LATEX convertit les règles horizontales en fonction des
attributs ':width' et ':thickness' spécifiés. Par exemple :
#+ATTR_LATEX : :width .6\textwidth :thickness 0.8pt

13.10.12 Blocs de versets dans l'exportation L A T E X


Le back-end d'exportation LATEX accepte quatre attributs pour les blocs de vers :
':lines', ':center', ':versewidth' et ':latexcode'. Les trois premiers nécessitent le
paquetage LATEX externe "verse.sty", qui est une extension de l'environnement
LATEX standard.
':lines' Pour ajouter une numérotation marginale des versets. Sa valeur est un nombre
entier, la séquence dans laquelle les versets doivent être numérotés.
':center' Avec la valeur 't', tous les versets de la page sont optiquement centrés (une
convention typographique pour la poésie), en prenant comme référence le
verset le plus long, qui doit être indiqué par l'attribut ':versewidth'.
':versewidth'
Sa valeur est une chaîne de texte littérale contenant le verset le plus long.
':latexcode'
Il accepte tout code LATEX arbitraire pouvant être inclus dans un
environnement LATEX "vers".
Un exemple complet avec le premier sonnet de Shakespeare :
#+ATTR_LATEX : :center t :latexcode \color{red} :lines 5
#+ATTR_LATEX : :versewidth Feed'st thy light's flame with self-substantial fuel,
#+BEGIN_VERSE
Nous désirons que les plus belles
créatures se multiplient, afin que la rose
de la beauté ne meure jamais, mais que, si
la plus mûre s'éteint avec le temps, son
tendre héritier puisse porter son
souvenir.
Mais toi, contracté à tes propres yeux brillants, Tu
alimentes la flamme de ta lumière avec un
combustible autosubstantiel, Faisant une famine là
où se trouve l'abondance,
Toi-même ton ennemi, trop cruel pour ta
douce personne. Toi qui es maintenant le
Chapitre 13 : 295
L'exportation
nouvel ornement du monde, Et le seul héraut
du printemps éclatant,
Chapitre 13 : 296
L'exportation

C'est dans ton propre bourgeon que s'enfouit


ton contentement, Et, tendre enfant, tu
gaspilles dans l'indigence. Pitié pour le
monde, si ce glouton n'est pas là,
Pour manger le dû du monde, par la tombe et
par toi. #+END_VERSE

13.10.13 Blocs de citation dans l'exportation L A T E X


Le back-end d'exportation LATEX accepte deux attributs pour les blocs de citation :
':environment', pour un environnement de citation arbitraire (la valeur par défaut est
celle de org-latex-default- quote-environment : "quote") et ':options'. Par
exemple, pour choisir l'environnement "quotation", inclus comme alternative à "quote"
dans les classes LATEX standard :
#+ATTR_LATEX : :citation de l'environnement
#+BEGIN_QUOTE
un peu de texte...
#+END_QUOTE
Pour choisir l'environnement 'foreigndisplayquote', inclus dans le paquetage
LATEX 'csquotes', avec l'option 'german', utilisez la syntaxe suivante :
#+LATEX_HEADER:\usepackage[autostyle=true]{csquotes}
#+ATTR_LATEX : :environment foreigndisplayquote :options
{german} #+BEGIN_QUOTE
un peu de texte en
allemand...
#+END_QUOTE
qui est exporté vers LATEX sous la forme
\begin{foreigndisplayquote}{german}
du texte en allemand...
\n-{foreigndisplayquote}

13.11 Exportation Markdown


Le back-end d'exportation Markdown, "md", convertit un fichier Org au format Markdown,
tel que défini à l'adresse https://daringfireball.net/projects/markdown/.
Puisqu'il est construit sur le back-end HTML (voir Section 13.9 [Exportation HTML],
page 160), il convertit en HTML toutes les constructions Org qui ne sont pas définies
dans la syntaxe Markdown, telles que les ta- bles.

Commandes d'exportation Markdown


C-c C-e m m (org-md-export-to-markdown)
Exportation vers un fichier texte avec la syntaxe Markdown. Pour
'monfichier.org', Org exporte vers 'monfichier.md', écrasé sans
avertissement.
C-c C-e m M (org-md-export-as-markdown)
Exporter vers une mémoire tampon temporaire. Ne crée pas de fichier.
C-c C-e m o
Exporter en tant que fichier texte avec la syntaxe Markdown, puis l'ouvrir.
Chapitre 13 : 297
L'exportation

Structure de l'en-tête et de la section


Basé sur org-md-headline-style, l'export Markdown peut générer des titres de type
atx et setext. atx limite les niveaux de titres à deux alors que setext limite les niveaux de
titres à six. Au-delà de ces limites, le système d'exportation convertit les titres en listes.
Pour fixer une limite à un niveau antérieur à la limite absolue (voir Section 13.2
[Paramètres d'exportation], page 148).

13.12 Exportation de texte OpenDocument


Le back-end d'exportation ODT gère la création du format OpenDocument Text (ODT).
Les documents créés par cet exportateur utilisent la spécification OpenDocument-v1.214 et
sont compatibles avec LibreOffice 3.4.

13.12.1 Conditions préalables à l'exportation ODT


Le back-end d'exportation ODT s'appuie sur le programme zip pour créer la sortie ODT
comprimée finale. Vérifiez que le programme 'zip' est disponible localement et
exécutable. Sans lui, l'exportation ne peut pas se terminer.

13.12.2 Commandes d'exportation ODT


C-c C-e o o (org-odt-export-to-odt)
Exporter en tant que fichier texte OpenDocument.
Si org-odt-preferred-output-format est spécifié, le back-end
d'exportation ODT convertit automatiquement le fichier exporté dans ce
format.
Pour "monfichier.org", Org exporte vers "monfichier.odt", en écrasant
sans avertissement. Le back-end d'exportation ODT n'exporte une région
que si une région était active.
Si la région sélectionnée est un arbre unique, le back-end d'exportation ODT
fait de la tête de l'arbre le titre du document. Par ailleurs, C-c @ sélectionne le
sous-arbre actuel. Si l'entrée de la tête de l'arbre a, ou hérite, d'une propriété
'EXPORT_FILE_NAME', le back-end d'exportation ODT l'utilise comme nom de
fichier.
C-c C-e o O
Exporter en tant que fichier OpenDocument Text et ouvrir le fichier résultant.
Si org-export-odt-preferred-output-format est spécifié, ouvrir le fichier
converti à la place. Voir [Exportation automatique vers d'autres formats], page
180.

13.12.3 Paramètres d'exportation spécifiques à l'ODT


Le back-end d'exportation ODT dispose de plusieurs mots-clés supplémentaires pour
personnaliser la sortie ODT. La définition de ces mots-clés fonctionne de la même
manière que les options générales (voir la section 13.2 [Paramètres d'exportation], page
148).

DESCRIPTION
Il s'agit de la description du document, que le back-end d'exportation ODT
insère en tant que métadonnées du document. Pour les descriptions
Chapitre 13 : 298
L'exportation

longues, utilisez plusieurs lignes, préfixées par "DESCRIPTION".

14
Voir Open Document Format for Office Applications (OpenDocument) Version 1.2.
Chapitre 13 : 299
L'exportation

KEYWORDS"
Les mots-clés du document. Le back-end d'exportation ODT insère la
(MOTS-
description ainsi que le nom de l'auteur, les mots-clés et les métadonnées
CLÉS) des fichiers connexes en tant que métadonnées dans le fichier de sortie.
Utilisez plusieurs "KEYWORDS" si nécessaire.
'ODT_STYLES_FILE'
Le back-end d'exportation ODT utilise par défaut le fichier org-odt-
styles. Voir Section 13.12.5 [Appliquer des styles personnalisés], page
180 pour plus de détails.
SUBTITLE' (SOUS-TITRES)
Le sous-titre du document.

13.12.4 Extension de l'exportation ODT


Le back-end d'exportation ODT peut produire des documents dans d'autres formats que
l'ODT à l'aide d'un processus de conversion ODT spécialisé. Son interface commune
fonctionne avec les convertisseurs les plus courants pour produire des formats tels que
"doc", ou pour convertir un document d'un format, par exemple "csv", vers un autre
format, par exemple "xls".
Personnaliser la variable org-odt-convert-process pour qu'elle pointe vers
'unoconv', qui est le convertisseur préféré de l'ODT. Les installations fonctionnelles de
LibreOffice devraient déjà avoir 'unoconv' installé. D'autres convertisseurs peuvent être
substitués ici. Voir [Configurer un convertisseur de documents], page 185.

Exportation automatique vers d'autres formats


Si le format ODT n'est qu'une étape intermédiaire vers d'autres formats, tels que "doc",
"docx", "rtf", ou "pdf", etc., étendez le back-end d'exportation ODT pour produire
directement ce format. Spécifiez le format final dans la variable org-odt-preferred-
output-format. C'est une façon d'étendre (voir Section 13.12.2 [Commandes
d'exportation ODT], page 179).

Conversion entre formats de documents


Le back-end d'exportation d'Org est conçu pour être interopérable avec un large éventail
de convertisseurs de formats de documents texte. Les convertisseurs de dernière
génération, tels que LibreOffice et Pandoc, peuvent gérer des centaines de formats à la fois.
Org fournit une interaction cohérente avec n'importe quel convertisseur installé. Voici
quelques commandes génériques :
M-x org-odt-convert
Convertit un document existant d'un format à un autre. Avec un ar- gument
préfixe, ouvre le fichier nouvellement produit.

13.12.5 Application de styles personnalisés


Le back-end d'exportation ODT est livré avec de nombreux styles OpenDocument (voir
[Travailler avec des fichiers de style OpenDocument], page 185). Pour étendre ou
personnaliser davantage ces feuilles de style intégrées, vous pouvez soit éditer les
feuilles de style directement, soit les générer à l'aide d'une application telle que
LibreOffice. L'exemple ci-dessous montre la création d'un style à l'aide de LibreOffice.

Appliquer des styles personnalisés : la méthode la plus simple


Chapitre 13 : 300
L'exportation

1. Créez un fichier "exemple.org" avec les paramètres indiqués ci-dessous et


exportez-le au format ODT.
Chapitre 13 : 301
L'exportation

#+OPTIONS : H:10 num:t


2. Ouvrez le fichier "example.odt" ci-dessus avec LibreOffice. Utilisez le styliste pour
localiser les styles cibles, qui ont généralement le préfixe "Org". Ouvrez-en un,
modifiez-le et enregistrez-le en tant que fichier OpenDocument Text (ODT) ou
OpenDocument Template (OTT).
3. Personnalisez la variable org-odt-styles-file et faites-la pointer vers le fichier
nouvellement créé. Pour des options de configuration supplémentaires, voir
[Remplacer les styles d'usine], page 186.
Pour appliquer un style ODT à un fichier particulier, utilisez le mot-clé
'ODT_STYLES_FILE' comme indiqué dans l'exemple ci-dessous :
#+ODT_STYLES_FILE : "/path/to/example.ott"
ou
#+ODT_STYLES_FILE : ("/path/to/file.ott" ("styles.xml" "image/hdr.png"))

Utilisation de styles et de modèles tiers


Le back-end d'exportation ODT s'appuie sur de nombreux modèles et noms de style.
L'utilisation de styles et de modèles tiers peut entraîner des incohérences. Les modèles
dérivés des modèles et styles ODT intégrés semblent poser moins de problèmes.

13.12.6 Liens dans l'exportation ODT


L'exportateur ODT crée des références croisées natives pour les liens internes. Il crée
des liens de type Internet pour tous les autres liens.
Un lien sans description et pointant vers une rubrique ordinaire, sans rubrique, est
remplacé par une référence croisée et le numéro de section de la rubrique.
Une référence de type "\ref{label}" à une image, un tableau, etc. est remplacée par
une référence croisée et le numéro de séquence de l'entité étiquetée. Voir section
13.12.10 [Étiquettes et légendes dans l'exportation ODT], page 184.

13.12.7 Tableaux dans l'exportation ODT


Le back-end d'exportation ODT gère les tableaux natifs en mode Org (voir chapitre 3
[Tableaux], page 17) et les tableaux 'table.el' simples. Les tableaux 'table.el'
complexes comportant des colonnes ou des lignes ne sont pas pris en charge. Ces
tableaux sont supprimés du document exporté.
Par défaut, le back-end d'exportation ODT exporte un tableau avec des cadres
supérieurs et inférieurs et des lignes de séparation entre les groupes de lignes et de
colonnes (voir Section 3.3 [Groupes de colonnes], page 22). Tous les tableaux sont
typographiés de manière à occuper la même largeur. Le back-end d'exportation ODT
honore tous les alignements de tableau et les largeurs relatives des colonnes (voir
Section 3.2 [Largeur et alignement des colonnes], page 21).
Notez que le back-end d'exportation ODT interprète les largeurs de colonnes comme
des ratios pondérés, la pondération par défaut étant de 1.
La spécification de la propriété ':rel-width' sur une ligne 'ATTR_ODT' permet de contrôler la largeur du
tableau.
Par exemple :
#+ATTR_ODT : :rel-width 50
| Zone/Mois |Jean |Feb |Mars |Somme
|---------------+-------+-------+-------+ ----------------|
| / |< | | |< |
Chapitre 13 : 302
L'exportation
| <l13>| <r5> | <r5> | <r5> | | <r6> |
Chapitre 13 : 303
L'exportation

| Amérique du | 1 | 21 | 926 | 948 |


Nord
| Moyen-Orient | 6 | 75 | 844 | 925 |
| Asie- | 9 | 27 | 790 | 826 |
Pacifique
|---------------+-------+-------+-------+ ----------------|
| Somme |16 |123 | 2560 | 2699 |
Lors de l'exportation, le tableau ci-dessus occupe 50 % de la largeur du texte.
L'exportateur dimensionne les colonnes dans le rapport : 13:5:5:5:6. La première colonne
est alignée à gauche et les autres colonnes sont alignées à droite. Des règles verticales
séparent l'en-tête et la dernière colonne. Des règles horizontales séparent l'en-tête et la
dernière ligne.
Pour une personnalisation encore plus poussée, créez des styles de table
personnalisés et associez-les à une table à l'aide du mot-clé 'ATTR_ODT'. Voir
[Personnalisation des tableaux dans l'exportation ODT], page 187.

13.12.8 Images dans l'exportation ODT

Intégrer des images


Le back-end d'exportation ODT traite les liens d'image dans les fichiers Org qui n'ont
pas de description, tels que ces liens '[[file:img.jpg]]' ou '[[./img.jpg]]', comme
des insertions d'images directes dans le résultat final. L'un ou l'autre de ces exemples
fonctionne :
[[file:img.png]]
[[./img.png]]

Intégrer des images cliquables


Pour les images cliquables, fournissez un lien dont la description est un autre lien vers
un fichier image. Par exemple, pour intégrer une image "org-mode-unicorn.png" qui,
lorsqu'elle est cliquée, renvoie au site web https://orgmode.org, procédez comme suit
[[https://orgmode.org][./org-mode-unicorn.png]]

Dimensionnement et mise à l'échelle des images intégrées


Contrôlez la taille et l'échelle des images intégrées à l'aide de l'attribut "ATTR_ODT".
Le back-end d'exportation ODT commence par déterminer la taille de l'image dans le
document final. Les dimensions de cette taille sont mesurées en centimètres. Le back-
end interroge ensuite le fichier image pour connaître ses dimensions mesurées en pixels.
Pour cette mesure, le back-end s'appuie sur le programme d'identification d'ImageMagick
ou sur l'API Emacs create-image et image-size. ImageMagick est le meilleur choix
pour les fichiers de grande taille ou les opérations par lots fréquentes. Le back-end
convertit ensuite les dimensions des pixels en utilisant org-odt-pixels-per-inch en 72 dpi ou
96 dpi. La valeur par défaut est en pixels d'affichage par pouce, mais elle peut être
modifiée pour obtenir de meilleurs résultats en fonction des capacités du périphérique
de sortie. Voici quelques opérations courantes de mise à l'échelle des images :
Dimensionner explicitement l'image
Pour intégrer "img.png" dans une image de 10 cm x 10 cm, procédez comme suit :
#+ATTR_ODT : :width 10 :height 10
[[./img.png]]
Chapitre 13 : 304
L'exportation
Mise à l'échelle de l'image
Pour intégrer "img.png" à la moitié de sa taille, procédez comme suit :
Chapitre 13 : 305
L'exportation

#+ATTR_ODT : :scale
0.5 [[./img.png]]
Mettre à l'échelle l'image à une largeur spécifique
Pour intégrer "img.png" avec une largeur de 10 cm tout en conservant le
rapport hauteur/largeur d'origine, procédez comme suit :
#+ATTR_ODT : :width
10 [[./img.png]]
Mettre à l'échelle l'image à une hauteur spécifique
Pour intégrer "img.png" avec une hauteur de 10 cm tout en conservant le
rapport hauteur/largeur d'origine, procédez comme suit :
#+ATTR_ODT : :height
10 [[./img.png]]

Ancrage des images


Le back-end d'exportation ODT peut ancrer les images à "as-char", "paragraph" ou
"page". Définissez l'ancrage préféré en utilisant la propriété ':anchor' de la ligne
'ATTR_ODT'.
Pour créer une image ancrée à une page :
#+ATTR_ODT : :anchor page
[[./img.png]]
13.12.9 Formatage mathématique dans l'exportation ODT
L'exportateur ODT dispose d'un support spécial pour traiter les mathématiques.

13.12.9.1 Extraits mathématiques L A T E X


Les extraits mathématiques LATEX (voir section 12.5.1 [Fragments LATEX], page 139)
peuvent être incorporés dans le document ODT de l'une des manières suivantes :
MathMLA Ajouter cette ligne au fichier Org. Cette option est activée pour chaque fichier.
#+OPTIONS : tex:t
Avec cette option, les fragments LATEX sont d'abord convertis en fragments
MathML à l'aide d'un programme externe de conversion de LATEX en MathML.
Les fragments MathML résultants sont ensuite incorporés dans le document
exporté sous la forme d'une formule OpenDocument.
Vous pouvez spécifier le convertisseur LATEX-MathML en personnalisant
les variables org-latex-to-mathml-convert-command et org-latex-to-
mathml-jar- file.
Si vous préférez utiliser MathToWeb15 comme convertisseur, vous pouvez
configurer les variables ci-dessus comme indiqué ci-dessous.
(setq org-latex-to-mathml-convert-command
"java -jar %j -unicode -force -df %o
%I" org-latex-to-mathml-jar-file
"/path/to/mathtoweb.jar")
ou d'utiliser LATEXML16 à la place,
15
Voir MathToWeb.
16
Voir https://dlmf.nist.gov/LaTeXML/.
Chapitre 13 : 306
L'exportation

(setq org-latex-to-mathml-convert-command
"latexmlmath \"%i\" --presentationmathml=%o")
Pour vérifier rapidement la fiabilité du convertisseur LATEX-MathML, utilisez
les commandes suivantes :
M-x org-export-as-odf
Convertit un extrait mathématique LATEX en un fichier
OpenDocument formula ('.odf').
M-x org-export-as-odf-and-open
Convertir un extrait mathématique LATEX en un fichier de
formule OpenDocument ('.odf') et ouvrir le fichier de formule
avec l'application enregistrée dans le système.
Images PNG
Ajouter cette ligne au fichier Org. Cette option est activée pour chaque fichier.
#+OPTIONS : tex:dvipng
#+OPTIONS : tex:dvisvgm
ou
#+OPTIONS : tex:imagemagick
Avec cette option, les fragments LATEX sont transformés en images PNG ou
SVG et les images résultantes sont incorporées dans le document exporté.
Cette méthode nécessite les programmes dvipng, dvisvgm ou ImageMagick.

13.12.9.2 Fichiers de formules MathML et OpenDocument


Lorsque l'incorporation d'extraits mathématiques LATEX dans des documents ODT n'est
pas fiable, il reste une autre option à essayer. Incorporez une équation en créant un lien
vers sa source MathML ('.mml') ou son fichier OpenDocument formula ('.odf'), comme
indiqué ci-dessous :
[[./equation.mml]]
ou
[[./equation.odf]]

13.12.10 Étiquettes et légendes dans l'exportation ODT


Le format ODT permet d'étiqueter et de légender les objets en fonction de leur type. Les
images en ligne, les tableaux, les fragments LATEX et les formules mathématiques sont
numérotés et légendés séparément. Chaque objet reçoit également un numéro de
séquence unique basé sur son ordre de première apparition dans le fichier Org. Chaque
catégorie a sa propre séquence. Une légende est simplement une étiquette appliquée à
ces objets.
#+CAPTION : Courbe de
Bell #+NAME :
fig:SED-HR4049
[[./img/a.png]]
Lorsqu'il est rendu, il peut apparaître comme suit dans le document exporté :
Figure 2 : Courbe de Bell
Pour modifier la catégorie de la légende, personnalisez l'option org-odt- category-
map-alist. Par exemple, pour baliser les images intégrées avec la chaîne "Illustration"
au lieu de la chaîne par défaut "Figure", utilisez le paramètre suivant :
Chapitre 13 : 307
L'exportation

(setq org-odt-category-map-alist
'((" Figure " "Illustration" "valeur" "Figure" org-odt--enumerable-image-p)))
Avec la modification ci-dessus, l'exemple précédent devient :
Illustration 2 : Courbe de Bell

13.12.11 Exemples littéraires dans l'exportation ODT


Le back-end d'exportation ODT prend en charge les exemples littéraux (voir Section
12.6 [Examens littéraux], page 141) avec une fontification complète. En interne, le back-
end d'exportation ODT s'appuie sur 'htmlfontify.el' pour générer les définitions de
style nécessaires aux listes fantaisistes. Les styles générés automatiquement ont le
préfixe 'OrgSrc' et héritent des couleurs des faces utilisées par la bibliothèque Emacs
Font Lock pour ce langage source.
Pour les styles de fontification personnalisés, personnalisez l'option org-odt-create-
custom-styles-for- srcblocks.
Pour désactiver la fontification des exemples littéraux, personnalisez l'option org-odt-fontify-
srcblocks
option.

13.12.12 Sujets avancés dans l'exportation ODT


Le back-end d'exportation ODT possède de nombreuses fonctionnalités utiles aux
utilisateurs expérimentés et aux utilisateurs fréquents des formats ODT.

Configuration d'un convertisseur de documents


Le back-end d'exportation ODT fonctionne avec les convertisseurs les plus courants
avec peu ou pas de configuration supplémentaire. Voir Section 13.12.4 [Extension de
l'exportation ODT], page 180. Ce qui suit concerne les convertisseurs non pris en charge
ou la modification des paramètres par défaut existants.
Enregistrer le convertisseur
Ajoutez le nom du convertisseur à la variable org-odt-convert-processes.
Notez qu'elle requiert également la façon dont le convertisseur est invoqué
sur la ligne de commande. Voir la docstring de la variable pour plus de
détails.
Configurer ses capacités
Spécifiez les formats que le convertisseur peut gérer en personnalisant la
variable org-odt-convert-capabilities. Utilisez les valeurs par défaut de
cette variable pour configurer le nouveau convertisseur. Voir également sa
docstring pour plus de détails.
Choisir le convertisseur
Sélectionnez le convertisseur nouvellement ajouté en tant que convertisseur préféré en
personnalisant l'option.
org-odt-convert-process.

Travailler avec des fichiers de style OpenDocument


Cette section explore les aspects internes de l'exportateur ODT, les moyens par
lesquels il produit des documents stylisés, l'utilisation des styles automatiques et
personnalisés d'OpenDocument.
Chapitre 13 : 308
L'exportation
L'exportateur ODT s'appuie sur deux fichiers pour générer sa sortie. Ces fichiers sont
fournis avec la distribution dans le répertoire indiqué par la variable org-odt-styles-
dir. Ces deux fichiers sont les suivants :
Chapitre 13 : 309
L'exportation

'OrgOdtStyles.xml' (en anglais)


Ce fichier contribue au fichier "styles.xml" du document ODT final. Ce
fichier est modifié pour les raisons suivantes :
1. Pour contrôler la numérotation des contours en fonction des paramètres de l'utilisateur ;
2. Ajouter les styles générés par 'htmlfontify.el' pour la fontification des
blocs de code.
OrgOdtContentTemplate.xml
Ce fichier con tribue au fichier 'content.xml' du document ODT final. Le
contenu de l'aperçu de l'org est inséré entre les éléments "<office:text>"
. . . </office:text>" de ce fichier.
Outre le fait qu'il sert de fichier modèle pour le fichier final "content.xml", ce
fichier remplit les fonctions suivantes :
1. Il contient des styles automatiques pour le formatage des tableaux qui
sont référencés par l'exportateur ;
2. Il contient des éléments "<text:sequence-decl>" . . .
</text:sequence-decl>' qui contrôlent la numérotation des tableaux,
des images, des équations et d'autres entités similaires .
Les deux variables suivantes contrôlent l'endroit où l'exportateur ODT récupère les
styles personnalisés et les fichiers de modèles de contenu. Personnalisez ces variables
pour remplacer les styles d'usine utilisés par l'exportateur.
org-odt-styles-file
Le back-end d'exportation ODT utilise le fichier indiqué par cette
variable, par exemple "styles.xml", pour la sortie finale. Elle peut
prendre l'une des valeurs suivantes :
'FILE.xml'
Utilisez ce fichier au lieu du fichier par défaut "styles.xml
'FICHIER.odt' ou 'FICHIER.ott'.
Utiliser le fichier 'styles.xml' contenu dans le fichier
OpenDocument Text ou Template spécifié
'FICHIER.odt' ou 'FICHIER.ott' et un sous-ensemble de fichiers inclus
Utiliser le fichier 'styles.xml' contenu dans le fichier
OpenDocument Text ou Template spécifié. En outre, extraire les
fichiers membres spécifiés et les incorporer dans le document
ODT final.
Utilisez cette option si le fichier "styles.xml" fait référence à des
fichiers supplémentaires tels que des images d'en-tête et de pied
de page.
nil Utiliser le fichier par défaut "styles.xml".
org-odt-content-template-file
Utilisez cette variable pour spécifier le fichier vierge 'content.xml' utilisé dans la sortie finale.

Créer des styles uniques


Le back-end d'exportation ODT peut lire le XML OpenDocument brut intégré à partir du
fichier Org. Ce formatage direct est utile pour les cas uniques.
Chapitre 13 : 310
L'exportation

Intégrer des balises ODT dans un texte normal


Pour le balisage en ligne, la syntaxe OpenDocument est entourée de '@@odt
:...@@'. Par exemple, pour mettre en évidence une région de texte,
procédez comme suit :
@@odt:<text:span text:style-name="Highlight">Il s'agit d'un texte mis en
évidence</text:span>@@. Mais il s'agit d'un texte normal.
Conseil : pour voir l'exemple ci-dessus en action, modifiez le fichier
"styles.xml" (voir [Styles d'usine], page 186) et ajoutez un style de mise en
évidence personnalisé comme indiqué ci-dessous :
<style:style style:name="Highlight" style:family="text">
<style:text-properties fo:background-color="#ff0000"/>
</style:style>
Intégrer un document OpenDocument XML d'une ligne
Le back-end d'exportation ODT peut lire les options de type "one-liner" avec
"#+ODT :" dans le fichier Org. Par exemple, pour forcer un saut de page :
#+ODT : <text:p text:style-name="PageBreak"/>
Conseil : pour voir l'exemple ci-dessus en action, modifiez votre fichier
"styles.xml" (voir [Styles d'usine], page 186) et ajoutez un style "PageBreak"
personnalisé comme indiqué ci-dessous.
<style:style style:name="PageBreak" style:family="paragraph"
style:parent-style-name="Text_20_body">
<style:paragraph-properties fo:break-before="page"/>
</style:style>
Intégrer un bloc d'OpenDocument XML
Le back-end d'exportation ODT peut également lire les blocs d'exportation
ODT pour OpenDocu- ment XML. Ces blocs utilisent les constructions
'#+BEGIN_EXPORT odt' . . . #+END_EXPORT'.
Par exemple, pour créer un paragraphe unique utilisant du texte en gras, procédez comme suit :
#+BEGIN_EXPORT odt
<text:p text:style-name="Text_20_body_20_bold">
Ce paragraphe est spécialement formaté et utilise du texte en gras.
</text:p>
#+END_EXPORT

Personnalisation des tableaux dans l'exportation ODT


Remplacer le format de tableau par défaut en spécifiant un style de tableau personnalisé
avec la ligne '#+ATTR_ODT'. Pour une discussion sur le formatage par défaut des
tableaux, voir la section 13.12.7 [Tableaux dans l'exportation ODT], page 181.
Cette fonctionnalité est très proche de la façon dont les modèles de tableaux sont
définis dans la spécification OpenDocument- v1.217 .
Pour un aperçu rapide de cette fonctionnalité, installez les paramètres ci-dessous et
exportez le tableau qui suit :
(setq org-export-odt-table-styles
(append org-export-odt-table-styles
'(("TableWithHeaderRowAndColumn" "Custom"
17
Spécification OpenDocument-v1.2
Chapitre 13 : 311
L'exportation

((use-first-row-styles . t)
(use-first-column-styles . t)))
("TableWithFirstRowandLastRow" "Custom"
((use-first-row-styles . t)
(use-last-row-styles . t))))))
#+ATTR_ODT : :style TableWithHeaderRowAndColumn
| Nom, prénom, téléphone, âge, etc.
| Peter | 1234 | 17 |
| Anna | 4321 | 25 |
L'exemple ci-dessus utilise le modèle "Custom" et installe deux styles de tableau
"TableWithHeaderRowAndColumn" et "TableWithFirstRowandLastRow". Important : les
styles OpenDocument nécessaires pour produire le modèle ci-dessus ont été prédéfinis.
Ils sont disponibles dans la section intitulée "Custom Table Template" dans
"OrgOdtContentTemplate.xml" (voir [Factory styles], page 186). Pour ajouter de
nouveaux modèles, définissez de nouveaux styles à cet endroit.
Pour utiliser cette fonction, procédez comme suit :
1. Créer un modèle de tableau18 .
Un modèle de tableau est un ensemble de styles de "cellule de tableau" et de
"paragraphe" pour chacune des catégories de cellules de tableau suivantes :
• Corps
• Première colonne
• Dernière colonne
• Première ligne
• Dernière ligne
• Rangée paire
• Rangée impaire
• Colonne paire
• Colonne impaire
Les noms des styles ci-dessus doivent être choisis en fonction du nom du modèle de
tableau, selon une convention bien définie.
La convention d'appellation est mieux illustrée par un exemple. Pour un modèle de
tableau portant le nom "Personnalisé", les noms de style nécessaires sont
énumérés dans le tableau suivant.

Type de Style de cellule Style de paragraphe


cellule
Corps 'CustomTableCell' (cellule de Paragraphe de tableau
tableau personnalisée) personnalisé
Première 'CustomFirstColumnTableCell' Paragraphe de la première
colonne (Première colonne de tableau colonne du tableau personnalisé
personnalisée)
Dernière DernièreColonneTableCell' Paragraphe de la dernière
colonne (CustomLastColumnTableCell) colonne du tableau personnalisé
Première CustomFirstRowTableCell' Paragraphe de la première ligne
ligne (cellule de la première du tableau personnalisé
ligne)
Dernière ligne CustomLastRowTableCell' Paragraphe de la dernière ligne
(cellule de la dernière du tableau personnalisé
Chapitre 13 : 312
L'exportation ligne du tableau)
Rangée paire CustomEvenRowTableCell' Paragraphe de tableau à lignes
(cellule de tableau à lignes paires personnalisées
paires personnalisées)
Rangée CustomOddRowTableCell' Paragraphe du tableau de bord
impaire (Cellule de tableau personnalisé
personnalisée)
18
Voir l'élément "<table:table-template>" de la spécification OpenDocument-v1.2.
Chapitre 13 : 313
L'exportation

Colonne paire "CustomEvenColumnTableCell" (personnalisée) Colonne paire


"CustomEvenColumnTableParagraph" Colonne impaire
"CustomOddColumnTableCell CustomOddColumnTableParagraph'
Pour créer un modèle de tableau portant le nom "Custom", définissez les styles ci-
dessus dans le fichier
<office:automatic-styles>' . . . '</office:automatic-styles>' du fichier de
modèle de contenu (voir [Styles d'usine], page 186).
2. Définir un style de tableau19 .
Pour définir un style de table, créez une entrée pour le style dans la variable org-
odt-table- styles et spécifiez ce qui suit :
• le nom du modèle de tableau créé à l'étape (1),
• l'ensemble des styles de cellules de ce modèle qui doivent être activés.
Par exemple, l'entrée ci-dessous définit deux styles de tableau différents :
"TableWithHeaderRowAndColumn" et "TableWithFirstRowandLastRow", basés sur le même
modèle "Custom" .
produisent l'effet escompté en activant de manière sélective les différents styles de
cellules de ce modèle.
(setq org-export-odt-table-styles
(append org-export-odt-table-styles
'(("TableWithHeaderRowAndColumn" "Custom"
((use-first-row-styles . t)
(use-first-column-styles . t))
("TableWithFirstRowandLastRow" "Custom"
((use-first-row-styles . t))
(use-last-row-styles . t))))))
3. Associe une table au style de table.
Pour ce faire, spécifiez le style de table créé à l'étape (2) dans la ligne "ATTR_ODT",
comme indiqué ci-dessous.
#+ATTR_ODT : :style TableWithHeaderRowAndColumn
| Nom, prénom, téléphone, âge, etc.
| Peter | 1234 | 17 |
| Anna | 4321 | 25 |

Valider OpenDocument XML


Il arrive que les fichiers au format ODT ne s'ouvrent pas en raison d'une corruption du
fichier '.odt'. Pour vérifier si un tel fichier est corrompu, il faut le valider par rapport au
schéma syntaxique OpenDocument Relax NG Compact (RNC). Mais d'abord, les
fichiers '.odt' doivent être décompressés à l'aide de 'zip'. Notez que les fichiers '.odt'
sont des archives ZIP : Section "Archives de fichiers" dans emacs. Le contenu des
fichiers ODT est en XML. Pour une aide générale sur la validation et l'édition sensible au
schéma des fichiers XML : Section "Introduction" en mode nxml.
Personnalisez org-odt-schema-dir pour qu'il pointe vers un répertoire contenant
les fichiers OpenDocument RNC et les règles de localisation des schémas nécessaires.
Le back-end d'exportation ODT se charge de mettre à jour les fichiers rng-schema-
locating-files.
19
Voir les attributs "table:template-name", "table:use-first-row-styles", "table:use-last-row-styles",
"table:use-first-column-styles", "table:use-last-column-styles", "table:use-banding-rows-styles"
et "table:use-banding-column-styles" de l'élément "<table:table>" dans la spécification
Chapitre 13 : 314
L'exportation
OpenDocument-v1.2.
Chapitre 13 : 315
L'exportation

13.13 Org Export


Le back-end d'exportation org crée une version normalisée du document Org dans le
tampon actuel. L'exportateur évalue le code Babel (voir Section 16.5 [Évaluation des
blocs de code], page 228) et supprime le contenu spécifique aux autres backends.

Commandes d'exportation Org


C-c C-e O o (org-org-export-to-org)
Exporter sous forme de fichier Org avec une extension '.org'. Pour
'monfichier.org', Org exporte vers 'monfichier.org.org', en l'écrasant
sans avertissement.
C-c C-e O v (~~)
Exporter vers un fichier Org, puis l'ouvrir.

13.14 Exportation de Texinfo


13.14.1 Commandes d'exportation de Texinfo
C-c C-e i t (org-texinfo-export-to-texinfo)
Exportation sous forme de fichier Texinfo avec l'extension '.texi'. Pour
'monfichier.org', Org exporte vers 'monfichier.texi', en l'écrasant sans
avertissement.
C-c C-e i i (org-texinfo-export-to-info)
Exportez d'abord au format Texinfo, puis traitez-le pour obtenir un fichier
Info. Pour générer d'autres formats, tels que DocBook, personnalisez la
variable de traitement org-texinfo-info-.

13.14.2 Paramètres d'exportation spécifiques à Texinfo


Le back-end d'exportation de Texinfo dispose de plusieurs mots-clés supplémentaires
pour personnaliser la sortie de Texinfo. La définition de ces mots-clés fonctionne de la
même manière que les options générales (voir Section 13.2 [Paramètres d'exportation],
page 148).
SUBTITLE' (SOUS-TITRES)
Le sous-titre du document.
SUBAUTHOR
Autres auteurs du document.
NOM DU FICHIER 'TEXINFO_FILENAME' (NOM DU FICHIER)
Le nom du fichier Texinfo.
'TEXINFO_CLASS' (CLASSE DE TEXTE)
La classe de document par défaut (org-texinfo-default-class), qui doit
être membre de org-texinfo-classes.
'TEXINFO_HEADER'
Lignes arbitraires insérées à la fin de l'en-tête.
'TEXINFO_POST_HEADER' (EN-TÊTE DE TEXTE)
Lignes arbitraires insérées après la fin de l'en-tête.
'CATÉGORIE_DIR_TEXINFO_'
La catégorie de répertoire du document.
Chapitre 13 : 316
L'exportation

'TEXINFO_DIR_TITLE' (TITRE DU RÉPERTOIRE)


Le titre du répertoire du document.
'TEXINFO_DIR_DESC' (EN ANGLAIS)
La description du répertoire du document.
'TEXINFO_PRINTED_TITLE' (TITRE IMPRIMÉ)
Le titre imprimé du document.

13.14.3 En-tête du fichier Texinfo


Après avoir créé l'en-tête d'un fichier Texinfo, le back-end Texinfo génère
automatiquement un nom et un chemin d'accès pour le fichier Info. Pour remplacer cette
valeur par défaut par un chemin et un nom plus sensés, spécifiez le mot-clé
'TEXINFO_FILENAME'.
En plus du nom de fichier de la sortie, l'en-tête Texinfo contient également des détails
sur la langue (voir Section 13.2 [Paramètres d'exportation], page 148) et le système
d'encodage tel que défini dans la variable org-texinfo- coding-system. Insérez les
mots-clés 'TEXINFO_HEADER' pour chaque commande supplémentaire dans l'en-tête, par
exemple :
#+TEXINFO_HEADER : @synindex
Au lieu d'installer à plusieurs reprises le même ensemble de commandes, définissez une
fois une classe dans org-texinfo- classes, puis activez-la dans le document en lui
attribuant le mot-clé 'TEXINFO_CLASS'.

13.14.4 Page de titre et de copyright de Texinfo


Le modèle par défaut pour la sortie sur papier comporte une page de titre avec les mots-
clés 'TITLE' et 'AUTHOR' (voir Section 13.2 [Paramètres d'exportation], page 148). Pour
remplacer le titre normal par quelque chose de différent pour la version imprimée, utilisez
les mots-clés 'TEXINFO_PRINTED_TITLE' et 'SUBTITLE'. Ces deux mots-clés requièrent du
code Texinfo brut pour la définition de leurs valeurs.
Si une ligne "AUTHOR" ne suffit pas, ajoutez plusieurs mots-clés "SUBAUTHOR". Ils
doivent être définis dans le code Texinfo brut.
#+AUTHOR : Jane
Smith #+SUBAUTHOR :
John Doe
#+TEXINFO_PRINTED_TITLE : Ce long titre@@inlinefmt{tex,@*} est cassé dans @TeX{}
Le matériel de copie est défini dans une ligne de titre dédiée avec une propriété
"COPYING" non nulle. Le back-end insère le contenu dans une commande "@copying"
au début du document. Le titre lui-même n'apparaît pas dans la structure du document.
Les informations relatives aux droits d'auteur sont imprimées au verso de la page de titre.
* Legalese
:PROPRIÉTÉS :
:COPYING : t
:FIN :

Ceci est un court exemple d'un fichier Texinfo complet, version

1.0. Copyright \copy 2016 Free Software Foundation, Inc.


Chapitre 13 : 317
L'exportation

13.14.5 Fichier du répertoire d'informations


Le résultat final du processus d'exportation de Texinfo est la création d'un fichier Info.
Les métadonnées de ce fichier Info comportent des variables pour la catégorie, le titre et
la description : les mots-clés 'TEXINFO_DIR_CATEGORY', 'TEXINFO_DIR_TITLE' et
'TEXINFO_DIR_DESC' qui déterminent où se situe le fichier dans la hiérarchie Info.
Voici un exemple qui écrit dans le fichier du répertoire Info :
#+TEXINFO_DIR_CATEGORY : Emacs
#+TEXINFO_DIR_TITLE : Mode Org : (org)
#+TEXINFO_DIR_DESC : Gestion et organisation de notes basées sur les contours

13.14.6 Titres et structure des sections


Le back-end d'exportation Texinfo utilise un schéma prédéfini pour convertir les titres
d'Org en commandes de structuration Texinfo équivalentes. Un schéma de ce type
convertit les titres de premier niveau en chapitres numérotés étiquetés @chapter et les
titres de niveau inférieur en chapitres non numérotés étiquetés @unnumbered. Pour remplacer
ces mappages et introduire @part ou d'autres commandes de structuration de Texinfo,
définissez une nouvelle classe dans org-texinfo-classes. Activez la nouvelle classe
avec le mot-clé 'TEXINFO_CLASS'. Si aucune nouvelle classe n'est définie et activée, le
back-end d'exportation de Texinfo utilise par défaut la classe org-texinfo-default.
Si le niveau d'un titre d'Org n'est pas associé à une commande de structuration
Texinfo, ou s'il est inférieur à un certain seuil (voir Section 13.2 [Paramètres
d'exportation], page 148), le back-end d'exportation Texinfo en fait un élément de liste.
Le back-end d'exportation Texinfo transforme en annexe tout titre dont la propriété
'APPENDIX' n'est pas nulle. Cette opération est indépendante du niveau du titre Org ou
du mot-clé 'TEXINFO_CLASS'.
Le back-end d'exportation Texinfo crée une entrée de menu après le titre Org pour
chaque structure de section régulière. Pour remplacer cette entrée par une entrée de
menu plus courte, utilisez la propriété 'ALT_TITLE' (voir Section 13.3 [Table des
matières], page 151). Les entrées de menu Texinfo ont également la possibilité d'utiliser
une propriété "DESCRIPTION" plus longue. Voici un exemple qui utilise ces deux propriétés
pour remplacer l'entrée de menu par défaut :
* Contrôle de l'affichage de l'écran
:PROPRIÉTÉS :
:ALT_TITLE : Affichage
DESCRIPTION : Contrôle de l'affichage de l'écran
:FIN :
Le texte précédant le premier titre appartient au nœud supérieur, c'est-à-dire au nœud
dans lequel un lecteur entre dans un manuel d'information. En tant que tel, il est censé
ne pas apparaître dans la sortie imprimée générée à partir du fichier '.texi'. Voir la
section "Le nœud supérieur" dans texinfo, pour plus d'informations.

13.14.7 Indices
Le back-end d'exportation Texinfo reconnaît ces mots-clés d'indexation s'ils sont utilisés
dans le fichier Org : 'CINDEX', 'FINDEX', 'KINDEX', 'PINDEX', 'TINDEX' et 'VINDEX'. Écrivez
leur valeur sous forme de code Texinfo textuel ; en particulier, les caractères '{', '}' et '@'
doivent être échappés par '@' s'ils n'appartiennent pas à une commande Texinfo.
#+CINDEX : Définition des entrées d'indexation
Chapitre 13 : 318
L'exportation

Pour que le back-end génère une entrée d'index pour un titre, définissez la propriété
'INDEX' sur 'cp' ou 'vr'. Ces abréviations proviennent de Texinfo et signifient "concept
index" et "variable index". Le manuel Texinfo contient des abréviations pour tous les
autres types d'index. Le back-end exporte le titre sous la forme d'une commande de
chapitre ou de section non numérotée, puis insère l'index après son contenu.
* Index des concepts
:PROPRIÉTÉS :
:INDEX : cp
:FIN :

13.14.8 Citation du code Texinfo


Utilisez l'une des trois méthodes suivantes pour insérer ou échapper du code Texinfo brut :
Richard @@texinfo:@sc{@@Stallman@@texinfo:}@@ commence' GNU.

#+TEXINFO : @need800
Ce paragraphe est précédé par...

#+BEGIN_EXPORT texinfo
@auindex Johnson, Mark
@auindex Lakoff,
George
#+END_EXPORT

13.14.9 Listes simples dans l'exportation Texinfo


Le back-end d'exportation Texinfo convertit les listes ordonnées et non ordonnées dans
le fichier Org en utilisant la commande par défaut '@itemize'.
Les listes ordonnées sont numérotées lorsqu'elles sont exportées au format Texinfo.
Cette numérotation obéit à tout compteur (voir section 2.6 [Listes simples], page 12)
dans le premier élément de la liste. L'attribut ':enum' permet également de commencer la
liste à un numéro spécifique, ou de passer à une liste lettrée, comme illustré ici :
#+ATTR_TEXINFO : :enum A
1. Alpha
2. Bravo
3. Charlie
Le back-end d'exportation Texinfo convertit par défaut les listes de descriptions dans
le fichier Org en utilisant la commande par défaut '@table', ce qui donne un tableau à
deux colonnes. Pour modifier ce comportement, définissez l'attribut ':table-type' avec
la valeur 'ftable' ou 'vtable'. Pour plus d'informations, voir la section "Tableaux à deux
colonnes" dans texinfo.
Par défaut, le back-end d'exportation de Texinfo applique également un surlignage
de texte basé sur les dé- fautes stockées dans org-texinfo-table-default-markup.
Pour remplacer la commande de mise en évidence par défaut, spécifiez-en une autre
avec l'attribut ':indic'.
La syntaxe Org est limitée à une entrée par élément de liste. Néanmoins, le back-end
d'exportation Texinfo peut diviser cette entrée en fonction du texte fourni par l'attribut
':sep'. Chaque partie devient alors une nouvelle entrée dans la première colonne du
tableau.
L'exemple suivant illustre tous les attributs ci-dessus :
Chapitre 13 : 319
L'exportation

#+ATTR_TEXINFO : :table-type vtable :sep , :indic asis


- foo, bar : : Il s'agit du texte commun aux variables foo et bar.
devient
@vtable @asis
@item foo
@itemx bar
Voici le texte commun pour les variables foo et
bar. @end table
L'attribut ':compact' est une alternative à l'attribut ':sep', qui permet d'écrire chaque
entrée sur sa propre ligne. Si cet attribut est non nul et qu'un élément d'une liste de
description n'a pas de corps mais est suivi d'un autre élément, le deuxième élément est
transcodé en "@itemx". Cet exemple est transcodé dans la même sortie que ci-dessus.
#+ATTR_TEXINFO : :table-type vtable :indic asis :compact t
- foo : :
- bar : :
Il s'agit du texte commun aux variables foo et bar.
La prise en charge de cette syntaxe compacte peut également être activée pour
toutes les listes d'un fichier à l'aide de l'option d'exportation "compact-itemx", ou
globalement à l'aide de la variable org-texinfo-compact- itemx.
Le back-end d'exportation de Texinfo supporte également deux approches pour
écrire les commandes de définition de Texinfo (voir la section "Commandes de définition"
dans texinfo). L'une d'entre elles utilise des listes de description et est décrite ci-dessous,
l'autre s'appuie sur des blocs spéciaux (voir Section 13.14.14 [Blocs spéciaux dans
l'exportation de Texinfo], page 196).
Les éléments d'une liste de description dans un fichier Org qui commencent par
"Function :" ou certains autres préfixes sont convertis à l'aide de commandes de
définition Texinfo. Cela fonctionne même si d'autres éléments de la même liste n'ont pas
ce préfixe ; si nécessaire, une seule liste de description est convertie en utilisant
plusieurs tables (telles que '@vtable') et commandes de définition (telles que '@defun').
- Fonction : org-texinfo-drawer drawer contents info
: : Transcoder un élément DRAWER d'Org en Texinfo.
devient
@defun org-texinfo-drawer drawer contents info :
: Transcoder un élément DRAWER de Org à
Texinfo.
@end defun
Les préfixes reconnus sont "Commande :", "Fonction :", "Macro :", "Forme
spéciale :", "Variable :" et "Option utilisateur :". Il s'agit des mêmes préfixes
que ceux qui apparaissent dans le fichier Info pour les commandes de définition
respectives. Par exemple, un élément "Function :" dans le fichier Org est converti en
une commande "@defun" dans le fichier Texinfo, qui à son tour est convertie en une
définition préfixée par "-- Function :" dans le fichier Info.
Le préfixe "Key :" est également reconnu comme un cas particulier. Il n'existe pas de
commande de définition Texinfo pour les liaisons par clé et la sortie dans les fichiers Info
ne comporte pas non plus le préfixe "Key :". Néanmoins, ce cas particulier est pris en
charge parce qu'il constitue une abréviation pratique, comme illustré ici :
- Clé : C-c C-c (faire quelque
chose) : : Cette commande
Chapitre 13 : 320
L'exportation
fait quelque chose.
Chapitre 13 : 321
L'exportation

- Option utilisateur : faire quelque chose d'une manière ou d'une autre : :


Cette option contrôle la manière dont ~fairequelquechose~ agit.
devient
@table @asis
@item @kbd{C-c C-c} (@code{fairequelquechose})
@kindex C-c C-c
@findex faire quelque chose
Cette commande fait quelque
chose. Fin du tableau

@defopt faire quelque chose d'une manière ou d'une autre


Cette option contrôle la manière dont @code{fairequelquechose} agit.
@end defopt
La commande entre parenthèses, comme ci-dessus, est facultative.
13.14.10 Tableaux dans l'exportation Texinfo
Lors de l'exportation de tableaux, le back-end d'exportation de Texinfo utilise la plus
grande largeur de cellule dans chaque colonne. Pour ne pas tenir compte de cela et
spécifier des fractions de longueur de ligne, utilisez l'attribut ':columns'. Voir l'exemple
ci-dessous.
#+ATTR_TEXINFO : :columns .5 .5
| une cellule | une autre cellule |

13.14.11 Images dans l'exportation Texinfo


Insérez un lien vers l'image dans le fichier Org, et le back-end d'exportation de Texinfo
insère l'image. Ces liens doivent avoir les extensions d'image habituelles et ne doivent
pas être décrits. Pour mettre l'image à l'échelle, utilisez les attributs ':width' et
':height'. Pour un texte alternatif, utilisez ':alt' et spécifiez le texte à l'aide du code
Texinfo, comme indiqué dans l'exemple :
#+ATTR_TEXINFO : :width 1in :alt Alternate
@i{text} [[ridt.pdf]]

13.14.12 Citations dans l'exportation Texinfo


Vous pouvez écrire le texte d'une citation dans un bloc de citation (voir Section 12.1
[Paragraphes], page 137). Vous pouvez également mettre en évidence du texte au
début de la citation à l'aide de l'attribut ':tag'.
#+ATTR_TEXINFO : :tag
Avertissement #+BEGIN_QUOTE
Frapper votre pouce avec un marteau peut provoquer une douleur et une
gêne importantes. #+END_QUOTE
Pour spécifier l'auteur de la citation, utilisez l'attribut ':author'.
#+ATTR_TEXINFO : :auteur King
Arthur #+BEGIN_QUOTE
La Dame du Lac, le bras revêtu de la samite la plus pure et la plus
chatoyante, a brandi Excalibur du sein de l'eau, signifiant par la
providence divine que moi, Arthur, je devais porter Excalibur. C'est
pourquoi je suis votre roi.
Chapitre 13 : 322
L'exportation

#+END_QUOTE

13.14.13 Key bindings dans l'exportation de Texinfo


Org ne fournit pas de balisage pour les liaisons de touches correspondant aux
commandes @kbd et @key de Texinfo. Une façon de résoudre ce problème est de
revenir à la syntaxe du code. '~C-x SPC~', par exemple, est transcodé en @code{C-x
SPC}.
Une meilleure approche consiste à définir et à utiliser une macro Org nommée kbd.
Pour faciliter cette tâche, la fonction org-texinfo-kbd-macro est fournie et doit être
utilisée comme suit :
#+macro : kbd (eval (org-texinfo-kbd-macro $1))

Type {{kbd(C-c SPC)}}}.


qui devient
Tapez @kbd{C-c @key{SPC}}.

13.14.14 Blocs spéciaux dans l'exportation Texinfo


Le back-end d'exportation de Texinfo supporte deux approches pour écrire des
commandes de définition Texinfo. L'une d'entre elles est décrite ici, l'autre dans Section
13.14.9 [Listes simples dans l'export Texinfo], page 193.
Le back-end d'exportation Texinfo convertit les blocs spéciaux en commandes portant
le même nom. Il ajoute également les attributs ':options' à la fin de la commande, comme
le montre cet exemple :
#+ATTR_TEXINFO : :options org-org-export-to-org
... #+BEGIN_defun
Un nom de fonction quelque peu obsessionnel.
#+END_defun
devient
@defun org-org-export-to-org ...
Un nom de fonction quelque peu
obsessionnel. @end defun

13.14.15 Un exemple de Texinfo


Voici un exemple de fichier Org plus détaillé. Voir la section "Exemples de textes GNU"
dans texinfo pour un exemple équivalent utilisant le code Texinfo.
#+TITLE : Échantillon GNU {{{version}}}
#+SUBTITLE : pour la version {{{version}}, {{mise à
jour}} #+AUTEUR : A.U. Thor
#+EMAIL : bug-sample@gnu.org

#+OPTIONS : ':t toc:t author:t email:t


#+LANGUAGE : en

#+MACRO : version 2.0


#+MACRO : dernière mise à jour le 4 mars 2014

#+TEXINFO_FILENAME : sample.info
Chapitre 13 : 323
L'exportation

#+TEXINFO_HEADER : @syncodeindex pg cp

#+TEXINFO_DIR_CATEGORY : Texinfo documentation system


#+TEXINFO_DIR_TITLE : sample : (sample)
#+TEXINFO_DIR_DESC : Invocation de l'échantillon

#+TEXINFO_PRINTED_TITLE : Échantillon GNU

Ce manuel concerne GNU Sample (version {{{version}}}),


{{{mise à jour}}}).

* Copie
:PROPRIÉTÉS :
:COPYING : t
:FIN :

Ce manuel concerne GNU Sample (version {{{version}}}),


{{{updated}}}), qui est un exemple dans la documentation Texinfo.

Copyright \copy 2016 Free Software Foundation, Inc.

#+BEGIN_QUOTE
Il est permis de copier, distribuer et/ou modifier ce document
selon les termes de la licence de documentation libre GNU, version
1.3 ou toute version ultérieure publiée par la Free Software
Foundation ; sans sections invariantes, sans textes de couverture
et sans textes de quatrième de couverture. Une copie de la licence
est incluse dans la section intitulée "Licence de documentation
libre GNU".
#+END_QUOTE

* Invocation de

l'échantillon

#+PINDEX :

échantillon
#+CINDEX : invocation de @command{sample}

Il s'agit d'un exemple de manuel. Il n'y a pas d'exemple de


programme à invoquer, mais s'il y en avait un, vous pourriez voir
ici son utilisation de base et les options de la ligne de
commande.

* Licence de documentation libre GNU


:PROPRIÉTÉS :
ANNEXE : t
:FIN :
Chapitre 13 : 324
L'exportation
#+INCLUDE : fdl.org

* Index
Chapitre 13 : 325
L'exportation

:PROPRIÉTÉS :
:INDEX : cp
:FIN :

13.15 Exportation d'iCalendar


Une grande partie du succès de l'interopérabilité du mode Org réside dans sa capacité à
exporter ou à importer facilement depuis des applications externes. Le back-end
d'exportation iCalendar récupère les données de calendrier des fichiers Org et les
exporte au format standard iCalendar.
Le back-end d'exportation d'iCalendar peut également intégrer des entrées TODO en
fonction de la configuration de la variable org-icalendar-include-todo. Le back-end
exporte des horodatages simples en tant que "VEVENT", des éléments TODO en tant que
"VTODO", et crée également des événements à partir d'échéances qui se trouvent dans
des éléments non TODO. Le back-end utilise les échéances et les dates de planification
des éléments Org TODO pour définir les dates de début et d'échéance de l'entrée
TODO d'iCalendar. Consultez les variables org-icalendar-use-deadline et org-
icalendar-use-scheduled pour plus de détails.
Pour les balises de l'en-tête, le back-end d'exportation iCalendar les transforme en
catégories iCalendar. Pour modifier l'héritage des balises et des états TODO, configurez
la variable org-icalendar-categories. Pour assigner des alarmes d'horloge basées
sur l'heure, configurez la variable org-icalendar-alarm-time.
La norme du format iCalendar exige un identifiant unique global - ou UID - pour
chaque entrée. Le back-end d'exportation d'iCalendar crée des UID lors de l'exportation.
Pour enregistrer une copie de l'UID dans le fichier Org, définissez la variable org-
icalendar-store-UID. Le back-end recherche la propriété 'ID' de l'entrée pour réutiliser
le même UID lors d'exportations ultérieures.
Étant donné qu'une seule entrée Org peut donner lieu à plusieurs entrées iCalendar -
horodatage, date limite, élément programmé ou élément TODO - Org ajoute des préfixes
à l'UID, en fonction de la partie de l'entrée Org qui a déclenché la création de l'entrée
iCalendar. Les préfixes garantissent l'unicité des UID, tout en permettant aux
programmes de synchronisation de retracer les connexions.
C-c C-e c f (org-icalendar-export-to-ics)
Créer des entrées iCalendar à partir du tampon Org actuel et les stocker
dans le même répertoire, en utilisant une extension de fichier '.ics'.
C-c C-e c a (org-icalendar-export-agenda-files)
Créer des entrées iCalendar à partir des fichiers Org dans org-agenda-
files et les stocker dans un fichier iCalendar séparé pour chaque fichier
Org.
C-c C-e c c (org-icalendar-combine-agenda-files)
Créer un fichier iCalendar combiné à partir des fichiers Org dans org-agenda-
files et l'écrire dans le nom de fichier org-icalendar-combined-agenda-
file.
Le back-end d'exportation d'iCalendar inclut les propriétés 'SUMMARY', 'DESCRIPTION',
'LOCATION', 'TIMEZONE' et 'CLASS' des entrées de l'Org lors de l'exportation. Pour forcer le
back-end à hériter des propriétés 'LOCATION', 'TIMEZONE' et 'CLASS', configurez la variable
org-use-property-inheritance.
Lorsque les entrées Org n'ont pas les propriétés 'SUMMARY', 'DESCRIPTION', 'LOCATION'
et 'CLASS', le back-end d'exportation d'iCalendar dérive le résumé du titre et dérive la
description du corps de l'élément Org. La variable org-icalendar-include-body limite le
Chapitre 13 : 326
L'exportation
nombre maximum de caractères du contenu qui sont transformés en description.
Chapitre 13 : 327
L'exportation

La propriété "TIMEZONE" peut être utilisée pour spécifier un fuseau horaire par entrée
et s'applique à toute entrée contenant des informations d'horodatage. Les fuseaux
horaires doivent être spécifiés conformément au format de la base de données des
fuseaux horaires de l'IANA, par exemple "Asia/Almaty". La valeur de la propriété peut
également être "UTC", afin d'imposer le temps UTC pour cette entrée uniquement.
La propriété "CLASS" peut être utilisée pour spécifier une classe de visibilité par
entrée ou des restrictions d'accès, et s'applique à toute entrée comportant des
informations de classe. La norme iCalendar définit trois classes de visibilité :
PUBLIC" L'entrée est visible par le public (par défaut).
CONFIDENTIEL
Seul un groupe limité de clients a accès à l'événement.
PRIVATE' L'entrée ne peut être récupérée que par son propriétaire.
Le serveur doit traiter les propriétés de classe inconnue de la même manière que "PRIVATE".
L'exportation au format iCalendar dépend en grande partie des capacités de
l'application de destination. Certaines sont plus souples que d'autres. Consultez la FAQ
du mode Org pour obtenir des conseils sur des applications spécifiques.

13.16 Autres back-ends intégrés


Les autres back-ends d'exportation inclus dans Org sont les suivants :
• 'ox-man.el' : Exportation vers une page de manuel.
Pour activer de tels back-ends, personnalisez org-export-backends ou chargez-les
directement avec '(require 'ox-man)'. Lorsque le chargement est réussi, le back-end
ajoute de nouvelles clés dans le distributeur d'exportation (voir Section 13.1 [Le
distributeur d'exportation], page 147).
Suivez les commentaires de ces fichiers, par exemple "ox-man.el", pour les détails
d'utilisation et de configuration.

13.17 Configuration avancée de l'exportation


Crochets d'exportation
Le processus d'exportation exécute deux hooks avant le début de l'exportation
proprement dite. Le premier hook, org-export-before-processing-hook, s'exécute
avant toute expansion de macros, de code Babel et de mots-clés include dans le tampon.
Le second crochet, org-export-before-parsing-hook, s'exécute avant que le tampon
ne soit analysé.
Les fonctions ajoutées à ces crochets sont appelées avec un seul argument : le back-
end d'exportation utilisé, sous forme de symbole. Vous pouvez les utiliser pour des
modifications structurelles lourdes du document. Par exemple, vous pouvez supprimer
tous les titres dans la mémoire tampon pendant l'exportation de la manière suivante :
(defun my-headline-removal (backend)
"Supprimer tous les titres de la mémoire tampon actuelle.
BACKEND est le back-end d'exportation utilisé, sous
forme de symbole." (org-map-entries
(lambda () (delete-region (point) (line-beginning-position 2)))))

(add-hook 'org-export-before-parsing-hook #'my-headline-removal)


Chapitre 13 : 328
L'exportation

Filtres
Les filtres sont des listes de fonctions à appliquer à certaines parties d'un back-end
donné. La sortie de la première fonction du filtre est transmise à la fonction suivante du
filtre. La sortie finale est la sortie de la dernière fonction du filtre.
Le processus d'exportation d'Org comporte de nombreux ensembles de filtres
applicables à différents types d'objets, de texte brut, d'arbres d'analyse, d'options
d'exportation et de formats de sortie finaux. Les filtres sont nommés d'après le type
d'élément ou d'objet : org-export-filter-TYPE-functions, où TYPE est le type ciblé
par le filtre. Les types valides sont les suivants :
corps audacieux babel-call
bloc central horloge code
journal-sexp tiroir bloc
dynamique
entité exemple de bloc bloc
d'exportation
export-snippet sortie finale largeur fixe
définition des notes de référence de la note de titre
bas de page bas de page
règle horizontale inline-babel-call inline-src-block
tâche en ligne italique article
mot-clé latex-environnement fragment de
latex
saut de ligne lien propriété de
nœud
options paragraphe parse-tree
liste simple texte clair planification
tiroir de propriété bloc de citations cible radio
section bloc spécial bloc src
cookie-statistiques traversée indice
exposant table tableau-cellule
table-row cible horodatage
souligner verbatim bloc de vers
Voici un exemple de filtre qui remplace les espaces insécables ~ ~ dans le tampon
Org par '~' pour le back-end LATEX.
(defun my-latex-filter-nobreaks (text backend info)
"S'assurer que les \N \N \N \N sont correctement
traités dans l'exportation LaTeX." (when (org-export-
derived-backend-p backend 'latex)
(replace-regexp-in-string " " "~" text)))

(add-to-list 'org-export-filter-plain-text-functions
'my-latex-filter-nobreaks)
Un filtre nécessite trois arguments : le code à transformer, le nom du back-end et
quelques informations facultatives sur le processus d'exportation. Le troisième argument
peut être ignoré sans risque. Notez l'utilisation du prédicat org-export-derived-
backend-p qui teste le back-end latex ou tout autre back-end, tel que beamer, dérivé de
latex.

Définition de filtres pour des fichiers individuels


L'exportation Org peut filtrer non seulement les backends, mais aussi des fichiers
Chapitre 13 : 329
L'exportationgrâce au mot-clé "BIND". Voici un exemple avec deux filtres ; l'un supprime
spécifiques
les crochets des horodateurs, et l'autre supprime le texte barré. Les fonctions de filtrage
sont définies dans un bloc de code dans le même fichier Org, ce qui est pratique pour le
débogage.
Chapitre 13 : 330
L'exportation

#+BIND : org-export-filter-timestamp-functions (tmp-f-timestamp)


#+BIND : org-export-filter-strike-through-functions (tmp-f-strike-
through) #+BEGIN_SRC emacs-lisp :exports results :results none
(defun tmp-f-timestamp (s backend info)
(replace-regexp-in-string "&[lg]t;\\|[][]" "" s))
(defun tmp-f-strike-through (s backend info) "")
#+END_SRC

Extension d'un back-end existant


Certaines parties du processus de conversion peuvent être étendues à certains éléments afin
d'introduire une nouvelle traduction ou une traduction révisée. C'est ainsi que le back-end
d'exportation HTML a été étendu au format Markdown. Les extensions fonctionnent de
manière transparente, de sorte que tout aspect du filtrage qui n'est pas effectué par le
back-end étendu est pris en charge par le back-end d'origine. De toutes les
personnalisations d'exportation dans Org, l'extension est très puissante car elle opère au
niveau de l'analyseur syntaxique.
Pour cet exemple, le back-end ascii doit afficher la langue utilisée dans un bloc de
code source. Il ne doit également s'afficher que lorsque certains attributs sont non nuls,
comme dans l'exemple suivant :
#+ATTR_ASCII : :language t
Puis étendre le back-end ASCII avec un back-end personnalisé "my-ascii".
(defun my-ascii-src-block (src-block contents
info) "Transcode un élément SRC-BLOCK de Org à
ASCII.
CONTENTS est nul. INFO est une liste utilisée comme
canal de communication".
(if (not (org-export-read-attribute :attr_ascii src-block
:language)) (org-export-with-backend 'ascii src-block contents
info)
(concat
(format ",--[ %s ]--\n%s`------"
(org-element-property :language src-
block) (replace-regexp-in-string
"^" "| "
(org-element-normalize-string
(org-export-format-code-default src-block info)))))))

(org-export-define-derived-backend 'my-ascii 'ascii


:translate-alist '((src-block . my-ascii-src-block)))
La fonction my-ascii-src-block examine l'attribut au-dessus de l'élément actuel. Si
ce n'est pas le cas, elle passe le relais au back-end ascii. Si elle est vraie, ce qui est le
cas dans cet exemple, elle crée une boîte autour du code et laisse de la place pour
l'insertion d'une chaîne de caractères pour la langue. Le dernier formulaire crée le
nouveau back-end qui n'entre en action que lors de la traduction d'éléments de type src-
block.
Pour utiliser le nouveau back-end défini, évaluez ce qui suit à partir d'un tampon Org :
(org-export-to-buffer 'my-ascii "*Org MY-ASCII Export*")
Chapitre 13 : 331
L'exportation
D'autres mesures à envisager seraient une fonction interactive, l'auto-installation d'un
élément dans le menu du dispatcher d'exportation, et d'autres améliorations conviviales.
Chapitre 13 : 332
L'exportation

13.18 Exportation dans les tampons étrangers


Les back-ends d'exportation d'Org comprennent souvent des commandes permettant de
convertir des régions sélectionnées. Une caractéristique intéressante de cette
conversion sur place est que la sortie exportée remplace la source d'origine. Voici
quelques fonctions de ce type :
org-ascii-convert-region-to-ascii
Convertit la région sélectionnée en ASCII.
org-ascii-convert-region-to-utf8
Convertit la région sélectionnée en UTF-8.
org-html-convert-region-to-html
Convertir la région sélectionnée en HTML.
org-latex-convert-region-to-latex
Convertit la région sélectionnée en LATEX.
org-texinfo-convert-region-to-texinfo
Convertir la région sélectionnée en Texinfo.
org-md-convert-region-to-md
Convertir la région sélectionnée en Markdown.
Les conversions sur place sont particulièrement pratiques pour la conversion rapide
de tableaux et de listes dans des tampons étrangers. Par exemple, dans un tampon
HTML, écrivez une liste en syntaxe Org, sélectionnez-la et convertissez-la en HTML
avec M-x org-html-convert-region-to-html.

13.18.1 Exportation vers un HTML minimal


Si vous souhaitez produire un fichier HTML minimal, sans CSS, sans Javascript, sans
préambule ni postambule, voici les variables que vous devez définir :
(setq org-html-head ""
org-html-head-extra ""
org-html-head-include-default-style nil
org-html-head-include-scripts nil
org-html-preamble nil
org-html-postamble nil
org-html-use-infojs nil)
Chapitre 14 : 333
Publication

14 Édition
Org comprend un système de gestion de la publication qui vous permet de configurer la
conversion HTML automatique des projets composés de fichiers Org interconnectés.
Vous pouvez également configurer Org pour qu'il télécharge automatiquement vos
pages HTML exportées et les pièces jointes associées, telles que les images et les
fichiers de code source, vers un serveur web.
Vous pouvez également utiliser Org pour convertir des fichiers en PDF, ou même
combiner la conversion HTML et PDF afin que les fichiers soient disponibles dans les
deux formats sur le serveur.
L'édition a été réalisée avec la contribution de David O'Toole à Org.

14.1 Configuration
La publication nécessite une configuration importante pour spécifier les fichiers, la
destination et de nombreuses autres propriétés d'un projet.

14.1.1 La variable org-publish-project-alist


La publication est configurée presque entièrement en définissant la valeur d'une
variable, appelée org-publish-project-alist. Chaque élément de la liste configure un
projet et peut se présenter sous l'une des deux formes suivantes :
("nom du projet" :valeur de la propriété :valeur de la propriété ...)
c'est-à-dire une liste de propriétés bien formée avec des clés et des
valeurs alternées, ou :
("nom-projet" :composants ("nom-projet" "nom-projet" ...))
Dans les deux cas, les projets sont configurés en spécifiant les valeurs des
propriétés. Un projet définit l'ensemble des fichiers à publier, ainsi que la configuration
de publication à utiliser lors de la publication de ces fichiers. Lorsqu'un projet prend la
deuxième forme mentionnée ci-dessus, les membres individuels de la propriété
:components sont considérés comme des sous-projets, qui regroupent des fichiers
nécessitant différentes options de publication. Lorsque vous publiez un tel "méta-projet",
tous les composants sont également publiés, dans l'ordre indiqué.

14.1.2 Sources et destinations des fichiers


La plupart des propriétés sont facultatives, mais certaines doivent toujours être définies.
En particulier, Org doit savoir où chercher les fichiers sources et où placer les fichiers
publiés.
:base-directory
Répertoire contenant les fichiers sources de la publication.
:publication-annuaire
Répertoire dans lequel les fichiers de sortie sont publiés. Vous pouvez
publier directement sur un serveur web en utilisant une syntaxe de nom de
fichier appropriée pour le paquetage Emacs tramp. Vous pouvez également
publier dans un répertoire local et utiliser des outils externes pour
télécharger votre site web (voir Section 14.2 [Téléchargement de fichiers],
page 211).
:préparation-fonction
Chapitre 14 : 334
Publication Fonction ou liste de fonctions à appeler avant de lancer le processus de
publication, par exemple pour exécuter "make" afin de mettre à jour les
fichiers à publier. Chaque fonction de préparation est appelée avec un seul
argument, la liste des propriétés du projet.
Chapitre 14 : 335
Publication

:completion-function
Fonction ou liste de fonctions appelées à la fin du processus de publication,
par exemple pour modifier les permissions des fichiers résultants. Chaque
fonction d'achèvement est appelée avec un seul argument, la liste des
propriétés du projet.

14.1.3 Sélection des fichiers


Par défaut, tous les fichiers portant l'extension ".org" dans le répertoire de base sont
considérés comme faisant partie du projet. Ceci peut être modifié en définissant les
propriétés suivantes
:base-extension
Extension - sans le point - des fichiers sources. Il s'agit en fait d'une
expression normale. Attribuez-lui le symbole any si vous souhaitez obtenir
tous les fichiers du répertoire :base, même sans extension.
:exclude Expression régulière permettant de faire correspondre les noms de fichiers
qui ne doivent pas être publiés, même s'ils ont été sélectionnés sur la base
de leur extension.
:include Liste des fichiers à inclure indépendamment de :base-extension et :exclude.
:recursive
Non nul signifie que le répertoire de base est vérifié récursivement pour les fichiers à publier.
14.1.4 Action de publication
La publication signifie qu'un fichier est copié dans le répertoire de destination et
éventuellement transformé au cours du processus. La transformation par défaut est
d'exporter les fichiers Org en fichiers HTML, ce qui est fait par la fonction org-html-
publish-to-html qui appelle l'exportateur HTML (voir Section 13.9 [Exportation
HTML], page 160). Mais vous pouvez également publier votre contenu sous forme de
fichiers PDF en utilisant org-latex-publish-to-pdf, ou sous forme de fichiers ASCII,
Texinfo, etc. en utilisant les fonctions correspondantes.
Si vous souhaitez publier le fichier Org comme un fichier '.org' mais en supprimant
les arbres archivés, commentés et exclus des balises, utilisez org-org-publish-to-org. Cela
produit un fichier ".org" et le place dans le répertoire de publication. Si vous souhaitez
une version HTML de ce fichier, définissez le paramètre
:htmlized-source to t. Il produit 'file.org.html' dans le répertoire de publication1 .
D'autres fichiers, comme les images, n'ont besoin d'être copiés que vers la
destination de publication ; pour cela, vous pouvez utiliser org-publish-attachment.
Pour les fichiers non-Org, vous devez toujours spécifier la fonction de publication :
:fonction d'édition
Fonction exécutant la publication d'un fichier. Il peut également s'agir d'une
liste de fonctions, qui sont toutes appelées à tour de rôle.
:htmlized-source
Non nul signifie, publier la source htmlisée.
La fonction doit accepter trois arguments : une liste de propriétés contenant au moins un
:publishing-directory property, le nom du fichier à publier et le chemin d'accès
au répertoire de publication du fichier de sortie. Il doit prendre le fichier spécifié,
effectuer les transformations nécessaires, le cas échéant, et placer le résultat dans le
dossier de destination.
Chapitre 14 : 336
Publication
1
Si le répertoire de publication est le même que le répertoire source, "file.org" est exporté sous la forme
"file.org.org".
Chapitre 14 : 337
Publication

14.1.5 Options pour les exportateurs


La liste des propriétés peut être utilisée pour définir de nombreuses options d'exportation
pour les exportateurs HTML et LATEX. Dans la plupart des cas, ces propriétés
correspondent à des variables utilisateur dans Org. Le tableau ci-dessous répertorie ces
propriétés ainsi que la variable à laquelle elles appartiennent. Pour plus de détails, voir
la chaîne de documentation de la variable concernée.
Lorsqu'une valeur est attribuée à une propriété dans org-publish-project-alist,
son réglage remplace la valeur de la variable utilisateur correspondante, s'il y en a une,
pendant la publication. Les options définies dans un fichier (voir Section 13.2
[Paramètres d'exportation], page 148), cependant, remplacent tout.

Propriétés génériques
:arbres-archivés org-export-avec-arbres-archivés
:exclude-tags org-export-exclude-tags
:headline-levels org-export-headline-levels
:langue org-export-default-language
:preserve-breaks org-export-preserve-breaks
:numéros de section org-export-avec-numéros-de-sections
:select-tags org-export-select-tags
:avec-auteur org-export-avec-auteur
:avec-liens-cassés org-export-avec-liens-cassés
:avec horloges org-export-avec-horloges
:avec-créateur org-export-avec-créateur
:avec-date org-export-with-date
:avec-tiroirs org-export-avec-tiroirs
:avec-email org-export-with-email
:avec emphase org-export-avec-emphase
:avec-largeur-fixe org-export-avec-largeur-fixe
:avec-notes org-export-with-footnotes
:avec-latex org-export-avec-latex
:avec planification org-exportation-avec-planification
:avec-priorité org-export-avec-priorité
:avec propriétés org-export-avec-propriétés
:avec-chaînes-spéciales org-export-avec-chaînes-spéciales
:avec-sous-titre org-export-with-sub-superscripts
:avec tableaux org-export-with-tables
:with-tags org-export-with-tags
:avec tâches org-export-avec-tâches
:avec horodatage org-export-with-timestamps
:avec-titre org-export-with-title
:avec-toc org-export-with-toc
:avec-mots-clefs org-export-avec-mots-clefs

Propriétés spécifiques à l'ASCII


:ascii-bullets org-ascii-bullets
:ascii-caption-above org-ascii-caption-above
:ascii-charset org-ascii-charset
:ascii-global-margin org-ascii-global-margin
Chapitre 14 : 338
Publication

:ascii-format-drawer-function org-ascii-format-fonction-tiroir
:ascii-format-inlinetask-function org-ascii-format-inlinetask-function
:ascii-espacement des titres org-ascii-espacement des titres
:ascii-indented-line-width org-ascii-largeur de ligne indentée
:ascii-inlinetask-width org-ascii-inlinetask-width
:ascii-inner-margin org-ascii-inner-margin
:ascii-links-to-notes org-ascii-links-to-notes
:ascii-list-margin org-ascii-list-margin
:ascii-espacement de paragraphe org-ascii-espacement de paragraphe
:ascii-quote-margin org-ascii-quote-margin
:ascii-table-keep-all-vertical-lines org-ascii-table-keep-all-vertical-lines
:ascii-table-use-ascii-art org-ascii-table-use-ascii-art
:ascii-table-widen-columns org-ascii-table-widen-columns
:ascii-text-width org-ascii-text-width
:ascii-underline org-ascii-underline
:ascii-verbatim-format org-ascii-verbatim-format

Propriétés spécifiques de Beamer


:beamer-theme org-beamer-theme
:beamer-column-view-format org-beamer-column-view-format
:beamer-environnements-extra org-beamer-environnements-extra
:beamer-frame-default-options org-beamer-frame-default-options
:beamer-outline-frame-options org-beamer-outline-frame-options
:beamer-outline-frame-title org-beamer-outline-frame-title
:beamer-subtitle-format org-beamer-subtitle-format

Propriétés spécifiques à HTML


:html-autorisation-de-nom-attribut-dans-les-ancres org-html-autorisation-de-nom-
attribut-dans-les-ancres
:html-checkbox-type org-html-checkbox-type
:html-container org-html-container-element
:html-divs org-html-divs
:html-doctype org-html-doctype
:html-extension org-html-extension
:html-footnote-format org-html-footnote-format
:html-séparateur de notes de bas de page org-html-séparateur de notes de bas de page
:html-notes-de-bas-de-page org-html-pieds-de-notes
:html-format-drawer-function org-html-format-drawer-function
:html-format-headline-function org-html-format-headline-function
:html-format-inlinetask-function org-html-format-inlinetask-function
:html-head-extra org-html-head-extra
:html-head-include-default-style org-html-head-include-default-style
:html-head-include-scripts org-html-head-include-scripts
:html-head org-html-head
:html-home/up-format org-html-home/up-format
:html-html5-fancy org-html-html5-fancy
:html-indent org-html-indent
Chapitre 14 : 339
Publication

:html-infojs-options org-html-infojs-options
:html-infojs-template org-html-infojs-template
:html-inline-image-rules org-html-inline-image-rules
:html-inline-images org-html-inline-images
:html-link-home org-html-link-home
:html-link-org-files-as-html org-html-link-org-files-as-html
:html-link-up org-html-link-up
:html-link-use-abs-url org-html-link-use-abs-url
:html-mathjax-options org-html-mathjax-options
:html-mathjax-template org-html-mathjax-template
:html-equation-reference-format org-html-equation-reference-format
:html-metadata-timestamp-format org-html-metadata-timestamp-format
:html-postamble-format org-html-postamble-format
:html-postamble org-html-postamble
:html-preamble-format org-html-preamble-format
:html-preamble org-html-preamble
:html-auto-lien-titres org-html-auto-lien-titres
:html-table-align-individual-field org-html-table-align-individual-fields
:html-table-attributes org-html-table-default-attributes
:html-table-caption-above org-html-table-caption-above
:html-table-data-tags org-html-table-data-tags
:html-table-header-tags org-html-table-header-tags
:html-table-row-tags org-html-table-row-tags
:html-table-use-header-tags-for-first-column org-html-table-use-header-tags-for-first-colu
:html-tag-class-prefix org-html-tag-class-prefix
:html-text-markup-alist org-html-text-markup-alist
:html-todo-kwd-class-prefix org-html-todo-kwd-class-prefix
:html-toplevel-hlevel org-html-toplevel-hlevel
:html-use-infojs org-html-use-infojs
Lien de validation :html org-html-validation-link
:html-viewport org-html-viewport
:html-wrap-src-lines org-html-wrap-src-lines
:html-xml-declaration org-html-xml-declaration

Propriétés spécifiques de L A T E X
:latex-active-timestamp-format org-latex-active-timestamp-format
:latex-caption-above org-latex-caption-above
:latex-classes org-latex-classes
:latex-class org-latex-default-class
:latex-compiler org-latex-compiler
:latex-default-figure-position org-latex-default-figure-position
:latex-default-table-environment org-latex-default-table-environment
:latex-default-table-mode org-latex-default-table-mode
:latex-diary-timestamp-format org-latex-diary-timestamp-format
:latex-engraved-options org-latex-engraved-options
:latex-engraved-preamble org-latex-engraved-preamble
Chapitre 14 : 340
Publication

:latex-engraved-theme org-latex-engraved-theme
:latex-footnote-defined-format org-latex-footnote-defined-format
:latex-footnote-separator org-latex-séparateur de notes de bas de page
:latex-format-drawer-function org-latex-format-drawer-function
:latex-format-headline-function org-latex-format-headline-function
:latex-format-inlinetask-function org-latex-format-inlinetask-function
:latex-hyperref-template org-latex-hyperref-template
:latex-image-default-height org-latex-image-hauteur par défaut
:latex-image-default-option org-latex-image-default-option
:latex-image-default-width org-latex-image-default-width
:latex-images-centrées org-latex-images-centrées
:latex-inactive-timestamp-format org-latex-inactive-timestamp-format
:latex-inline-image-rules org-latex-inline-image-rules
:latex-lien-avec-format-de-chemin-inconnu org-latex-link-with-unknown-path-format
:latex-listings-langs org-latex-listings-langs
:latex-listings-options org-latex-listings-options
:latex-minted-langs org-latex-minted-langs
:latex-minted-options org-latex-minted-options
:latex-prefer-user-labels org-latex-prefer-user-labels
:latex-subtitle-format org-latex-subtitle-format
:latex-subtitle-separate org-latex-sous-titre-séparé
:latex-src-block-backend org-latex-src-block-backend
:latex-table-scientific-notation org-latex-table-scientific-notation
:latex-tables-booktabs org-latex-tables-booktabs
:latex-tables-centered org-latex-tables-centrées
:latex-text-markup-alist org-latex-text-markup-alist
:latex-title-command org-latex-title-command
:latex-toc-command org-latex-toc-command

Propriétés spécifiques à Markdown


:md-footnote-format org-md-footnote-format
:md-footnotes-section org-md-footnotes-section
:md-headline-style org-md-headline-style
:md-toplevel-hlevel org-md-toplevel-hlevel

Propriétés spécifiques de l'ODT


:odt-content-template-file org-odt-content-template-file
:odt-display-outline-level org-odt-display-outline-level
:odt-fontify-srcblocks org-odt-fontify-srcblocks
:odt-format-drawer-function org-odt-format-drawer-function
:odt-format-headline-function org-odt-format-headline-function
:odt-format-inlinetask-function org-odt-format-inlinetask-function
:odt-inline-formula-rules org-odt-inline-formula-rules
:odt-inline-image-rules org-odt-inline-image-rules
:odt-pixels-per-inch org-odt-pixels-per-inch
:odt-styles-file org-odt-styles-file
Chapitre 14 : 341
Publication

:odt-table-styles org-odt-table-styles
:odt-use-date-fields org-odt-use-date-fields

Propriétés spécifiques à Texinfo


:texinfo-active-timestamp-format org-texinfo-active-timestamp-format
:texinfo-classes org-texinfo-classes
:texinfo-class org-texinfo-default-class
~:texinfo-compact-itemx org-texinfo-compact-itemx
:texinfo-table-default-markup org-texinfo-table-default-markup
:texinfo-diary-timestamp-format org-texinfo-diary-timestamp-format
:texinfo-filename org-texinfo-filename
:texinfo-format-drawer-function org-texinfo-format-drawer-function
:texinfo-format-headline-function org-texinfo-format-headline-function
:texinfo-format-inlinetask-function org-texinfo-format-inlinetask-function
:texinfo-inactive-timestamp-format org-texinfo-inactive-timestamp-format
:texinfo-lien-avec-format-de-chemin-inconnu org-texinfo-lien-avec-format-de-chemin-inconnu
:texinfo-node-description-column org-texinfo-node-description-column
:texinfo-table-scientific-notation org-texinfo-table-scientific-notation
:texinfo-tables-verbatim org-texinfo-tables-verbatim
:texinfo-text-markup-alist org-texinfo-text-markup-alist

14.1.6 Liens de publication


Pour créer un lien d'un fichier Org à un autre, vous devez utiliser quelque chose comme
"[[file:foo.org][The foo]]" ou simplement "[[file:foo.org]]" (voir la section 4.4
[Liens externes], page 40). Une fois publié, ce lien devient un lien vers "foo.html". Vous
pouvez donc relier entre elles les pages de votre projet "Org web" et les liens
fonctionneront comme prévu lorsque vous les publierez en HTML. Si vous publiez
également le fichier source Org et que vous souhaitez créer un lien vers celui-ci, utilisez
un lien "http" au lieu d'un lien "file :", car les liens "file" sont convertis en liens vers
le fichier '.html' correspondant.
Les liens vers des fichiers Org cryptés, tels que "[[file:foo.org.gpg]]", sont également pris en
charge.
Vous pouvez également créer des liens vers des fichiers connexes, tels que des
images. Si vous faites attention aux noms de fichiers relatifs et si vous avez également
configuré Org pour télécharger les fichiers concernés, ces liens fonctionneront
également. Voir Section 14.3.2 [Exemple complexe], page 212, pour un exemple de cette
utilisation.
Les liens entre les documents publiés peuvent contenir certaines options de
recherche (voir section 4.8 [Options de recherche], page 46), qui seront résolues à
l'emplacement approprié dans le fichier lié. Par exemple, une fois publiés en HTML, les
liens suivants pointent tous vers une ancre dédiée dans "foo.html".
[[file:foo.org::*heading]]
[[file:foo.org::#custom-id]]]
[[file:foo.org::target]]

14.1.7 Générer un plan du site


Les propriétés suivantes peuvent être utilisées pour contrôler la publication d'une carte
de fichiers pour un projet donné.
Chapitre 14 : 342
Publication

:auto-sitemap
Si non nul, publier un sitemap pendant org-publish-current-project ou
org-publish-all.
:sitemap-filename
Nom de fichier pour la sortie du plan du site. La valeur par défaut est
"sitemap.org", qui devient "sitemap.html".
:sitemap-title
Titre de la page du plan du site. Le nom du fichier est utilisé par défaut.
:sitemap-format-entry
Cette option permet d'indiquer comment une entrée du plan du site est
formatée dans le plan du site. Il s'agit d'une fonction appelée avec trois
arguments : le nom du fichier ou du répertoire relatif au répertoire de base
du projet, le style du plan du site et le projet en cours. Elle doit renvoyer une
chaîne de caractères. La valeur par défaut transforme les noms de fichiers
en liens et utilise les titres des documents comme descriptions. Pour des
besoins de formatage spécifiques, on peut utiliser org-publish-find-date,
org-publish-find-title et org-publish-find- property, pour récupérer
des informations supplémentaires sur les documents publiés.
:sitemap-function
Fonction du plug-in à utiliser pour la génération du plan du site. Elle est
appelée avec deux arguments : le titre du plan du site et une représentation
des fichiers et des répertoires impliqués dans le projet sous la forme d'une
liste imbriquée, qui peut être transformée à l'aide de org-list-to-generic,
org-list-to-subtree et d'autres méthodes similaires. La valeur par défaut
génère une liste simple de liens vers tous les fichiers du projet.
:sitemap-tri-dossiers
L'endroit où les dossiers doivent apparaître dans le plan du site. Définissez
ce paramètre sur premier (par défaut) ou dernier pour afficher les
dossiers en premier ou en dernier, respectivement. Si la valeur est "ignore",
les dossiers sont totalement ignorés. Toute autre valeur mélange les fichiers
et les dossiers. Cette variable n'a aucun effet lorsque le style du plan du site
est arbre.
:sitemap-tri-fichiers
Comment les fichiers sont triés dans le plan du site. Il est possible de choisir
l'ordre alphabétique (par défaut), l'ordre chronologique ou l'ordre anti-
chronologique. L'ordre chronologique trie les fichiers les plus anciens en
premier, tandis que l'ordre anti-chronologique trie les fichiers les plus
récents en premier. L'ordre alphabétique trie les fichiers dans l'ordre
alphabétique. La date d'un fichier est récupérée avec org-publish-find-
date.
:sitemap-ignore-case
Le tri doit-il être sensible à la casse ? La valeur par défaut est nulle.
:sitemap-file-entry-format
Cette option permet d'indiquer comment l'entrée d'un sitemap est formatée
dans le sitemap. Il s'agit d'une chaîne de format avec quelques séquences
Chapitre 14 : 343
Publication d'échappement : %t représente le titre du fichier, %a représente l'auteur du
fichier et %d représente la date du fichier. La date est récupérée avec la
fonction org-publish-find-date et formatée avec org-publish-sitemap-
date-format. Valeur par défaut %t.
Chapitre 14 : 344
Publication

:sitemap-date-format
Chaîne de format pour la fonction format-time-string qui indique
comment la date d'une entrée du sitemap doit être formatée. Cette propriété
contourne la fonction org-publish-sitemap- date-format qui prend par
défaut la valeur %Y-%m-%d.

14.1.8 Création d'un index


Le mode Org permet de générer un index des fichiers d'un projet de publication.
:makeindex
S'il est non nul, il génère un index dans le fichier "theindex.org" et le
publie sous le nom "theindex.html".
Le fichier est créé lors de la première publication d'un projet avec l'option
:makeindex. Le fichier ne contient qu'une déclaration "#+INCLUDE : "theindex.inc"".
Vous pouvez ensuite construire autour de cette déclaration d'inclusion en ajoutant un
titre, des informations de style, etc.
Les entrées d'index sont spécifiées avec le mot-clé "INDEX". Une entrée contenant un
point d'exclamation crée un sous-élément.
*** Curriculum Vitae
#+INDEX : CV
#+INDEX : Application!CV

14.2 Téléchargement de fichiers


Pour les personnes qui utilisent déjà des outils de synchronisation tiers tels que Rsync
ou Unison, il peut être préférable de ne pas utiliser les fonctions intégrées de publication
à distance du mode Org, qui s'appuient fortement sur Tramp. Tramp, bien que très utile
et puissant, a tendance à ne pas être très efficace pour le transfert de fichiers multiples
et est connu pour causer des problèmes en cas d'utilisation intensive.
Les utilitaires de synchronisation spécialisés offrent plusieurs avantages. Outre la
comparaison des horodatages, ils vérifient également le contenu et les
autorisations/attributs. C'est pourquoi vous préférerez peut-être publier votre site web
dans un répertoire local - peut-être même à la place de vos fichiers Org - et utiliser
ensuite Unison ou Rsync pour effectuer la synchronisation avec l'hôte distant.
Comme Unison, par exemple, peut être configuré quant aux fichiers à transférer vers
une certaine destination distante, il peut grandement simplifier la définition de la
publication du projet. Il suffit de conserver tous les fichiers à l'emplacement correct, de
traiter vos fichiers Org avec org-publish et de laisser l'outil de synchro- nisation faire le
reste. Dans ce scénario, il n'est pas nécessaire d'inclure des pièces jointes telles que
des fichiers JPG, CSS ou PNG dans la définition du projet puisque l'outil tiers les
synchronise.
La publication dans un répertoire local est également beaucoup plus rapide que dans
un répertoire distant, ce qui vous permet de republier plus facilement des projets entiers.
Si vous mettez le drapeau org-publish-use-timestamps- à nil, vous obtenez le
principal avantage de réintégrer tout fichier externe modifié, comme les fichiers source
d'exemple que vous pourriez inclure avec le mot-clé 'INCLUDE'. Le mécanisme
d'horodatage d'Org n'est pas assez intelligent pour détecter si les fichiers inclus ont été
modifiés.

14.3 Exemple de configuration


Chapitre 14 : 345
Publication
Nous présentons ci-dessous deux exemples de configuration. Le premier est un projet
simple qui ne publie qu'un ensemble de fichiers Org. Le second exemple est plus
complexe, avec un projet à plusieurs composants.
Chapitre 14 : 346
Publication

14.3.1 Exemple : configuration simple de la publication


Cet exemple publie un ensemble de fichiers Org dans le répertoire "public_html" de la
machine locale.
(setq org-publish-project-alist
'(("org"
:base-directory "~/org/"
:publishing-function org-html-publish-to-html
:publishing-directory "~/public_html"
:section-numbers nil
:with-toc nil
:html-head "<link rel="stylesheet""
href=\"../other/mystyle.css\"
type=\"text/css\"/>")))

14.3.2 Exemple : configuration de publication complexe


Cet exemple plus complexe publie un site web entier, y compris les fichiers Org
convertis en HTML, les fichiers images, le code source Emacs Lisp et les feuilles de
style. Le répertoire de publication est distant et les fichiers privés sont exclus.
Pour s'assurer que les liens sont préservés, il faut veiller à reproduire la structure de
vos répertoires sur le serveur web et à utiliser des chemins d'accès relatifs. Par
exemple, si vos fichiers Org sont conservés dans "~/org/" et vos images publiables
dans "~/images/", vous créerez un lien vers une image avec
fichier :../images/myimage.png
Sur le serveur web, le chemin relatif de l'image doit être le même. Vous pouvez y parvenir
en créant un dossier "images/" au bon endroit sur le serveur web et en y publiant des
images.
(setq org-publish-project-alist
'(("orgfiles"
:base-directory "~/org/"
:base-extension "org"
:publishing-directory "/ssh:user@host:~/html/notebook/"
:publishing-function org-html-publish-to-html
:exclude "PrivatePage.org" ; ; regexp
:headline-levels 3
:section-numbers nil
:with-toc nil
:html-head "<link rel="stylesheet" href="/other/mystyle.css"
type="text/css"/>"
:html-preamble t)

("images"
:base-directory "~/images/"
:base-extension "jpg\\|gif\\Npng"
:publishing-directory "/ssh:user@host:~/html/images/"
:publishing-function org-publish-attachment)
Chapitre 14 : 347
Publication

("autres"
:base-directory "~/other/"
:base-extension "css\\|el"
:publishing-directory "/ssh:user@host:~/html/other/"
:publishing-function org-publish-attachment)
("website" :components ("orgfiles" "images" "other"))))

14.4 Déclenchement de la publication


Une fois correctement configuré, Org peut publier à l'aide des commandes suivantes :
C-c C-e P x (org-publish)
Demander un projet spécifique et publier tous les fichiers qui lui appartiennent.
C-c C-e P p (org-publish-current-project)
Publier le projet contenant le fichier actuel.
C-c C-e P f (org-publish-current-file)
Publie uniquement le fichier
en cours.
C-c C-e P a (org-publish-all)
Publier chaque projet.
Org utilise des horodatages pour savoir quand un fichier a été modifié. Les fonctions ci-
dessus ne publient normalement que les fichiers modifiés. Vous pouvez passer outre et
forcer la publication de tous les fichiers en donnant un argument préfixe à l'une des
commandes ci-dessus, ou en personnalisant la variable org-publish- use-
timestamps-flag. Cela peut être nécessaire en particulier si les fichiers incluent
d'autres fichiers via les mots-clés 'SETUPFILE' ou 'INCLUDE'.
Chapitre 15 : Traitement des 348
citations

15 Traitement des citations


La bibliothèque 'oc.el' fournit des outils pour gérer les citations dans Org via des
"processeurs de citations" qui offrent tout ou partie des capacités suivantes :
activateFontification , aperçu de l'infobulle, etc.
followAt-point actions sur les citations via org-open-at-
point. insertAjouter et éditer des citations via org-cite-insert.
exportVia différentes bibliothèques pour différents formats cibles.
Pour utiliser un "processeur de citations", l'utilisateur doit les charger ; par exemple ;
(require 'oc-bibtex)
Ils peuvent ensuite les configurer avec org-cite-activate-processor, org-cite-
follow-processor, org-cite-insert-processor et org-cite-export-processor
respectivement.
Le processeur "de base" fourni offre ces quatre possibilités.

15.1 Citations
Avant d'ajouter des citations, il faut d'abord définir une ou plusieurs bibliographies, soit
globalement avec org-cite- global-bibliography, soit localement en utilisant un ou
plusieurs mots-clés "bibliography".
#+bibliographie : SomeFile.bib
#+bibliographie :
/quelqu'un/autre/fichier.json
#+bibliographie : "/quelque/fichier/avec des espaces dans son nom.bib"
Il est ensuite possible d'insérer et d'éditer des citations en utilisant org-cite-insert, appelé avec C-c C-
x @.
Une citation nécessite une ou plusieurs clés de citation, éléments permettant
d'identifier une référence dans la bibliographie.
• Chaque citation est entourée de crochets et utilise le type "cite".
• Chaque touche commence par le caractère "@".
• Chaque clé peut être qualifiée par un préfixe (par exemple "voir") et/ou un suffixe (par
exemple "p. 123"), donnant des informations utiles ou nécessaires à la
compréhension de la citation mais non incluses dans la référence.
• Une même citation peut citer plus d'une référence ; les clés sont séparées par des points-virgules.
; le formatage de ces groupes de citations est spécifié par le style.
• Il est également possible de spécifier une variation stylistique pour les citations en
insérant un "/" et un nom de style entre le mot-clé "cite" et les deux points ; cela n'a
généralement de sens que pour les styles de l'année de l'auteur.
[cite/style:préfixe commun ;préfixe @key suffixe ; ... ; suffixe commun]
Les seuls éléments obligatoires sont les suivants :
• Le mot-clé "citation" et les deux points.
• Le caractère '@' précédant immédiatement chaque touche.
• Les parenthèses entourant la (les) citation(s) (groupe).
Chapitre 15 : Traitement des 349
citations

15.2 Processeurs d'exportation de citations


Org comprend actuellement les entreprises de transformation pour l'exportation suivantes :
• Deux processeurs peuvent exporter vers différents formats, notamment "latex" (et
donc "pdf"), "html", "odt" et texte brut (UTF8) :
de base un processeur d'exportation de base, bien adapté aux situations où la
compatibilité ascendante n'est pas une exigence et où les besoins de
formatage sont minimes ;
cslce processeur d'exportation utilise des fichiers de formatage écrits en
Citation Style Language via citeproc-el ;
• En revanche, trois autres processeurs ciblent exclusivement LATEX et les formats dérivés de LATEX :
bibtex ce processeur d'exportation utilise BibTEX, le processeur bibliographique
historique utilisé avec LATEX, permettant ainsi l'utilisation de fichiers de
données et de styles compatibles avec ce processeur (y compris un
grand nombre de styles d'éditeurs). Il ne supporte que les commandes
'\cite' et '\nocite' de LATEX.
natbib comme avec le processeur bibtex, mais en utilisant le paquetage LATEX
'natbib', ce qui permet plus de variantes stylistiques que la commande
'\cite' de LATEX.
biblatex ce backend permet l'utilisation de données et de formats préparés pour
BibLATEX, un processeur bibliographique alternatif utilisé avec LATEX,
qui surmonte certaines limitations sérieuses de BibTEX, mais qui n'a pas
(encore ?) été largement adopté par les éditeurs.
Le mot-clé 'CITE_EXPORT' spécifie le processeur d'exportation et le(s) style(s) de
citation (et éventuellement de référence) ; par exemple (tous les arguments sont
facultatifs)
#+cite_export : basic author author-year
spécifie le processeur d'exportation "de base" avec les citations insérées sous forme de
nom d'auteur et les références indexées par nom d'auteur et année ;
#+cite_export : csl /some/path/to/vancouver-brackets.csl
spécifie le processeur "csl" et le style CSL qui, dans ce cas, définit les citations et les
références numériques selon la spécification "Vancouver" (style utilisé dans de
nombreuses revues médicales), en suivant une variation de composition mettant les
citations entre parenthèses ;
#+cite_export : natbib kluwer
spécifie le processeur d'exportation 'natbib' avec un style de citation conforme au style
Harvard et à la spécification de l'éditeur Wolkers-Kluwer ; comme il s'appuie sur le
processeur bibtex de votre installation LATEX, il n'exportera vers rien d'autre que le
PDF.

15.3 Impression de la bibliographie


Le mot-clé 'PRINT_BIBLIOGRAPHY' spécifie l'endroit où la bibliographie doit être imprimée
(notez les deux points) :
#+print_bibliography :
La bibliographie imprimée par les processeurs d'exportation basés sur LATEX "bibtex",
"natbib" et "biblatex" comporte par défaut un titre de chapitre ou de section, tandis que les
Chapitre 15 : Traitement des 350
citations
processeurs "basic" et "csl" impriment la liste des entrées de la bibliographie sans titre.
Chapitre 15 : Traitement des 351
citations

Un document peut contenir plusieurs mots-clés 'PRINT_BIBLIOGRAPHY'. Chacun de


ces mots-clés déclenchera l'impression de la bibliographie.
Les mots-clés peuvent être utilisés avec ou sans options supplémentaires. Les
options peuvent être utilisées, par exemple, pour imprimer uniquement les entrées qui
appartiennent à une certaine catégorie ou pour contrôler le formatage. L'ensemble des
options 'PRINT_BIBLIOGRAPHY' supportées et leur interprétation varient entre les
différents processeurs d'exportation de citations. Certains processeurs d'exportation ne
supportent pas le passage d'options.
15.3.1 Options de bibliographie dans les processeurs
d'exportation "biblatex" et "csl
Les processeurs d'exportation "biblatex" et "csl" prennent en charge les options de
bibliographie par le biais d'une liste de propriétés attachée au mot-clé
"PRINT_BIBLIOGRAPHY". Par exemple,
#print_bibliography : :mot-clé algèbre :type livre
Les valeurs comprenant des espaces doivent être entourées de guillemets doubles. Si
vous devez utiliser une clé plusieurs fois, vous pouvez séparer ses valeurs par des
virgules, mais sans espace entre elles :
#print_bibliography : :keyword "algebraic logic" :nottype article,book
Le processeur d'exportation "biblatex" accepte toutes les options supportées par le processeur
d'exportation de BibLATEX.
\printbibliography, tandis que le processeur "csl" accepte les commandes suivantes :
':mot-clé <mot-clé(,mot-clé2...)>'
N'imprime que les entrées dont le champ mot-clé contient tous les mots-clés donnés.
':notkeyword <keyword(,keyword2...)>'
N'imprime que les entrées dont le champ mot-clé ne contient aucun des
mots-clés donnés.
':type <type d'entrée>'
N'imprime que les entrées dont le type est '<entrytype>'. Le type d'entrée
est le type d'entrée BibTEX/BibLATEX si cette information est disponible
(l'entrée a été lue à partir d'une bibliographie BibTEX/BibLATEX) et le type
d'entrée CSL dans le cas contraire.
':nottype <entrytype(,entrytype2...)>'
N'imprime que les entrées dont le type ne fait pas partie des types d'entrée
donnés. Le type d'entrée est déterminé comme dans le cas de ':type'.
':csltype <type d'entrée>'
N'imprimer que les entrées dont le type d'entrée CSL (éventuellement basé
sur une conversion de BibTEX/BibLATEX vers CSL) est '<entrytype>'.
':notcsltype <entrytype(,entrytype2...)>'
Imprimer uniquement les entrées dont le type d'entrée CSL (éventuellement
basé sur une conversion de BibTEX/BibLATEX vers CSL) ne figure pas
parmi les types d'entrées listés.
':filter <predicate>'
N'imprime que les entrées pour lesquelles le prédicat Emacs Lisp donné
renvoie une valeur non nulle.
Chapitre 16 : Travailler avec le code 352
source

16 Travailler avec le code source


Le code source désigne ici tout ensemble d'instructions informatiques en texte clair,
éventuellement accompagnées de commentaires, écrites dans un langage de
programmation lisible par l'homme. Org peut gérer le code source dans un document Org
lorsque le code source est identifié par des marqueurs de début et de fin. Le travail sur
le code source commence par l'identification des blocs de code source. Un bloc de code
source peut être placé presque n'importe où dans un document Org ; il n'est pas limité
au préambule ou à la fin du document. Cependant, Org ne peut pas gérer un bloc de
code source s'il est placé à l'intérieur d'un commentaire Org ou d'une section de largeur
fixe.
Voici un exemple de bloc de code source en langage Emacs Lisp :
#+BEGIN_SRC emacs-lisp
(defun org-xor (a
b)
"Exclusif ou."
(if a (not b)
b))
#+END_SRC
Les blocs de code source sont l'un des nombreux types de blocs Org, qui comprennent
également "center", "com- ment", "dynamic", "example", "export", "quote", "special" et
"verse". Cette section concerne les blocs situés entre '#+BEGIN_SRC' et '#+END_SRC'.
Les sections suivantes décrivent en détail les possibilités offertes par Org pour
travailler avec le code source.

16.1 Aperçu des caractéristiques


Org peut gérer le code source dans le bloc délimité par '#+BEGIN_SRC' . . . #+END_SRC' de
plusieurs façons qui peuvent simplifier les tâches de gestion essentielles à la maintenance
moderne du code source. Org peut éditer, formater, extraire, exporter et publier des blocs
de code source. Org peut également compiler et exécuter un bloc de code source, puis
capturer les résultats. La littérature sur le mode Org fait parfois référence aux blocs de
code source comme étant des blocs de code vivants parce qu'ils peuvent modifier le
contenu du document Org ou le matériel qu'il exporte. Les utilisateurs peuvent contrôler
la "vivacité" de chaque bloc de code source en modifiant les arguments d'en-tête (voir
Section 16.3 [Utilisation des arguments d'en-tête], page 219) pour la compilation,
l'exécution, l'extraction et l'exportation.
Pour éditer et formater un bloc de code source, Org utilise un mode majeur d'Emacs
approprié qui inclut des fonctionnalités spécifiquement conçues pour le code source
dans cette langue.
Org peut extraire un ou plusieurs blocs de code source et les écrire dans un ou
plusieurs fichiers source - un processus connu sous le nom d'enchevêtrement dans la
terminologie de la programmation littéraire.
Pour l'exportation et la publication, les backends d'Org peuvent formater un bloc de
code source de manière appropriée, souvent avec une mise en évidence native de la
syntaxe.
Pour l'exécution et la compilation d'un bloc de code source, l'utilisateur peut
configurer Org pour qu'il sélectionne le compilateur approprié. Org permet de collecter le
résultat de l'exécution ou de la sortie du compilateur, de l'insérer dans le document Org
et/ou de l'exporter. Outre les résultats textuels, Org peut insérer des liens vers d'autres
Chapitre 16 : Travailler avec le code 353
sourcede données, notamment audio, vidéo et graphiques. Org peut également lier un
types
message d'erreur du compilateur à la ligne appropriée du bloc de code source.
Une caractéristique importante de la gestion des blocs de code source d'Org est la
possibilité de passer des variables, des fonctions et des résultats les uns aux autres en
utilisant une syntaxe commune pour les blocs de code source dans n'importe quel
langage. Bien que la plupart des outils de programmation soient limités à
Chapitre 16 : Travailler avec le code 354
source

L'approche agnostique d'Org permet au programmeur averti d'associer chaque tâche de


programmation au langage informatique approprié et de les mélanger dans un seul
document Org. Cette interopérabilité entre les langages explique pourquoi l'outil de
gestion du code source d'Org a été baptisé Org Babel par ses créateurs, Eric Schulte et
Dan Davison.
Le mode Org remplit la promesse d'une vérification et d'une maintenance aisées de
la recherche publiable et reproductible en conservant le texte, les données, le code, les
paramètres de configuration de l'environnement d'exécution, les résultats de l'exécution et
les récits associés, les affirmations, les références et les liens internes et externes dans un
seul document Org.

16.2 Structure des blocs de code


Org propose deux façons de structurer le code source dans les documents Org : dans un
bloc de code source et directement en ligne. Les deux spécifications sont présentées ci-
dessous.
Un bloc de code source se conforme à cette structure :
#+NOM : <nom>
#+BEGIN_SRC <langue> <commutateurs> <arguments d'en-tête>
<body>
#+END_SRC
Ne vous laissez pas décourager par la nécessité de vous souvenir de la syntaxe du
bloc source. Le mode Org offre une commande pour envelopper du texte existant dans
un bloc (voir Section 17.2 [Modèles de structure], page 247). Org fonctionne également
avec d'autres systèmes de complétion d'Emacs, dont certains sont antérieurs à Org et
disposent de langages spécifiques à leur domaine pour définir les modèles. L'utilisation
régulière des modèles réduit les erreurs, augmente la précision et maintient la cohérence.
Un bloc de code en ligne est conforme à cette structure :
src_<language>{<body>}
ou
src_<langue>[<arguments d'en-tête>]{<body>}
'#+NOM : <nom>'
Facultatif. Nomme le bloc source afin qu'il puisse être appelé, comme une
fonction, à partir d'autres blocs source ou de code en ligne pour l'évaluer ou
pour capturer les résultats. Le code provenant d'autres blocs, d'autres
fichiers et de formules de tableaux (voir la section 3.5 [La feuille de calcul],
page 23) peut utiliser le nom pour faire référence à un bloc source. Ce
nommage a la même fonction que le nommage des tables Org. Le mode
Org exige des noms uniques. En cas de noms dupliqués, le comportement
du mode Org est indéfini.
'#+BEGIN_SRC' . . . '#+END_SRC'
Obligatoire. Elles marquent le début et la fin d'un bloc dont Org a besoin. La
ligne '#+BEGIN_SRC' prend des arguments supplémentaires, comme décrit ci-
dessous.
'<langue>'
Obligatoire. Il s'agit de l'identifiant de la langue du code source dans le bloc.
Voir la section 16.9 [Langues], page 239, pour les identifiants des langues
prises en charge.
Chapitre 16 : Travailler avec le code 355
source
'<switches>' (commutateurs)
Facultatif. Les commutateurs permettent un contrôle plus fin de l'exécution
du code, de l'exportation et du for- mat (voir la discussion sur les commutateurs
à la section 12.6 [Exemples littéraux], page 141).
Chapitre 16 : Travailler avec le code 356
source

'<articles d'en-tête>'
Facultatif. Les arguments d'en-tête contrôlent de nombreux aspects de
l'évaluation, de l'exportation et de l'enchevêtrement des blocs de code (voir
Section 16.3 [Utilisation des arguments d'en-tête], page 219). En utilisant les
propriétés d'Org, les arguments d'en-tête peuvent être appliqués
sélectivement à l'ensemble du tampon ou à des sous-arbres spécifiques du
document Org.
'<body>' Code source dans le dialecte de l'identificateur de langue spécifié.

16.3 Utilisation d'arguments d'en-tête


Org est livré avec de nombreux arguments d'en-tête communs à tous les langages. De
nouveaux arguments d'en-tête sont ajoutés pour des langues spécifiques au fur et à
mesure qu'ils sont disponibles pour être utilisés dans les blocs de code source. Un
argument d'en-tête est spécifié par un premier deux-points suivi du nom de l'argument
en minuscules.
Étant donné que les arguments d'en-tête peuvent être définis de plusieurs manières, Org leur
donne la priorité en cas de chevauchement ou de conflit en accordant une priorité plus
élevée aux paramètres locaux. Les valeurs d'en-tête dans les appels de fonction, par
exemple, remplacent les valeurs d'en-tête des valeurs globales par défaut.

Arguments d'en-tête pour l'ensemble du système


Les valeurs des arguments d'en-tête à l'échelle du système peuvent être spécifiées en
personnalisant la variable org-babel- default-header-args, qui prend par défaut les
valeurs suivantes :
: session=> "none"
: results=> "replace"
: exports=> "code"
: cache=> "no"
: noweb=> "non"
: hlines=> "no"
: tangle=> "non"
Les blocs de source en ligne (voir Section 16.2 [Structure des blocs de code], page
218) utilisent des arguments d'en-tête par défaut légèrement différents, définis dans org-
babel-default-inline-header-args :
: session=> "none"
: results=> "replace"
: exports=> "results"
: hlines=> "yes"
La différence la plus notable entre les arguments d'en-tête par défaut pour les blocs
source en ligne et normaux est l'argument ':exports'. Pour les blocs source en ligne, les
résultats de l'évaluation sont exportés par défaut, pas le code.
Contrairement aux valeurs par défaut, les arguments d'en-tête définis à l'aide des
propriétés du mode Org (voir [Arguments d'en-tête dans les propriétés du mode Org],
page 220) s'appliquent à la fois aux blocs source normaux et aux blocs source en ligne.
L'exemple ci-dessous attribue la valeur "yes" aux arguments d'en-tête ':noweb', ce
qui permet à Org de développer les références ':noweb' par défaut.
(setq org-babel-default-header-args
Chapitre 16 : Travailler avec le code 357
source (cons '(:noweb . "yes")
(assq-delete-all :noweb org-babel-default-header-args)))
Chapitre 16 : Travailler avec le code 358
source

Chaque langue peut avoir des arguments d'en-tête par défaut distincts en
personnalisant la variable org-babel-default-header-args:<LANG>, où <LANG> est le
nom de la langue. Pour plus de détails, voir la documentation en ligne spécifique à chaque
langue à l'adresse https://orgmode.org/worg/ org-contrib/babel/.
Arguments d'en-tête dans les propriétés du mode Org
Pour les arguments d'en-tête applicables à la mémoire tampon, utilisez le mot-clé
"PROPERTY" n'importe où dans le fichier Org (voir la section 7.1 [Syntaxe des propriétés],
page 67).
L'exemple suivant fait en sorte que tous les blocs de code R soient exécutés dans la
même session. La valeur "silent" attribuée à ':results' ignore les résultats des
exécutions de tous les blocs, et pas seulement des blocs de code R ; aucun résultat
n'est inséré pour aucun bloc.
#+PROPERTY : header-
args:R :session *R* #+PROPERTY : header-
args :results silent
Les arguments d'en-tête définis par les tiroirs de propriétés d'Org (voir Section 7.1
[Syntaxe des propriétés], page 67) s'appliquent au niveau de la sous-arborescence.
Comme ces tiroirs de propriétés peuvent apparaître n'importe où dans la hiérarchie des
fichiers, Org utilise l'appel ou le bloc source le plus externe pour résoudre les valeurs. Org
ignore le paramètre org-use-property-inheritance.
Dans cet exemple, la valeur par défaut de ':cache' est "yes" pour tous les blocs de code du sous-arbre.
* exemple d'en-tête
:PROPRIÉTÉS :
:header-args: :cache yes
:FIN :
Les propriétés définies par la fonction org-set-property, liée à C-c C-x p,
s'appliquent à toutes les langues actives. Elles remplacent les propriétés définies dans
org-babel-default-header-args.
Les arguments d'en-tête spécifiques à une langue sont également lus à partir des
propriétés "header-args:<LANG>", où <LANG> est l'identifiant de la langue. Par exemple,
la propriété 'header-args:<LANG>' est l'identifiant de la langue,
* En-tête
:PROPRIÉTÉS :
:header-args:clojure : :session *clojure-1*
:header-args:R: :session *R*
:FIN :
** Sous-titre
:PROPRIÉTÉS :
:header-args:clojure : :session *clojure-2*
:FIN :
forcerait des sessions séparées pour les blocs Clojure dans 'Heading' et 'Subheading',
mais utiliserait la même session pour tous les blocs R. Les blocs de "Subheading"
héritent des paramètres de "Heading".
Arguments d'en-tête spécifiques au bloc de code
Les arguments d'en-tête sont le plus souvent définis au niveau du bloc de code source,
sur la ligne '#+BEGIN_SRC'. Les arguments définis à ce niveau sont prioritaires sur ceux
définis dans la variable org-babel-default-header-args, ainsi que sur ceux définis
Chapitre 16 : Travailler avec le code 359
source
en tant que propriétés d'en-tête.
Dans l'exemple suivant, la valeur "silent" attribuée à ':results" permet
d'ignorer les résultats de l'exécution du code. Le réglage de ':exports' sur 'code'
n'exporte que le corps du bloc de code vers HTML ou LATEX.
Chapitre 16 : Travailler avec le code 360
source

#+NAME : factorielle
#+BEGIN_SRC haskell :results silent :exports code :var
n=0 fac 0 = 1
fac n = n * fac (n-1)
#+END_SRC
Les mêmes arguments d'en-tête dans un bloc de code en ligne :
src_haskell[:exports both]{fac 5}
Les arguments d'en-tête de bloc de code peuvent s'étendre sur plusieurs lignes en
utilisant '#+HEADER:' sur chaque ligne. Notez qu'Org accepte actuellement l'orthographe
plurielle de '#+HEADER:' uniquement pour des raisons de compatibilité ascendante. Il
est possible qu'elle soit supprimée à un moment donné.
Arguments d'en-tête multilignes sur un bloc de code sans nom :
#+HEADER : :var data1=1
#+BEGIN_SRC emacs-lisp :var data2=2
(message "data1:%S, data2:%S" data1 data2)
#+END_SRC

#+RESULTS :
: data1:1, data2:2
Arguments d'en-tête sur plusieurs lignes dans un bloc de code nommé :
#+NAME : named-block
#+HEADER : :var
data=2 #+BEGIN_SRC
emacs-lisp
(message "data:%S"
data) #+END_SRC

#+RESULTATS : bloc nommé


: data:2

Arguments d'en-tête dans les appels de fonction


Les arguments d'en-tête dans les appels de fonction sont les plus spécifiques et
remplacent tous les autres paramètres en cas de chevauchement. Ils ont la priorité la
plus élevée. Deux exemples de '#+CALL:' sont présentés ci-dessous. Pour la syntaxe
complète du mot-clé 'CALL', voir Section 16.5 [Evaluation des blocs de code], page 228.
Dans cet exemple, l'argument d'en-tête ':exports results' est appliqué à
l'évaluation de la ligne '#+CALL:'.
#+CALL : factorial(n=5) :exports results
Dans cet exemple, l'argument d'en-tête ':session special' est appliqué à
l'évaluation du bloc de code 'factorial'.
#+Appel : factoriel[:session special](n=5)

16.4 Environnement d'un bloc de code


Chapitre 16 : Travailler avec le code 361
source

Transmission des arguments


Utilisez "var" pour passer des arguments aux blocs de code source. Les spécificités des
variables dans les blocs de code varient selon le langage source et sont traitées dans la
documentation spécifique au langage. La syntaxe de "var" est cependant la même pour
tous les langages. Elle comprend la déclaration d'une variable et l'attribution d'une
valeur par défaut.
La syntaxe suivante est utilisée pour passer des arguments aux blocs de code en
utilisant l'argument d'en-tête "var".
:var NAME=ASSIGN
NOM est le nom de la variable liée dans le corps du bloc de code. ASSIGN est une valeur
littérale, telle qu'une chaîne de caractères, un nombre, une référence à un tableau, une
liste, un exemple littéral, un autre bloc de code - avec ou sans arguments - ou les
résultats de l'évaluation d'un bloc de code. ASSIGN peut spécifier un nom de fichier pour
les références à des éléments dans un fichier différent, en utilisant un " :" pour séparer
le nom de fichier de la référence.
:var NOM=FICHIER:REFERENCE
Voici des exemples de passage de valeurs par
référence : tableTable nommée avec le mot-
clé "NAME".
#+NAME : exemple de tableau
| 1 |
| 2 |
| 3 |
| 4 |

#+NAME : table-length
#+BEGIN_SRC emacs-lisp :var table=example-table
(length table)
#+END_SRC

#+RESULTS : table-length
: 4
Lorsque vous transmettez un tableau, vous pouvez traiter spécialement la
ligne ou la colonne contenant les étiquettes des colonnes ou des lignes du
tableau.
L'argument d'en-tête 'colnames' accepte les valeurs 'yes', 'no' ou 'nil'. La
valeur de défaut est 'nil' : si un tableau d'entrée a des noms de colonnes -
parce que la deuxième ligne est une règle horizontale - alors Org enlève les
noms de colonnes, traite le tableau, remet les noms de colonnes, et écrit
ensuite le tableau dans le bloc de résultats. En utilisant 'yes', Org fait la
même chose pour la première ligne, même si le tableau initial ne contient
pas de règle horizontale. Avec 'no', Org ne traite pas du tout les noms de
colonnes.
#+NAME : less-cols
| a |
|---|
| b |
| c |
Chapitre 16 : Travailler avec le code 362
source

#+BEGIN_SRC python :var tab=less-cols :colnames nil


return [[val + '*' for val in row] for row in tab]
#+END_SRC

#+RESULTS :
| a |
|----|
| b* |
| c* |
De même, l'argument d'en-tête "rownames" peut prendre deux valeurs : 'yes'
ou 'no'. Lorsque la valeur est 'yes', Org enlève la première colonne, traite le
tableau, remet la première colonne, puis écrit le tableau dans le bloc de
résultats. La valeur par défaut est 'no', ce qui signifie qu'Org ne traite pas la
première colonne. Notez que les blocs de code Emacs Lisp ignorent
l'argument d'en-tête 'rownames' en raison de la facilité de traitement des
tableaux dans Emacs.
#+NAME : avec les noms de famille
| un | 1 | 2 | 3 | 4 | 5 |
| deux | 6 | 7 | 8 | 9 | 10 |

#+BEGIN_SRC python :var tab=with-rownames :rownames yes


return [[val + 10 for val in row] for row in tab]
#+END_SRC

#+RESULTS :
| un | 11 | 12 | 13 | 14 | 15 |
| deux | 16 | 17 | 18 | 19 | 20 |

Pour faire référence à une table dans un autre fichier, joignez le nom du fichier et le
nom de la table par deux points, par exemple : ':var table=autre-
fichier.org:exemple-table'.

listeUne simple liste nommée.


#+NAME : liste d'exemples
- simple
- pas
- imbriqué
- liste

#+BEGIN_SRC emacs-lisp :var x=example-list


(print x)
#+END_SRC

#+RESULTS :
| simple | liste |
Notez que seuls les éléments de la liste de premier niveau sont transmis.
Les éléments de liste imbriqués sont ignorés.
Chapitre 16 : Travailler avec le code 363
source

bloc de code sans arguments


Un nom de bloc de code, tel qu'attribué par le mot-clé "NAME" de l'exemple ci-
dessus, éventuellement suivi de parenthèses.
#+BEGIN_SRC emacs-lisp :var length=table-length()
(* 2 length)
#+END_SRC

#+RESULTS :
: 8

bloc de code avec arguments


Un nom de bloc de code, tel qu'attribué par le mot-clé "NAME", suivi de
parenthèses et d'arguments facultatifs transmis entre les parenthèses.
#+NAME : double
#+BEGIN_SRC emacs-lisp :var input=8
(* 2 input)
#+END_SRC

#+RESULTS : double
: 16

#+NAME : carré
#+BEGIN_SRC emacs-lisp :var input=double(input=1)
(* input input)
#+END_SRC

#+RESULTS : squared
: 4

Exemple littéral ou contenu d'un bloc de code


Un bloc de code ou un bloc d'exemple littéral nommé avec un mot-clé
"NAME", suivi de crochets (facultatif pour les blocs d'exemple).
#+NAME : littéral-exemple
#+BEGIN_EXAMPLE
Un exemple
littéral sur deux
lignes
#+END_EXAMPLE

#+NAME : read-literal-example
#+BEGIN_SRC emacs-lisp :var x=literal-example[]
(concaténer #'string x " for you.")
#+END_SRC

#+RESULTS : read-literal-example
: Un exemple concret
: sur deux lignes pour vous.
Chapitre 16 : Travailler avec le code 364
source

L'indexation des valeurs variables permet de faire référence à des parties d'une
variable. Les index sont basés sur 0, les valeurs négatives comptant à rebours à partir de
la fin. Si un index est séparé par des virgules, chaque section suivante est indexée
comme la dimension suivante. Notez que cette indexation intervient avant l'application
d'autres arguments d'en-tête liés au tableau, tels que "hlines", "colnames" et
"rownames". L'exemple suivant affecte la dernière cellule de la première ligne du tableau
"exemple-table" à la variable "data" :
#+NAME : exemple de tableau
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |

#+BEGIN_SRC emacs-lisp :var data=example-table[0,-1]


data
#+END_SRC

#+RESULTS :
: a
Deux entiers séparés par deux points font référence à une plage de valeurs
variables. Dans ce cas, c'est l'ensemble de la plage incluse qui est référencée. Par
exemple, l'exemple suivant attribue les trois lignes du milieu de "tableau-exemple" à
"données".
#+NAME : exemple de tableau
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
| 5 | 3 |

#+BEGIN_SRC emacs-lisp :var data=example-table[1:3]


data
#+END_SRC

#+RESULTS :
| 2 | b |
| 3 | c |
| 4 | d |
Pour sélectionner l'ensemble de la plage, utilisez un index vide ou le caractère
unique "*". Le caractère '0:-1' fait la même chose. L'exemple ci-dessous montre
comment faire référence à la première colonne uniquement.
#+NAME : exemple de tableau
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |

#+BEGIN_SRC emacs-lisp :var data=example-table[,0]


data
Chapitre 16 : Travailler avec le code 365
source

#+END_SRC

#+RESULTS :
| 1 | 2 | 3 | 4 |
Le référencement par index peut être utilisé pour les tableaux et les blocs de code. La
référence à un index peut prendre en charge un nombre illimité de dimensions. Les
virgules délimitent les dimensions multiples, comme indiqué ci-dessous.
#+NAME : 3D
#+BEGIN_SRC emacs-lisp
'(((1 2 3) (4 5 6) (7 8 9))
((10 11 12) (13 14 15) (16 17 18))
((19 20 21) (22 23 24) (25 26 27)))
#+END_SRC

#+BEGIN_SRC emacs-lisp :var data=3D[1,,1]


data
#+END_SRC

#+RESULTS :
| 11 | 14 | 17 |
Notez que les noms de lignes et de colonnes ne sont pas supprimés avant
l'indexation des variables. Vous devez les prendre en compte, même si les arguments
d'en-tête 'colnames' ou 'rownames' les suppriment.
Le code Emacs Lisp peut également définir les valeurs des variables. Pour
différencier une valeur du code Lisp, Org interprète toute valeur commençant par '(', '[',
''' ou '`' comme du code Lisp Emacs. Le résultat de l'évaluation de ce code est alors
assigné à la valeur de cette variable. L'exemple suivant montre comment interroger et
transmettre de manière fiable le nom de fichier du tampon du mode Org à un bloc de
code en utilisant des en-têtes. Nous avons besoin de fiabilité ici parce que le nom du
fichier pourrait changer une fois que le code dans le bloc commence à s'exécuter.
#+BEGIN_SRC sh :var nom-de-fichier=(nom-de-fichier-tampon)
:exports both wc -w $nom-de-fichier
#+END_SRC
Notez que les valeurs lues dans les tableaux et les listes ne sont pas évaluées par
erreur comme du code Emacs Lisp, comme le montre l'exemple suivant.
#+NAME : table
(a b c) | (a b c) | (a b c) | (a b c) | (a b c)

#+HEADER : :var
data=table[0,0] #+BEGIN_SRC
perl
$data
#+END_SRC

#+RESULTS :
: (a b c)
Chapitre 16 : Travailler avec le code 366
source

Utilisation des sessions


Deux blocs de code peuvent partager le même environnement. L'argument d'en-tête
"session" permet d'exécuter plusieurs blocs de code source sous une même session. Org
exécute les blocs de code avec le même nom de session dans le même processus
d'interprétation.
'none' Défaut. Chaque bloc de code reçoit un nouveau processus d'interprétation à
exécuter. Le processus se termine une fois que le bloc est évalué.
STRING Toute chaîne de caractères autre que "none" devient le nom de la session. Par
exemple, ':session STRING' la nomme 'STRING'. Si "session" n'a pas de
valeur, le nom de la session est dérivé de l'identifiant du langage source. Les
blocs suivants ayant le même langage de code source utilisent la même session.
Selon le langage, les variables d'état, le code d'autres blocs et l'environnement
interprété global peuvent être partagés. Certains langages interprétés
prennent en charge les sessions simultanées lorsque les blocs de langage de
code source suivants changent de nom de session.
Seuls les langages qui permettent une évaluation interactive peuvent prendre en
charge les sessions. Tous les langages ne fournissent pas ce support, comme le C et le
ditaa. Même les langages, tels que Python et Haskell, qui supportent l'évaluation
interactive imposent des limitations sur les constructions de langage autorisées qui
peuvent être exécutées de manière interactive. Org hérite de ces limitations pour les
blocs de code qui s'exécutent dans une session.

Choix d'un répertoire de travail


L'argument d'en-tête 'dir' spécifie le répertoire par défaut lors de l'exécution du bloc de
code. S'il est absent, c'est le répertoire associé au tampon courant qui est utilisé. En
d'autres termes, fournir temporairement ':dir DIRECTORY' a le même effet que de
changer le répertoire courant avec M-x cd RET DIRECTORY, puis de ne pas définir 'dir'. En
réalité, 'dir' définit simplement la valeur de la variable Emacs default-directory. La
définition de l'argument d'en-tête 'mkdirp' à une valeur non nulle crée le répertoire, si
nécessaire.
Si l'on associe 'dir' au symbole attach ou à la chaîne "'attach", 'dir' sera le
répertoire renvoyé par (org-attach-dir), ':mkdir yes', et les chemins d'accès aux
fichiers, comme lors de l'utilisation de ':results file', seront insérés sous le répertoire
d'attachement du noeud en utilisant les liens 'attachment:' au lieu des liens 'file:'
habituels. Tout chemin renvoyé en dehors du répertoire des pièces jointes utilisera les
liens "file :" comme d'habitude.
Par exemple, pour enregistrer le fichier de tracé dans le dossier "Work/" du répertoire
personnel - remarquez que le tilde est développé :
#+BEGIN_SRC R :file myplot.png :dir ~/Work
matplot(matrix(rnorm(100), 10), type="l")
#+END_SRC
Pour évaluer le bloc de code sur une machine distante, fournissez un nom de
répertoire distant en utilisant la syntaxe Tramp. Par exemple :
#+BEGIN_SRC R :file plot.png :dir
/scp:dand@yakuba.princeton.edu : plot(1:10,
main=system("hostname", intern=TRUE))
#+END_SRC
Org capture d'abord les résultats textuels comme d'habitude pour les insérer dans le
Chapitre 16 : Travailler avec le code 367
sourceOrg. Ensuite, Org insère également un lien vers le fichier distant, grâce à Emacs
fichier
Tramp. Org construit le chemin distant vers le nom du fichier à partir de 'dir' et du
répertoire par défaut, comme illustré ici :
Chapitre 16 : Travailler avec le code 368
source

[[file:/scp:dand@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
Lorsque 'dir' est utilisé avec 'session', Org définit le répertoire de départ pour une nouvelle session.
Mais Org ne modifie pas le répertoire d'une session déjà existante.
N'utilisez pas 'dir' avec ':exports results' ou avec ':exports both' pour éviter
qu'Org n'insère des liens incorrects vers des fichiers distants. En effet, Org n'étend pas le
répertoire par défaut afin d'éviter certains problèmes de portabilité sous-jacents.

Insertion d'en-têtes et de pieds de page


L'argument d'en-tête "prologue" est destiné à être ajouté au début du bloc de code à
exécuter, comme une instruction de réinitialisation. Par exemple, vous pouvez utiliser
':prologue "reset"' dans un bloc de code Gnuplot ou pour chaque bloc de ce type :
(add-to-list 'org-babel-default-header-args:gnuplot
'((:prologue . "reset")))

De même, la valeur de l'argument d'en-tête "epilogue" est destinée à être ajoutée à


la fin du bloc de code en vue de son exécution.

16.5 Évaluation des blocs de code


Une remarque sur la sécurité : L'évaluation du code s'accompagne d'un risque de
préjudice. Org se prémunit en demandant la permission de l'utilisateur avant d'exécuter
tout code dans le bloc source. Pour personnaliser cette protection, ou la désactiver, voir
Section 17.13 [Sécurité de l'évaluation du code], page 255.

Comment évaluer le code source


Org capture les résultats de l'évaluation du bloc de code et les insère dans le fichier Org,
juste après le bloc de code. Le point d'insertion se situe après une nouvelle ligne et le
mot-clé 'RESULTS'. Org crée le mot-clé 'RESULTS' s'il n'existe pas déjà. Pour plus de
détails, voir la section 16.6 [Résultats de l'évaluation], page 231.
Par défaut, Org n'autorise que l'exécution des blocs de code Emacs Lisp. Voir
Section 16.9 [Languages], page 239 pour activer d'autres langages.
Org propose plusieurs façons d'exécuter les blocs de code. C-c C-c ou C-c C-v e avec le
point sur un bloc de code1 appelle la fonction org-babel-execute-src-block, qui
exécute le code dans le bloc, collecte les résultats et les insère dans le tampon.
En appelant un bloc de code nommé2 à partir d'un tampon de mode Org ou d'une
table. Org peut appeler les blocs de code nommés à partir du tampon du mode Org
actuel ou de la "Bibliothèque de Babel" (voir Section 16.12 [Bibliothèque de Babel], page
244).
La syntaxe du mot-clé "CALL" est la suivante :
#+CALL : <nom>(<arguments>)
#+CALL : <nom>[<arguments d'en-tête internes>](<arguments>) <arguments de fin d'en-
tête>
La syntaxe des blocs de code nommés en ligne est la suivante :
1
L'option org-babel-no-eval-on-ctrl-c-ctrl-c peut être utilisée pour supprimer l'évaluation du code de l'option
Liaison des touches C-c C-c.
2
En fait, les constructions 'call_<name>()' et 'src_<lang>{}' ne sont pas évaluées lorsqu'elles
apparaissent dans un mot-clé (voir Section 17.8 [Paramètres dans la mémoire tampon], page 251).
Chapitre 16 : Travailler avec le code 369
source

... call_<nom>(<arguments>) ...


... call_<nom>[<arguments d'en-tête internes>](<arguments>)[<arguments d'en-tête
fin>] ...
Lorsque la syntaxe inline est utilisée, le résultat est enveloppé en fonction de la
variable org-babel- inline-result-wrap, qui par défaut vaut "=%s=" pour produire
un texte verbatim adapté au balisage.
<nom> Il s'agit du nom du bloc de code (voir section 16.2 [Structure des blocs de code],
page 218) à évaluer dans le document en cours. Si le bloc se trouve dans un
autre fichier, commencez '<nom>' par le nom du fichier suivi de deux points.
Par exemple, pour exécuter un bloc nommé "clear-data" dans "file.org",
vous pouvez écrire ce qui suit :
#+Appel : file.org:clear-data()
<arguments>'
Org transmet des arguments au bloc de code en utilisant la syntaxe
standard des appels de fonction. Par exemple, une ligne '#+CALL:' qui passe
'4' à un bloc de code nommé 'double', qui déclare l'argument d'en-tête ':var
n=2', s'écrirait comme suit :
#+Appel : double(n=4)
Notez que la syntaxe de l'appel de fonction est différente de la syntaxe des
arguments d'en-tête. <articles d'en-tête internes>'
Org transmet les arguments de l'en-tête interne au bloc de code nommé à l'aide de l'en-tête
syntaxe des arguments. Les arguments d'en-tête internes s'appliquent à
l'évaluation du bloc de code. Par exemple, '[:results output]' collecte les
résultats imprimés sur stdout pendant l'exécution du code de ce bloc. Notez
que cette syntaxe d'argument d'en-tête est différente de la syntaxe d'appel
de fonction.
'<fin des arguments de l'en-tête>'
Les arguments d'en-tête de fin affectent les résultats renvoyés par le bloc de
code. Par exemple, ':results html' enveloppe les résultats dans un bloc
'#+BEGIN_EXPORT html' avant d'insérer les résultats dans le tampon Org.

Évaluation du bloc de codes de limites


L'argument d'en-tête "eval" peut limiter l'évaluation de blocs de code spécifiques et du
mot-clé "CALL". Il est utile pour se protéger contre l'évaluation de blocs de code non
fiables en demandant une confirmation.
'yes' Org évalue le code source, en demandant éventuellement la permission conformément à
org-confirm-babel-evaluate.
jamais" ou "non
Org n'évalue jamais le code source.
'query' Org demande à l'utilisateur l'autorisation d'évaluer le code
source. 'never-export' ou 'no-export'
Org n'évalue pas le code source lors de l'exportation, mais l'utilisateur peut évaluer les éléments
suivants
de manière interactive.
'query-export' (requête-exportation)
Org demande à l'utilisateur l'autorisation d'évaluer le code source pendant l'exportation.
Chapitre 16 : Travailler avec le code 370
source

Si l'argument d'en-tête 'eval' n'est pas défini, alors Org détermine s'il faut évaluer le
code source à partir de la variable org-confirm-babel-evaluate (voir Section 17.13
[Sécurité de l'évaluation du code], page 255).

Mise en cache des résultats de l'évaluation


L'argument d'en-tête "cache" permet de mettre en cache les résultats de l'évaluation des
blocs de code. La mise en cache des résultats permet d'éviter de réévaluer un bloc de
code qui n'a pas changé depuis l'exécution précédente. Pour bénéficier du cache et
éviter les évaluations redondantes, le bloc source doit avoir un résultat déjà présent dans
la mémoire tampon, et ni les arguments d'en-tête - y compris la valeur des références
"var" - ni le texte du bloc lui-même n'ont changé depuis le dernier calcul du résultat.
Cette fonctionnalité permet d'éviter les calculs interminables. Toutefois, dans certains cas
particuliers, les résultats mis en cache peuvent ne pas être fiables.
La fonction de mise en cache est optimale lorsque les blocs de code sont des
fonctions pures, c'est-à-dire des fonctions qui renvoient la même valeur pour les mêmes
arguments d'entrée (voir Section 16.4 [Environnement d'un bloc de code], page 221), qui
n'ont pas d'effets secondaires et qui ne dépendent pas de variables externes autres que
les arguments d'entrée. Les fonctions qui dépendent d'une minuterie, d'objets du
système de fichiers et de générateurs de nombres aléatoires ne conviennent
manifestement pas à la mise en cache.
Attention : lorsque la fonction "cache" est utilisée dans une session, la mise en cache
peut entraîner des résultats inattendus.
Lorsque le mécanisme de mise en cache teste les modifications du code source, il
n'étend pas les références de style noweb (voir Section 16.11 [Syntaxe des références
noweb], page 241).
L'argument d'en-tête "cache" peut avoir l'une des deux valeurs suivantes : "yes" ou "no" : 'yes' ou 'no'.
non Valeur par défaut. Pas de mise en cache des résultats ; le bloc de code est évalué à chaque fois.
'yes' La décision d 'exécuter le code ou de renvoyer les résultats mis en cache
est déterminée en comparant la valeur de hachage SHA1 du bloc de code
combiné et des arguments qui lui sont transmis. Cette valeur de hachage est
empaquetée sur la ligne '#+RESULTS:' de l'évaluation précédente. Lorsque les
valeurs de hachage correspondent, Org n'évalue pas le bloc de code.
Lorsque les valeurs de hachage ne correspondent pas, Org évalue le bloc de
code, insère les résultats, recalcule la valeur de hachage et met à jour la
ligne '#+RESULTS:'.
Dans cet exemple, les deux fonctions sont mises en cache. Mais "caller" ne
s'exécute que si le résultat de "random" a changé depuis la dernière exécution.
#+NAME : random
#+BEGIN_SRC R :cache yes
runif(+1)
#+END_SRC

#+RESULTS[a2a72cd647ad44515fab62e144796432793d68e1]: random
0.4659510825295

#+NAME : appelant
#+BEGIN_SRC emacs-lisp :var x=random :cache
yes x
Chapitre 16 : Travailler avec le code 371
source#+END_SRC
Chapitre 16 : Travailler avec le code 372
source

#+RESULTS[bec9c8724e397d5df3b696502df3ed7892fc4f5f]: caller
0.254227238707244

16.6 Résultats de l'évaluation


La manière dont Org gère les résultats de l'exécution d'un bloc de code dépend de
plusieurs arguments d'en-tête qui fonctionnent ensemble. Le principal déterminant,
cependant, est l'argument d'en-tête 'results'. Il accepte quatre classes d'options.
Chaque bloc de code ne peut prendre qu'une seule option par classe :
Collecte Indique comment les résultats doivent être collectés à partir du bloc de code ;
TypePour le type de résultat que le bloc de code renverra ; affecte la
manière dont Org traite et insère les résultats dans la mémoire tampon d'Org
;
Format Pour le résultat ; affecte la façon dont Org traite les
résultats ; Traitement Pour insérer les résultats une fois qu'ils
sont correctement formatés.

Collection
Les options de collecte précisent les résultats. Choisissez l'une des options ; elles sont
mutuellement exclusives.
'value' Valeur par défaut pour la plupart des bibliothèques Babel3 . Mode fonctionnel.
Org obtient la valeur en enveloppant le code dans une définition de fonction
dans le langage du bloc source. C'est pourquoi, lorsqu'on utilise ':results
value', le code doit s'exécuter comme une fonction et renvoyer une valeur.
Pour les langages comme Python, une déclaration de retour explicite est
obligatoire lors de l'utilisation de ':valeur des résultats'. Le résultat est
la valeur renvoyée par la dernière instruction du bloc de code.
Lors de l'évaluation du bloc de code dans une session (voir Section 16.4
[Environnement d'un bloc de code], page 221), Org transmet le code à un
interpréteur fonctionnant comme un processus inférieur interactif d'Emacs.
Org obtient la valeur de la sortie de la dernière déclaration de l'interpréteur
du code source. Org doit utiliser des méthodes spécifiques au langage pour
obtenir la valeur. Par exemple, à partir de la variable _ en Ruby, et de la
valeur de .Last.value en R.
'output' Mode de script. Org transmet le code à un processus externe qui exécute
l'inter- preur. Org renvoie le contenu du flux de sortie standard sous forme
de résultats textuels. Lors de l'utilisation d'une session, Org transmet le code
à l'interpréteur s'exécutant en tant que session.
processus inférieur interactif d'Emacs. Org concatène toute sortie de texte provenant de la
commande
et renvoie la collection comme résultat.
Type
Type indique les types de résultats à attendre de l'exécution du bloc de code. Choisissez
l'une des options ; elles s'excluent mutuellement.
Le comportement par défaut consiste à déterminer automatiquement le type de
résultat. La détection du type de résultat dépend du langage du bloc de code, comme
Chapitre 16 : Travailler avec le code 373
sourcedans la documentation des différents langages. Voir Section 16.9 [Langages], page
décrit
239.
3
En fait, les constructions 'call_<name>()' et 'src_<lang>{}' ne sont pas évaluées lorsqu'elles
apparaissent dans un mot-clé (voir Section 17.8 [Paramètres dans la mémoire tampon], page 251).
Chapitre 16 : Travailler avec le code 374
source

table
'vector' Interpréter les résultats comme un tableau Org. Si le résultat est une valeur
unique, créez un tableau avec une ligne et une colonne. Exemple
d'utilisation : ':results value table'. Entre chaque ligne du tableau ou sous
les titres du tableau, les résultats ont parfois
les lignes horizontales, également appelées "hlines". L'argument "hlines",
avec la valeur par défaut "no", supprime ces lignes de la table d'entrée. Pour
la plupart des codes, c'est souhaitable, sinon ces symboles "hline"
provoquent des erreurs de variables non liées. La valeur "yes" accepte ces
lignes, comme le montre l'exemple suivant.
#+NOM : many-cols
| a | b | c |
|---+---+---|
| d | e | f |
|---+---+---|
| g | h | i |

#+NAME : no-hline
#+BEGIN_SRC python :var tab=many-cols :hlines no
return tab
#+END_SRC

#+RESULTS : no-hline
| a | b | c |
| d | e | f |
| g | h | i |

#+NAME : hlines
#+BEGIN_SRC python :var tab=many-cols :hlines yes
return tab
#+END_SRC

#+RESULTATS : hlines
| a | b | c |
|---+---+---|
| d | e | f |
|---+---+---|
| g | h | i |
'list' Interpréter les résultats comme une liste Org. Si le résultat est une valeur unique,
créer une liste d'un seul élément.
scalaire
"
"verbati Interpréter littéralement et insérer comme texte cité. Ne pas créer de tableau.
m Exemple d'utilisation : ':results value verbatim'.
'file' Interpréter comme un nom de fichier. Enregistrez les résultats de l'exécution du
bloc de code dans ce fichier, puis insérez un lien vers celui-ci. Vous pouvez
contrôler à la fois le nom du fichier et la description associée au lien.
Chapitre 16 : Travailler avec le code 375
source

Org essaie d'abord de générer le nom de fichier à partir de la valeur de


l'argument d'en-tête 'file' et du répertoire spécifié à l'aide des arguments d'en-
tête 'output-dir'. Si 'output-dir' n'est pas spécifié, Org considère qu'il s'agit
du répertoire courant.
#+BEGIN_SRC asymptote :résultats valeur fichier :fichier circle.pdf
:output-dir img/ size(2cm) ;
draw(unitcircle) ;
#+END_SRC
Si l'argument d'en-tête 'file' est manquant, Org génère le nom de base du
fichier de sortie à partir du nom du bloc de code, et son extension à partir de
l'argument d'en-tête 'file-ext'. Dans ce cas, le nom et l'extension sont
obligatoires.
#+nom : cercle
#+BEGIN_SRC asymptote :résultats valeur fichier :fichier-
ext pdf taille(2cm) ;
draw(unitcircle) ;
#+END_SRC
L'argument d'en-tête "file-desc" définit la description (voir section 4.1 [Format
des liens], page 38) du lien. Si "file-desc" est présent mais n'a pas de
valeur, la valeur "file" est utilisée comme description du lien. Si cet
argument n'est pas présent, la description est omise. Si vous souhaitez
fournir l'argument "file-desc" mais omettre la description, vous pouvez le
fournir avec un vecteur vide (c'est-à-dire :file-desc []).
Par défaut, Org suppose qu'un tableau écrit dans un fichier est délimité par
des tabulations. Vous pouvez choisir un séparateur différent avec l'argument
d'en-tête 'sep'.
L'argument d'en-tête 'file-mode' définit les permissions du fichier. Pour le
rendre exécutable, utilisez ':file-mode (identity #o755)'.
#+BEGIN_SRC shell :results file :file script.sh :file-mode (identity
#o755) echo "#!/bin/bash"
echo "echo Hello World"
#+END_SRC

Format
Le format concerne le type de résultat renvoyé par le bloc de code. Choisissez l'une des
options ; elles s'excluent mutuellement. La valeur par défaut découle du type spécifié ci-
dessus.

'code' Résultat inclus dans un bloc de code. Utile pour l'analyse syntaxique. Exemple
d'utilisation : ':results value code'.
'drawer' Résultat enveloppé dans un tiroir 'RESULTS'. Utile pour contenir des résultats
"bruts" ou "org" en vue d'un script ultérieur et d'un traitement automatisé.
Exemple d'utilisation : ':results value drawer'.
'html' Résultats inclus dans un bloc 'BEGIN_EXPORT html'. Exemple d'utilisation :
':results value html'.
'latex' Résultats inclus dans un bloc 'BEGIN_EXPORT latex'. Exemple d'utilisation :
':results value latex'.
Chapitre 16 : Travailler avec le code 376
source

lien"
"graphiqu
e Lorsqu'il est utilisé avec le type 'file', le résultat est un lien vers le fichier
spécifié dans l'argument d'en-tête ':file'. Cependant, contrairement au type
"file", la sortie du bloc de code n'est pas écrite sur le disque. Le bloc est
censé générer le fichier uniquement par ses effets secondaires, comme
dans l'exemple suivant :
#+begin_src shell :results file link :file "org-mode-unicorn.svg"
wget -c "https://orgmode.org/resources/img/org-mode-unicorn.svg"
#+end_src

#+RESULTS :
[[file:org-mode-unicorn.svg]]
'org' Résultats inclus dans un bloc 'BEGIN_SRC org'. Pour l'échappement de la
virgule, il faut soit utiliser la touche TAB dans le bloc, soit exporter le
fichier. Exemple d'utilisation : ':results value org'.
Résultat 'pp' converti en code source 'pretty-print'. Encadré dans un bloc
de code. Langages supportés : Emacs Lisp, Python et Ruby. Exemple
d'utilisation : ':results value pp'.
'raw' Interprété comme un mode Org brut. Inséré directement dans la mémoire
tampon. Aligné s'il s'agit d'un tableau. Exemple d'utilisation : ':results
value raw'.
L'argument d'en-tête 'wrap' marque inconditionnellement le bloc de résultats en
ajoutant des chaînes à '#+BEGIN_' et '#+END_'. Si aucune chaîne de caractères n'est
spécifiée, Org regroupe les résultats dans un bloc '#+BEGIN_results' . . .
#+END_results'. Ce bloc a la priorité sur la valeur "results" mentionnée ci-dessus.
Par exemple,
#+BEGIN_SRC emacs-lisp :results html :wrap EXPORT markdown
"<blink>Bienvenue dans les années 90</blink>"
#+END_SRC

#+RESULTS :
#+BEGIN_EXPORT markdown
<blink>Bienvenue dans les années 90</blink>
#+END_EXPORT

Manipulation
Options de traitement après la collecte des résultats. Choisissez l'une des options ; elles
s'excluent mutuellement.
'replace' Défaut. Insère les résultats dans le tampon Org. Supprime les résultats
précédents. Exemple d'utilisation : ':results output replace'.
'silencieux' Ne pas insérer les résultats dans le tampon du mode Org, mais les répercuter dans le
minibuffer.
Exemple d'utilisation : ':results output silent'.
'none' Calcule les résultats, mais n'en fait rien. Pas d'insertion dans le tampon du mode
Chapitre 16 : Travailler avec le code 377
source

Org ni d'écho dans le minibuffer. Les résultats peuvent toujours être utilisés
lorsqu'ils sont référencés à partir d'un autre bloc de code. Exemple
d'utilisation : ':results none'.
Chapitre 16 : Travailler avec le code 378
source

'discard' Ignorer complètement les résultats. Cette option est similaire à "none", mais
aucun traitement n'est effectué sur la valeur de retour. L'appel du bloc de
code par programme (voir [Comment évaluer le code source], page 228) ou
par référence (voir [Passer des arguments], page 221 et Section 16.11
[Syntaxe de référence Noweb], page 241) produira toujours un résultat nul.
append' Ajoute les résultats au tampon Org. Les derniers résultats sont en bas. Ne
supprime pas les résultats précédents. Exemple d'utilisation : ':results
output append'.
'prepend' Ajouter les résultats au tampon Org. Les résultats les plus récents sont placés
en tête de liste. Ne supprime pas les résultats précédents. Exemple
d'utilisation : ':results output prepend'.

Post-traitement
L'argument d'en-tête 'post' sert à post-traiter les résultats de l'évaluation du bloc. Quand
'post' a une valeur quelconque, Org lie les résultats à *cette* variable pour faciliter le
passage aux spécifications de l'argument d'en-tête 'var' (voir Section 16.4 [Environnement
d'un bloc de code], page 221). Cela rend les résultats disponibles pour d'autres blocs de
code, ou même pour l'exécution directe de code Emacs Lisp.
Les deux exemples suivants illustrent l'argument d'en-tête "post" en action. Le
premier montre comment attacher un mot-clé 'ATTR_LATEX' en utilisant 'post'.
#+NAME : attr_wrap
#+BEGIN_SRC sh :var data="" :var width="\Ntextwidth" :results output
echo "#+ATTR_LATEX : :width $width"
echo "$data"
#+END_SRC

#+HEADER : :file /tmp/it.png


#+BEGIN_SRC dot :post attr_wrap(width="5cm", data=*this*) :results
drawer digraph{
a -> b ;
b -> c ;
c -> a ;
}
#+end_src

#+RESULTS :
RESULTATS :
#+ATTR_LATEX :largeur
5cm
[[file:/tmp/it.png]]
:FIN :
Le deuxième exemple montre l'utilisation de l'argument d'en-tête "colnames" dans
"post" pour transmettre des données entre les blocs de code.
#+NAME : round-tbl
#+BEGIN_SRC emacs-lisp :var tbl="" fmt="%.3f"
(mapcar (lambda (row)
(mapcar (lambda (cell)
(si (nombrep cellule)
Chapitre 16 : Travailler avec le code 379
source

(format fmt cell)


cell))
rangée))
tbl)
#+end_src

#+BEGIN_SRC R :colnames yes :post round-tbl[:colnames yes](*this*)


set.seed(42)
data.frame(foo=rnorm(1))
#+END_SRC

#+RESULTS :
|foo |
|------------|
| 1.371 |

16.7 Exportation de blocs de code


Il est possible d'exporter le code des blocs de code, les résultats de l'évaluation des
blocs de code, à la fois le code et les résultats de l'évaluation des blocs de code, ou rien
du tout. Org exporte par défaut le code pour la plupart des langues et les résultats pour
les blocs de code en ligne. Pour certains langages, comme ditaa, Org exporte par défaut
les résultats à la fois dans les blocs de source ordinaires et dans les blocs de source en
ligne. Pour exporter uniquement le corps des blocs de code, voir Section 12.6
[Exemples littéraux], page 141. Pour exporter sélectivement des sous-arbres d'un
document Org, voir Chapitre 13 [Exportation], page 147.
L'argument d'en-tête "exports" permet de spécifier si cette partie du fichier Org est
exportée vers, par exemple, les formats HTML ou LATEX.
'code' La valeur par défaut. Le corps du code est inclus dans le fichier exporté. Exemple
: ':exports code'.
Le résultat de l'évaluation du code est inclus dans le fichier exporté. Exemple :
':exports results'.
'both' Le code et les résultats de l'évaluation sont tous deux inclus dans le fichier
exporté. Ex- ample : ':exports both'.
'none' Ni le code ni les résultats de l'évaluation ne sont inclus dans le fichier exporté.
L'évaluation du code dépend des autres options. Exemple : ':exports none'.
Si un bloc source est nommé à l'aide du mot-clé "NOM", le même nom sera attribué
aux résultats de l'évaluation. De cette manière, les liens flous pointant vers les blocs
sources nommés exportés à l'aide de ':exports results' resteront valides et pointeront
vers les résultats de l'évaluation.
Les résultats de l'évaluation d'un bloc nommé peuvent également être nommés
explicitement à l'aide d'un mot-clé "NAME" distinct. La valeur du nom définie par le mot-clé
"NAME" sera préférée au bloc source parent.
#+NAME : nom de code
#+BEGIN_SRC emacs-lisp :exports both
value (+ 1 2)
Chapitre 16 : Travailler avec le code 380
source

#+END_SRC

#+NAME : nom des


résultats #+RESULTS
: nom du code 3

Ce [[nom du code][lien]] pointera vers le bloc de code.


Un autre [[nom des résultats][lien]] pointera vers les
résultats.
La définition explicite du nom du résultat peut être nécessaire lorsqu'un bloc de code
nommé est exporté à l'aide de ':exports both'. Les liens vers ce bloc peuvent
arbitrairement pointer soit vers le bloc de code, soit vers ses résultats lorsque ces
derniers n'ont pas de nom distinct.
Notez que tous les liens pointant vers un bloc source exporté à l'aide de ':exports
none' seront brisés. Cela fera échouer le processus d'exportation, à moins que les liens
brisés ne soient autorisés pendant l'exportation (voir Section 13.2 [Paramètres
d'exportation], page 148).
Pour empêcher Org d'évaluer les blocs de code pour accélérer les exportations,
utilisez l'argument d'en-tête ':eval never-export' (voir Section 16.5 [Évaluation des
blocs de code], page 228). Pour empêcher Org d'évaluer les blocs de code pour plus de
sécurité, mettez la variable org-export-use-babel à nil, mais comprenez que les
arguments d'en-tête n'auront aucun effet.
La désactivation de l'évaluation s'avère utile lors du traitement par lots. Par exemple,
les langages de balisage pour les wikis, qui présentent un risque élevé de code non fiable.
L'arrêt de l'évaluation du bloc de code arrête également l'évaluation de tous les arguments
d'en-tête du bloc de code. Cela peut ne pas être souhaitable dans certaines
circonstances. Ainsi, lors de l'exportation, pour permettre l'évaluation des seuls
arguments d'en-tête mais pas l'évaluation du code dans le bloc source, définissez ':eval
never-export' (voir Section 16.5 [Évaluation des blocs de code], page 228).
Org n'évalue jamais les blocs de code dans les sous-arbres commentés lors de
l'exportation (voir Section 13.6 [Lignes de commentaires], page 155). D'un autre côté, Org
évalue les blocs de code dans les sous-arbres exclus de l'exportation (voir Section 13.2
[Paramètres d'exportation], page 148).

16.8 Extraction du code source


L'extraction du code source à partir des blocs de code est une tâche fondamentale de la
programmation lettrée. Org dispose de fonctionnalités qui facilitent cette tâche. Dans le
jargon de la programmation lettrée, les documents sont tissés avec du code et de la
documentation lors de leur création, et lors de leur exportation, le code est enchevêtré
pour être exécuté par un ordinateur. Org facilite le tissage et l'enchevêtrement pour la
production, la maintenance, le partage et l'exportation de documents de programmation
lettrée. Org offre des options de personnalisation étendues pour l'extraction du code
source.
Lorsque Org enchevêtre des blocs de code, il les développe, les fusionne et les
transforme. Ensuite, Org les recompose en un ou plusieurs fichiers séparés, comme
configuré dans les options. Durant ce processus d'enchevêtrement, Org développe les
variables dans le code source, et résout toutes les références de style noweb (voir
Section 16.11 [Syntaxe de référence noweb], page 241).
Chapitre 16 : Travailler avec le code 381
source
Arguments d'en-tête
L'argument d'en-tête 'tangle' spécifie si le bloc de code est exporté vers le(s) fichier(s)
source(s). 'yes' Exporter le bloc de code vers un fichier source. Le nom du fichier
source est dérivé
à partir du nom du fichier Org, et l'extension du fichier est dérivée de la source
identifiant du langage de code. Exemple : ':tangle yes'.
Chapitre 16 : Travailler avec le code 382
source

no' La valeur par défaut. Ne pas extraire le code dans un fichier de code source.
Exemple : ':tangle no'.
NOM DE FICHIER
Exporter le bloc de code dans un fichier source dont le nom de fichier est
dérivé de toute chaîne passée à l'argument d'en-tête 'tangle'. Org dérive le
nom du fichier comme étant relatif au répertoire de l'emplacement du fichier
Org. Exemple : ':tangle FILENAME'.
L'argument d'en-tête 'mkdirp' crée des répertoires parents pour les fichiers
enchevêtrés si le répertoire n'existe pas. La valeur "yes" active la création de
répertoires, tandis que la valeur "no" l'inhibe.
L'argument d'en-tête "comments" permet d'insérer des commentaires dans les fichiers
enchevêtrés. Ces commentaires s'ajoutent à ceux qui existent déjà dans le bloc de
code.
no' La valeur par défaut. N'insère pas de commentaires supplémentaires pendant
l'enchevêtrement.
Enrouler le bloc de code dans les commentaires. Inclure des liens pointant
vers l'endroit du fichier Org à partir duquel le code a été enchevêtré.
'yes' Conservé pour des raisons de compatibilité ascendante ; identique à 'link'.
'org'Le texte du titre le plus proche du fichier Org est inséré en tant que
commentaire. Le texte exact qui est inséré est choisi dans le contexte
principal du bloc source.
'both' Inclut les options 'link' et 'org'.
'noweb' Inclut l'option 'link', développe les références noweb (voir Section 16.11
[Syntaxe de référence noweb], page 241), et les insère dans des
commentaires de lien à l'intérieur du corps du bloc de code.
L'argument d'en-tête "padline" contrôle l'insertion de nouvelles lignes pour remplir le
code source dans le fichier enchevêtré.
'yes' Défaut. Insérer une nouvelle ligne avant et après chaque bloc de code
dans le fichier enchevêtré. 'no' Ne pas insérer de nouvelles lignes pour remplir les
blocs de code enchevêtrés.
L'argument d'en-tête 'shebang' peut transformer les résultats en fichiers de script
exécutables. En lui donnant la valeur d'une chaîne de caractères - par exemple,
':shebang "#!/bin/bash"'- Org insère cette chaîne de caractères comme première
ligne du fichier enchevêtré dans lequel le bloc de code est extrait. Org active ensuite
l'autorisation d'exécution du fichier enchevêtré.
L'argument d'en-tête 'tangle-mode' spécifie les permissions à définir pour les fichiers
enchevêtrés par set-file-modes. Les permissions sont données par une valeur octale, qui
peut être fournie en appelant la fonction identity sur une valeur octale elisp. Par
exemple, pour créer un fichier en lecture seule, on peut utiliser ':tangle-mode (identity
#o444)'. Pour réduire la verbosité nécessaire, un raccourci octal est défini, 'oXXX' ('o' pour
octal). En utilisant cette abréviation, notre exemple en lecture seule est ':tangle-mode
o444'. L'omission du préfixe 'o' entraîne l'interprétation de l'argument comme un entier,
ce qui peut conduire à des résultats inattendus ('444' est la même chose que 'o674').
Deux autres raccourcis sont reconnus : les chaînes de style ls comme "rw-r--r--", et
les permissions de style chmod comme "g+w". Notez que les permissions de style chmod
Chapitre 16 : Travailler avec le code 383
source
sont basées sur org-babel-tangle-default-file-mode, qui est '#o544' par défaut.
Lorsque ':tangle-mode' et ':shebang' sont tous deux spécifiés, le paramètre
':tangle-mode' a priorité sur les autorisations de ':shebang'. Lorsque plusieurs blocs de
code source s'enchevêtrent dans un seul fichier avec des arguments d'en-tête ':tangle-
mode' contradictoires, le comportement d'Org est indéfini.
Chapitre 16 : Travailler avec le code 384
source

Par défaut, Org développe les blocs de code lors de l'enchevêtrement. L'argument
d'en-tête 'no-expand' désactive ces expansions. Notez qu'un effet de bord de
l'expansion par org-babel-expand- src-block assigne aussi des valeurs (voir Section
16.4 [Environnement d'un bloc de code], page 221) aux variables. Les expansions
remplacent aussi les références noweb par leurs cibles (voir Section 16.11 [Syntaxe des
références noweb], page 241). Certaines de ces expansions peuvent entraîner une
affectation prématurée, d'où cette option. Cette option ne fait une différence que pour
l'enchevêtrement. Elle n'a aucun effet lors de l'exportation puisque les blocs de code à
exécuter doivent être étendus de toute façon.
Fonctions
org-babel-tangle
Enchevêtrer le fichier en cours. Lié à C-c C-v t.
Avec l'argument du préfixe, seul le bloc de code en cours est enchevêtré.
org-babel-tangle-file
Choisissez un fichier à enchevêtrer. Lié à C-c C-v f.
Crochets d'enchevêtrement
org-babel-pre-tangle-hook
Ce crochet est exécuté avant le début du processus d'enchevêtrement. Le
tampon actif est le tampon à emmêler.
org-babel-tangle-corps-crochet
Ce crochet est exécuté à partir d'un tampon temporaire contenant le code
étendu de chaque bloc de code enchevêtré. Le crochet peut modifier le code
développé si nécessaire. Le contenu du tampon actuel sera utilisé pour
l'expansion réelle du bloc de code.
org-babel-post-tangle-hook
Ce crochet est exécuté à partir des fichiers de code enchevêtrés par org-
babel-tangle, ce qui le rend adapté au post-traitement, à la compilation et à
l'évaluation du code dans les fichiers enchevêtrés.
org-babel-tangle-finished-hook
Ce crochet est exécuté après les crochets post-tangle, dans le tampon d'origine.
Sauter entre le code et Org
Les débogueurs renvoient normalement les erreurs et les messages au code source. Mais
pour les fichiers enchevêtrés, nous voulons renvoyer au fichier Org, et non au fichier
source enchevêtré. Pour faire ce saut supplémentaire, Org utilise la fonction org-babel-
tangle-jump-to-org avec deux arguments supplémentaires d'en-tête de bloc de code
source :
1. Régler 'padline' sur true - c'est le réglage par défaut.
2. Définissez 'comments' à 'link', ce qui permet à Org d'insérer des liens vers le fichier Org.

16.9 Langues
Les blocs de code sont pris en charge dans des dizaines de langues. Voir le site web de
Worg pour la documentation spécifique à chaque langue.
Par défaut, seul Emacs Lisp est activé pour l'évaluation. Pour activer ou désactiver
d'autres langues, il faut personnaliser la variable org-babel-load-languages, soit par
l'interface de configuration d'Emacs, soit en ajoutant du code au fichier init, comme
Chapitre 16 : Travailler avec le code 385
source ci-dessous.
indiqué
Chapitre 16 : Travailler avec le code 386
source

Dans cet exemple, l'évaluation est désactivée pour Emacs Lisp et activée pour R.
(org-babel-do-load-languages
'org-babel-load-languages
'((emacs-lisp . nil)
(R . t)))
Notez que ce n'est pas la seule façon d'activer une langue. Org active également les
langages lorsqu'ils sont chargés avec l'instruction require. Par exemple, l'exemple
suivant active l'exécution des blocs de code Clojure :
(require 'ob-clojure)

16.10 Édition du code source


Utilisez C-c ' pour éditer le bloc de code actuel. Cela ouvre un nouveau tampon d'édition
en mode majeur contenant le corps du bloc de code source, prêt à être édité. Utilisez à
nouveau C-c ' pour fermer le tampon et revenir au tampon Org.
C-x C-s sauvegarde le tampon et met à jour le contenu du tampon Org. Définir org-
edit- src-auto-save-idle-delay pour sauvegarder le tampon de base après un
certain délai d'inactivité. Définir org-edit-src-turn-on-auto-save pour sauvegarder
automatiquement ce tampon dans un fichier séparé en utilisant le mode Auto- save.
Pendant l'édition du code source en mode majeur, le mode mineur Org Src reste actif. Il
fournit les variables de personnalisation décrites ci-dessous. Pour plus de variables,
consultez le groupe de personnalisation org-edit-structure.
org-src-lang-modes
Si un mode majeur Emacs nommé <LANG>-mode existe, où <LANG> est
l'identifiant de langue de la ligne d'en-tête du bloc de code, alors le tampon
d'édition utilise ce mode majeur. Cette variable permet de faire correspondre
arbitrairement les identifiants de langue aux modes principaux.
org-src-window-setup
Pour spécifier la disposition de la fenêtre Emacs lorsque le nouveau tampon d'édition est créé.
org-src-preserve-indentation
La valeur par défaut est nil. Le code source est indenté. Cette indentation
s'applique lors de l'exportation ou de l'enchevêtrement et, selon le contexte,
peut modifier les espaces et les tabulations. Si la valeur n'est pas nulle, le
code source est aligné sur la colonne la plus à gauche. Aucune ligne n'est
modifiée lors de l'exportation ou de l'enchevêtrement, ce qui est très utile pour
les langages sensibles à l'espacement, comme Python.
org-src-ask-before-returning-to-edit-buffer
S'il est nul, Org retourne au tampon d'édition sans autre demande. Par
défaut, une confirmation est demandée.
Attribuez la valeur non-nil à org-src-fontify-natively pour activer la
fontification du code natif dans le tampon Org. La fontification des blocs de code permet
de séparer visuellement le texte et le code sur la page d'affichage. Pour personnaliser
davantage l'apparence de l'org-block pour des langues spécifiques, personnalisez org-
src-block-faces. L'exemple qui suit nuance l'arrière-plan des blocs ordinaires et colore
les blocs source uniquement pour les langages Python et Emacs Lisp.
Chapitre 16 : Travailler avec le code 387
source

(require 'color)
(set-face-attribute 'org-block nil :background
(couleur-nom sombre
(face-attribute 'default :background) 3))

(setq org-src-block-faces '(("emacs-lisp" (:background "#EEE2FF"))


("python" (:background "#E5FFB8"))))

16.11 Syntaxe de référence Noweb


Les blocs de code source peuvent inclure des références à d'autres blocs de code source,
en utilisant une syntaxe de type noweb :4
<<CODE-BLOCK-ID>>
où CODE-BLOCK-ID fait référence soit au 'NOM' d'un seul bloc de code source, soit à une
collection d'un ou plusieurs blocs de code source partageant le même argument d'en-tête
'noweb-ref' (voir Section 16.3 [Utilisation des arguments d'en-tête], page 219). Org peut
remplacer ces références par le code source du ou des blocs référencés, ou, dans le
cas d'un seul bloc de code source nommé avec 'NAME', par les résultats d'une évaluation
de ce bloc.
L'argument d'en-tête 'noweb' contrôle l'expansion des références syntaxiques noweb. Les
expansions se produisent lorsque les blocs de code source sont évalués, enchevêtrés ou
exportés.
non Valeur par défaut. Pas d'expansion des références syntaxiques noweb dans le
corps du code lors de l'évaluation, de l'enchevêtrement ou de l'exportation.
'yes' Expansion des références syntaxiques noweb dans le corps du bloc de code
lors de l'évaluation, de l'enchevêtrement ou de l'exportation.
'tangle' Expansion des références syntaxiques noweb dans le corps du bloc de code
lors de l'enchevêtrement. Pas d'expansion lors de l'évaluation ou de
l'exportation.
"strip-tangle" (enchevêtrement de bandes)
Expansion des références syntaxiques noweb dans le corps du bloc de code
lors de l'évaluation ou de l'exportation. Supprime les références syntaxiques
noweb lors de l'exportation.
pas
d'exportat Expansion des références syntaxiques noweb dans le corps du bloc de code
lors de l'évaluation ou de l'enchevêtrement. Pas d'expansion lors de
ion
l'exportation.
strip-export
Expansion des références syntaxiques noweb dans le corps du bloc de code
lors de l'expansion avant l'évaluation ou l'enchevêtrement. Suppression des
références syntaxiques noweb lors de l'exportation.
'eval' Expansion des références syntaxiques noweb dans le corps du bloc de code
uniquement avant l'évaluation.
Dans le cas le plus simple, le contenu d'un seul bloc source est inséré dans d'autres
blocs. Ainsi, dans l'exemple suivant,
Chapitre 16 : Travailler avec le code 388
source

4
Pour plus de détails sur la programmation de noweb literate, voir https://www.cs.tufts.edu/~nr/noweb/.
Chapitre 16 : Travailler avec le code 389
source

#+NAME :
initialisation
#+BEGIN_SRC emacs-lisp
(setq sentence "Jamais un pied de trop,
même") #+END_SRC

#+BEGIN_SRC emacs-lisp :noweb yes


<<initialisation>>
(phrase inversée)
#+END_SRC
le deuxième bloc de code est développé comme suit
#+BEGIN_SRC emacs-lisp :noweb yes
(setq phrase "Jamais un pied de trop, même")
(phrase inverse)
#+END_SRC
Vous pouvez également inclure le contenu de plusieurs blocs partageant un
argument d'en-tête 'noweb-ref' commun, qui peut être défini au niveau du fichier, du
sous-arbre ou du bloc de code. Dans l'exemple de fichier Org suivant, le corps du code
source de chaque bloc est extrait pour être concaténé dans un fichier de code pur lorsqu'il
est enchevêtré.
#+BEGIN_SRC sh :tangle yes :noweb yes :shebang #!/bin/sh
<<fullest-disk>>
#+END_SRC
* le point de montage du disque le plus plein
:PROPRIÉTÉS :
:header-args : :noweb-ref fullest-disk
:FIN :

** interroge tous les disques


montés #+BEGIN_SRC sh
df \N-
#+END_SRC

** dépouiller la ligne
d'en-tête #+BEGIN_SRC sh
|sed '1d'
\N-END_SRC

** point de montage de sortie du disque le


plus plein #+BEGIN_SRC sh
|awk '{if (u < +$5) {u = +$5 ; m = $6}} END {print m}'
#+END_SRC
Par défaut, une nouvelle ligne sépare chaque concaténation de référence noweb.
Pour utiliser un séparateur différent, modifiez l'argument d'en-tête 'noweb-sep'.
Org peut également inclure les résultats de l'évaluation d'un seul bloc de code plutôt
que son corps. L'évaluation a lieu lorsque des parenthèses, comprenant éventuellement
des arguments, sont ajoutées au nom du bloc de code, comme indiqué ci-dessous.
Chapitre 16 : Travailler avec le code 390
source

<<NOM(arguments facultatifs)>>
Notez que dans ce cas, un nom de bloc de code défini par le mot-clé "NAME" est
nécessaire ; la référence définie par "noweb-ref" ne fonctionnera pas lorsque
l'évaluation est souhaitée.
Voici un exemple qui montre comment le contenu exporté change lorsque les
références de style noweb sont utilisées avec des parenthèses ou sans. Étant donné.. :
#+NAME : some-code
#+BEGIN_SRC python :var num=0 :résultats output :exports none
print(num*10)
#+END_SRC
ce bloc de code :
#+BEGIN_SRC text :noweb yes
<<some-code>>
#+END_SRC
s'étend à :
print(num*10)
Ci-dessous, une référence de style noweb similaire est utilisée, mais avec des
parenthèses, tout en fixant une variable "num" à 10 :
#+BEGIN_SRC text :noweb yes
<<some-code(num=10)>>
#+END_SRC
Notez que l'expansion contient maintenant les résultats du bloc de code "some-code", et
non le bloc de code lui-même :
100
Les insertions noweb respectent les caractères de préfixe qui apparaissent avant la
référence syntaxique noweb. Ce comportement est illustré dans l'exemple suivant. Comme
la référence noweb '<<exemple>>' apparaît derrière la syntaxe de commentaire SQL,
chaque ligne de la référence noweb développée est commentée. Avec :
#+NAME : exemple
#+BEGIN_SRC text
this is the
corps de l'exemple sur
plusieurs lignes #+END_SRC
ce bloc de code :
#+BEGIN_SRC sql :noweb yes
---<<exemple>>
#+END_SRC
s'étend à :
#+BEGIN_SRC sql :noweb yes
---il s'agit de la
---corps de l'exemple sur
plusieurs lignes #+END_SRC
Comme ce changement n'affecte pas le texte de remplacement de noweb qui ne
comporte pas de nouvelles lignes, les références noweb en ligne sont acceptables.
Chapitre 16 : Travailler avec le code 391
source

Cette fonctionnalité peut également être utilisée pour gérer l'indentation dans les extraits de code
exportés.
Avec :
#+NAME : if-true
#+BEGIN_SRC python :exports none
print('do things when true')
#+end_src

#+nom : if-false
#+begin_src python :exports none
print('do things when false')
#+end_src
ce bloc de code :
#+begin_src python :noweb yes :results output
if true :
<<si vrai>>
else :
<<if-false>>
#+end_src
s'étend à :
s'il est vrai :
print('faire des choses quand
c'est vrai') else :
print('faire des choses quand c'est faux')
Ce comportement de préfixe peut être désactivé dans un bloc en définissant
l'argument d'en-tête 'noweb-prefix' à 'no', comme dans l'exemple suivant :
#+BEGIN_SRC elisp :noweb-prefix no
(setq example-data "<<example>>")
#+END_SRC
qui s'étend jusqu'à :
(setq exemple-données "c'est
le corps de l'exemple en
plusieurs lignes")
En cas de doute sur le résultat de l'expansion d'un bloc de code source, vous pouvez
prévisualiser les résultats à l'aide de la commande suivante :
C-c C-v v ou C-c C-v C-v (org-babel-expand-src-block)
Développe le bloc de code source actuel en fonction de ses arguments d'en-
tête et ouvre les résultats dans un tampon de prévisualisation.

16.12 Bibliothèque de Babel


La "Bibliothèque de Babel" est une collection de blocs de code. Comme une
bibliothèque de fonctions, ces blocs de code peuvent être appelés à partir d'autres
fichiers Org. Une collection de blocs de code utiles est disponible sur Worg. Pour la
syntaxe d'évaluation des blocs de code à distance, voir Section 16.5 [Évaluation des blocs
de code], page 228.
Chapitre 16 : Travailler avec le code 392
source

Pour qu'un utilisateur puisse ajouter du code à la bibliothèque, il faut d'abord


enregistrer le code dans les blocs de code ordinaires d'un fichier Org, puis charger le
fichier Org avec org-babel-lob-ingest, qui est lié à C-c C-v i.

16.13 Liaisons de touches et fonctions utiles


De nombreuses séquences de touches courantes du mode Org sont rebondies en fonction du contexte.
Liaisons de touches actives dans les blocs de code :

Liaison des touches Fonction


C-c C-c org-babel-execute-src-block
C-c C-o org-babel-open-src-block-result
M-UP org-babel-load-in-session
M-DOWN org-babel-pop-to-session
Liaisons de touches actives dans la mémoire tampon du mode Org :

Liaison des touches Fonction


C-c C-v p ou C-c C-v C-p org-babel-previous-src-block
C-c C-v n ou C-c C-v C-n org-babel-next-src-block
C-c C-v e ou C-c C-v C-e org-babel-execute-maybe
C-c C-v o ou C-c C-v C-o org-babel-open-src-block-result
C-c C-v v ou C-c C-v C-v org-babel-expand-src-block
C-c C-v u ou C-c C-v C-u org-babel-goto-src-block-head
C-c C-v g ou C-c C-v C-g org-babel-goto-named-src-block
C-c C-v r ou C-c C-v C-r org-babel-goto-named-result
C-c C-v b ou C-c C-v C-b org-babel-execute-buffer
C-c C-v s ou C-c C-v C-s org-babel-execute-subtree
C-c C-v d ou C-c C-v C-d org-babel-demarcate-block
C-c C-v t ou C-c C-v C-t org-babel-tangle
C-c C-v f ou C-c C-v C-f org-babel-tangle-file
C-c C-v c ou C-c C-v C-c org-babel-check-src-block
C-c C-v j ou C-c C-v C-j org-babel-insert-header-arg
C-c C-v l ou C-c C-v C-l org-babel-load-in-session
C-c C-v i ou C-c C-v C-i org-babel-lob-ingest
C-c C-v I ou C-c C-v C-I org-babel-view-src-block-info
C-c C-v z ou C-c C-v C-z org-babel-switch-to-session-with-code
C-c C-v a ou C-c C-v C-a org-babel-sha1-hash
C-c C-v h ou C-c C-v C-h org-babel-describe-bindings
C-c C-v x ou C-c C-v C-x org-babel-do-key-sequence-in-edit-
buffer

16.14 Exécution par lots


Les fonctions du mode Org, y compris le travail avec les facilités du code source,
peuvent être invoquées à partir de la ligne de commande. Cela permet de créer des
scripts shell pour le traitement par lots, d'exécuter des tâches système automatisées et
d'étendre l'utilité du mode Org.
L'exemple de script montre le traitement par lots de plusieurs fichiers à l'aide de org-babel-tangle.
Chapitre 16 : Travailler avec le code 393
source

#!/bin/sh
# Enchevêtrer les fichiers
avec le mode Org #
emacs -Q --batch --eval
" (progn
(require 'ob-tangle)
(dolist (file command-line-args-left)
(with-current-buffer (find-file-noselect file)
(org-babel-tangle))))
" "$@"
Chapitre 17 : Divers 394

17 Divers

17.1 Achèvement
Org dispose de complétions dans la mémoire tampon. Contrairement aux complétions
du minibuffer, qui sont utiles pour les interactions de commandes rapides, les
complétions dans le tampon d'Org conviennent mieux à la création de contenu dans les
documents Org. Tapez une ou plusieurs lettres et invoquez le raccourci clavier pour
compléter le texte sur place. Selon le contexte et les touches, Org propose différents
types de complétions. Il n'y a pas de mini-tampon. Ces touches de raccourci spécifiques
à un mode sont devenues partie intégrante d'Emacs et Org fournit plusieurs raccourcis.
M-TAB
Mot complet au point.
• Au début d'un titre vide, complétez les mots-clés TODO.
• Après "\", compléter les symboles TEX pris en charge par l'exportateur.
• Après ':' dans un titre, balises complètes. Org déduit la liste des balises
de l'option 'TAGS' dans le tampon (voir Section 6.2 [Définition des
balises], page 61), de la variable org-tag-alist, ou de toutes les
balises utilisées dans le tampon actuel.
• Après ':' et en dehors d'un titre, les clés de propriétés complètes. La
liste des clés est construite dynamiquement à partir de toutes les clés
utilisées dans le tampon actuel.
• Après "[[", compléter les abréviations des liens (voir section 4.7
[Abréviations des liens], page 45).
• Après '[[*'', les titres complets dans la mémoire tampon actuelle afin
qu'ils puissent être utilisés dans des liens de recherche tels que :
'[[*trouver ce titre]]]
• Après '#+', complétez les mots-clés spéciaux tels que 'TYP_TODO' ou les
'OPTIONS' spécifiques au fichier. Une fois le mot-clé option complété,
une nouvelle pression sur M-TAB permet d'insérer des exemples de
paramètres pour ce mot-clé.
• Après le mot-clé 'STARTUP', compléter les éléments de démarrage.
• Lorsque le point est ailleurs, complétez les mots du dictionnaire à l'aide d'Ispell.

17.2 Modèles de structure


En quelques touches, il est possible d'insérer des blocs structurels vides, tels que
"#+BEGIN_SRC" . . . '#+END_SRC', ou d'envelopper un texte existant dans un tel bloc.
C-c C-, (org-insert-structure-template)
Demander un type de structure de bloc et insérer le bloc au point. Si la
région est active, elle est enveloppée dans le bloc. La première invite
l'utilisateur à saisir des clés, qui sont utilisées pour rechercher un type de
structure dans la variable ci-dessous. Si la clé est TAB, RET ou SPC,
l'utilisateur est invité à saisir un type de bloc.
Les types de structures disponibles sont définis dans org-structure-template-
alist, voir la doc- string pour ajouter ou modifier des valeurs.
Org Tempo étend les snippets aux structures définies dans org-structure-template-
alist et org-tempo-keywords-alist. Par exemple, < s TAB crée un bloc de code.
Activez-le en personnalisant les org-modules ou en ajoutant '(require 'org-tempo)'
Chapitre 17 : Divers 395
à votre fichier Emacs init1 .
1
Pour plus d'informations, veuillez vous référer à la section commentaire dans 'org-tempo.el'.
Chapitre 17 : Divers 396

a '#+BEGIN_EXPORT ascii' . . . '#+END_EXPORT'


c '#+BEGIN_CENTER' . . . '#+END_CENTER'
C '#+BEGIN_COMMENT' . . . '#+END_COMMENT'
e '#+DÉBUT_EXEMPLE' . . . '#+END_EXAMPLE'
E '#+BEGIN_EXPORT' . . . '#+END_EXPORT'
h '#+BEGIN_EXPORT html' . . . '#+END_EXPORT'
l '#+BEGIN_EXPORT latex' . . . '#+END_EXPORT'
q '#+BEGIN_QUOTE' . . . '#+END_QUOTE'
s '#+BEGIN_SRC' . . . '#+END_SRC'
v '#+BEGIN_VERSE' . . . '#+END_VERSE'

17.3 Touches rapides


Une seule touche peut exécuter des commandes personnalisées dans un fichier Org
lorsque le point est sur un titre. Sans la contrainte supplémentaire d'une méta-touche ou
d'une touche de modification, les touches rapides permettent d'accélérer la navigation
ou d'exécuter des commandes personnalisées. Outre une navigation plus rapide, les
touches rapides peuvent s'avérer utiles sur les petits appareils mobiles qui ne disposent
pas de claviers complets. Les touches rapides peuvent également fonctionner sur les
appareils TTY connus pour leurs problèmes lors de la saisie d'accords de touches
Emacs.

Par défaut, les touches rapides sont désactivées dans Org. Pour activer les touches
de vitesse, il faut donner à la variable org-use-speed-commands une valeur non nulle.
Pour déclencher une touche de vitesse, le point doit se trouver au début d'un titre d'Org,
avant les étoiles.

Org est livré avec une liste prédéfinie de touches rapides. Pour ajouter ou modifier des
touches rapides, personnalisez l'option org-speed-commands. Pour plus de détails, voir la
docstring de la variable. Lorsque les Speed Keys sont activés, M-x org-speed-command-
help, ou ? lorsque le point est au début d'un titre Org, affiche les Speed Keys
actuellement actifs, y compris ceux définis par l'utilisateur.

17.4 Une vue d'ensemble plus propre


Le contour d'Org avec des étoiles et aucun retrait peut sembler encombré pour les
documents courts. Pour les documents longs comme des livres, l'effet n'est pas aussi
visible. Org propose un schéma alternatif d'étoiles et de retraits, comme indiqué à droite
dans le tableau suivant. Il n'affiche qu'une seule étoile et met le texte en retrait pour
l'aligner sur l'en-tête :

* Titre de premier | * Titre de premier niveau


niveau
** Deuxième niveau | * Deuxième niveau
*** Troisième | * Troisième niveau
niveau
un texte | un texte
*** Troisième | * Troisième niveau
niveau
plus de texte | plus de texte
* Un autre niveau titre | * Un autre titre de premier
Chapitre 17 : Divers 397
supérieur niveau

Org peut y parvenir de deux manières, (1) en affichant simplement le tampon de cette
manière sans le modifier, ou (2) en indentant chaque ligne de la quantité souhaitée avec
des espaces durs et en masquant les étoiles de tête.
Chapitre 17 : Divers 398

17.4.1 Mode d'indentation Org


Pour afficher le tampon en vue indentée, activez le mode mineur Org Indent en utilisant
M-x org-indent-mode. Les lignes de texte qui ne sont pas des titres sont préfixées par des
espaces virtuels pour s'aligner verticalement sur le texte du titre2 .
Pour gagner de l'espace horizontal, les titres sont décalés de deux caractères. Configurer
org-indent-indentation-par-niveau pour un nombre différent.
Par défaut, le mode Org Indent désactive org-adapt-indentation et cache les
étoiles de tête en définissant localement org-hide-leading-stars à t : seule une
étoile sur chaque titre est visible, les autres sont masquées avec la même couleur de
police que l'arrière-plan. Si vous souhaitez personnaliser ce comportement par défaut,
consultez org-indent-mode-turns-on-hiding-stars et org-indent-mode-turns-
off-org-adapt-indentation.
Pour activer globalement le mode Org Indent pour tous les fichiers, personnalisez la
variable org-startup- indented. Pour le contrôler pour des fichiers individuels, utilisez
le mot-clé 'STARTUP' comme suit :
#+STARTUP : indent
#+STARTUP : noindent

17.4.2 Empreinte dure


Il est possible d'utiliser des espaces durs pour réaliser l'indentation à la place, si le
fichier ASCII nu doit avoir l'aspect indenté même en dehors d'Emacs3 . Avec le support
d'Org, vous devez indenter toutes les lignes pour qu'elles s'alignent sur les en-têtes.
Vous devez utiliser les paramètres suivants :4 :
(setq org-adapt-indentation t
org-hide-leading-stars t
org-odd-levels-only t)
Indentation du texte sous les titres (org-adapt-indentation)
Le premier paramètre modifie les commandes de remplissage de
paragraphe, de retour à la ligne et d'édition de structure afin de préserver ou
d'adapter l'indentation selon le cas.
Cacher les étoiles principales (org-hide-leading-stars)
Le deuxième réglage rend les étoiles principales invisibles en appliquant le masque de visage org-
hide
à ces derniers. Pour les préférences par fichier, utilisez les options "STARTUP" de ces fichiers :
#+STARTUP : hidestars
#+STARTUP : showstars
Niveaux impairs (org-odd-levels-only)
Le troisième paramètre permet à Org de n'utiliser que les niveaux impairs, 1,
3, 5, . . . dans le contour pour créer plus d'indentation. Au niveau de chaque
fichier, contrôlez ceci avec :
#+STARTUP : odd
#+STARTUP : oddeven
Pour convertir un fichier entre les dispositions d'étoiles simples et doubles,
utilisez M-x org-convert- to-odd-levels et M-x org-convert-to-oddeven-levels.
2 Le
mode Org Indent définit également correctement le préfixe d'habillage pour l'indentation et
l'habillage de longues lignes de titres ou de texte. Ce mode mineur gère également le mode Visual Line
et les paramètres directement appliqués par le biais du word-wrap.
Chapitre 17 : Divers 399
3
Cela fonctionne, mais demande un effort supplémentaire. Le mode Org Indent est plus pratique pour la plupart des applications.
4
org-adapt-indentation peut également être défini comme ''headline-data'', auquel cas seules les
lignes de données situées sous le titre seront indentées.
Chapitre 17 : Divers 400

17.5 Exécuter des commandes dans la région active


Lorsque vous êtes dans un tampon Org et que la région est active, certaines commandes
s'appliquent à toutes les sous-arbres de la région active. Par exemple, si vous appuyez
sur C-c C-s lorsque plusieurs titres se trouvent dans la région active, vous serez
successivement invité à indiquer la date et l'heure de la nouvelle programmation. Pour
désactiver cette fonction, réglez l'option org-loop-over-headlines-in-active-region
sur non-t, activez la région et exécutez la commande normalement.
org-agenda-loop-over-headlines-in-active-region est l'option équivalente de la
mémoire tampon de l'agenda, où vous pouvez également utiliser [l'édition en bloc des
entrées sélectionnées], page 128.
Toutes les commandes ne peuvent pas boucler dans la région active et les sous-
arbres ou les titres pris en compte peuvent être affinés : voir les docstrings de ces
options pour plus de détails.

17.6 Numérotation dynamique des titres


Le mode mineur Org Num, activé avec le mode M-x org-num, affiche la numérotation
des titres. Il la met également à jour automatiquement en cas de modification de la
structure du document.
Par défaut, tous les titres sont numérotés. Vous pouvez limiter la numérotation à des
titres spécifiques en fonction de leur niveau, de leurs balises, du mot-clé "COMMENT" ou
de la propriété "UNNUMBERED". Définissez org-num- max-level, org-num-skip-tags,
org-num-skip-commented, org-num-skip-unnumbered, ou org-num-skip-footnotes en
conséquence.
Si org-num-skip-footnotes est différent de zéro, les sections de notes de bas de
page (voir Section 12.10 [Création de notes de bas de page], page 145) ne sont pas non
plus numérotées.
Vous pouvez contrôler l'affichage de la numérotation en paramétrant org-num-face et
org-num- format-function.
Vous pouvez également activer ce mode globalement pour tous les fichiers Org en
définissant l'option org-startup- numerated à 't', ou localement sur un fichier en
utilisant '#+startup : num'.

17.7 La clé C-c C-c très occupée


La touche C-c C-c d'Org a plusieurs fonctions selon le contexte. C'est probablement la
combinaison de touches la plus utilisée dans Org. Ses utilisations sont bien documentées
tout au long de ce manuel, mais voici une liste consolidée pour une référence facile.
• Si l'affichage en colonnes (voir Section 7.5 [Affichage en colonnes], page 71) est activé, quittez
l'affichage en colonnes.
• Si la création d'un arbre clairsemé ou l'affichage de l'horloge a fait apparaître des
points saillants dans la mémoire tampon, il convient de les supprimer.
• Si le point se trouve dans l'une des lignes spéciales "KEYWORD", recherchez ces lignes
dans la mémoire tampon et mettez les informations à jour. Réinitialiser également le
cache du fichier Org utilisé pour stocker temporairement le contenu des URL utilisés
comme valeurs pour des mots-clés tels que "SETUPFILE".
• Si le point se trouve à l'intérieur d'une table, réaligner la table.
• Si le point se trouve sur un mot-clé "TBLFM", réappliquer les formules à l'ensemble du tableau.
Chapitre 17 : Divers 401
• Si le tampon actuel est un tampon de capture, fermer la note et la classer. Avec un
argument préfixe, sauter également à l'emplacement cible après avoir enregistré la
note.
• Si le point se trouve sur une '<<<target>>', mettre à jour les cibles radio et les
liens correspondants dans cette mémoire tampon.
Chapitre 17 : Divers 402

• Si le point se trouve sur une ligne de propriété ou au début ou à la fin d'un tiroir de
propriété, proposer des commandes de propriété.
• Si le point est un renvoi à une note de bas de page, il faut aller à la définition correspondante, et vice
versa.
• Si le point se trouve sur un cookie statistique, mettez-le à jour.
• Si le point se trouve dans un élément de liste simple avec une case à cocher, bascule l'état de la case
à cocher.
• Si le point se trouve sur un élément numéroté d'une liste simple, renuméroter la liste ordonnée.
• Si le point se trouve sur la ligne '#+BEGIN' d'un bloc dynamique, le bloc est mis à jour.
• Si le point est situé sur un horodatage, fixer le nom du jour dans l'horodatage.

17.8 Résumé des réglages dans le tampon


Les paramètres dans la mémoire tampon commencent par "#+", suivi d'un mot-clé, de
deux points, d'un ou plusieurs espaces, puis d'un mot pour chaque paramètre. Org
accepte plusieurs paramètres sur la même ligne. Org accepte également plusieurs
lignes pour un mot-clé. Ce manuel décrit ces paramètres tout au long du document. En
voici un résumé.
C-c C-c active toutes les modifications apportées aux paramètres de la mémoire
tampon. Fermer et rouvrir le fichier Org dans Emacs active également les changements.
'#+ARCHIVE : %s_done::'
Définit l'emplacement de l'archive du fichier d'agenda. La variable correspondante est
org-archive-location.
'#+CATEGORY'
Définit la catégorie du fichier agenda, qui s'applique à l'ensemble du document.
'#+COLUMNS : %25ITEM ...'
Définit le format par défaut de l'affichage des colonnes. Ce format s'applique
lorsque l'affichage des colonnes est invoqué à des endroits où la propriété
'COLUMNS' ne s'applique pas.
'#+CONSTANTS : nom1=valeur1 ...'
Définir les valeurs locales des constantes que les formules de table peuvent
utiliser. Cette ligne définit la variable locale org-table-formula-constants-
local. La version globale de cette variable est org-table-formula-
constants.
'#+FILETAGS : :tag1:tag2:tag3:'
Définir les balises dont héritent toutes les entrées du fichier, y compris les entrées de premier
niveau.
#+LINK : remplacement du mot-lien".
Chaque ligne spécifie une abréviation pour un lien. Pour plus d'informations,
voir Section 4.7 [Abréviations de liens], page 45. La variable correspondante
est org-link-abbrev-alist.
#+PRIORITÉS : la plus élevée la plus basse par défaut".
Cette ligne définit les limites et la valeur par défaut des priorités. Les trois
priorités doivent être des lettres A à Z ou des chiffres 0 à 9. La priorité la
plus élevée doit avoir un numéro ASCII inférieur à celui de la priorité la plus
basse.
Chapitre 17 : Divers 403
#+PROPERTY : Property_Name Value' (Nom du bien)
Cette ligne définit une valeur d'héritage par défaut pour les entrées du
tampon actuel, ce qui est très utile pour spécifier les valeurs autorisées
d'une propriété.
Chapitre 17 : Divers 404

'#+SETUPFILE : fichier'
Le fichier de configuration ou un URL pointant vers ce fichier est destiné à
des réglages supplémentaires dans la mémoire tampon. Org charge ce
fichier et l'analyse pour y trouver des paramètres uniquement lorsque Org
ouvre le fichier principal. Si l'URL est spécifié, le contenu est téléchargé et
stocké dans un fichier cache temporaire. C-c C-c sur la ligne des paramètres
analyse et charge le fichier, et réinitialise également le cache temporaire.
Org analyse et charge également le document au cours du processus
normal d'exportation. Org analyse le contenu de ce document comme s'il
était inclus dans le tampon. Il peut s'agir d'un autre fichier Org. Pour visiter le
fichier - et non une URL - utilisez C-c ' lorsque le point se trouve sur la ligne
contenant le nom du fichier.
'#+STARTUP:'
Options de démarrage utilisées par Org lors de la première visite d'un fichier.
La première série d'options concerne la visibilité initiale de l'arbre des
contours. La variable correspondante pour les paramètres globaux par défaut
est org-startup-folded avec une valeur par défaut de showeverything.
Aperçu Titres de premier niveau uniquement.
Contenu Tous les titres.
'showall' Pas de pliage sur aucune
entrée. 'show2levels' Niveaux de titres 1-2.
'show3levels' Niveaux de titres 1-3.
'show4levels' Niveaux de titres 1-4.
'show5levels' Niveaux de titres 1-5.
'showeverything' (tout montrer) Affiche
même le contenu des tiroirs.
L'indentation virtuelle dynamique est contrôlée par la variable org-startup-
indented5 .
'indent' Commence avec le mode Org Indent
activé. 'noindent' Commence avec le mode
Org Indent désactivé.
La numération virtuelle dynamique des titres est contrôlée par la variable
org-startup-numerated.
'num' Démarrer avec le mode Org num
activé. 'nonum' Démarrer avec le mode Org
num désactivé.
Aligne les tableaux de manière cohérente lors de la visite d'un fichier. La variable
correspondante est
org-startup-align-all-tables avec nil comme valeur par défaut.
'aligner' Aligne tous les tableaux.
noalign' Ne pas aligner les tableaux au démarrage.
Réduire les colonnes d'un tableau avec un cookie de largeur. La variable correspondante
est
org-startup-shrink-all-tables avec nil comme valeur par défaut.
Lors de la visite d'un fichier, les images en ligne peuvent être
automatiquement affichées. La variable correspondante est org-startup-
with-inline-images, avec une valeur par défaut nulle pour éviter les
retards lors de la visite d'un fichier.
Chapitre 17 : Divers 405
'inlineimages' Affiche les images en ligne.
noinlineimages' Ne pas afficher les images en ligne au
démarrage.
5
Notez que le mode Org Indent définit également la propriété wrap-prefix, de sorte que le mode Visual
Line (ou le simple fait de définir word-wrap) permet de mettre correctement en retrait les longues
lignes, y compris les titres.
Chapitre 17 : Divers 406

L'enregistrement de la fermeture et de la réouverture des éléments TODO et


les intervalles d'horloge peuvent être configurés en utilisant ces options (voir
les variables org-log-done, org-log-note- clock-out, et org-log-
repeat).
'logdone' Enregistre un horodatage lorsqu'un élément est
marqué comme terminé. 'lognotedone' Enregistre l'horodatage et une
note lorsqu'un élément est marqué comme terminé. 'nologdone' Ne pas
enregistrer le moment où un élément est marqué comme terminé. 'logrepeat'
Enregistrer une heure lors de la réintégration d'un
élément répétitif. 'lognoterepeat' Enregistre une note lors de la
réintégration d'un élément répétitif. 'nologrepeat' Ne pas enregistrer lors
de la réintégration d'un élément répété. 'lognoteclock-out' Enregistrer une
note lors du pointage.
nolognoteclock-out' Ne pas enregistrer de note lors de la sortie.
'logreschedule' (enregistrer l'horaire) Enregistrer un horodatage en
cas de changement d'horaire. 'lognotereschedule' Enregistre une note
lorsque l'heure de la programmation change. nologreschedule' Ne pas
enregistrer les changements de date de programmation. 'logredeadline'
Enregistrer un horodatage en cas de changement
de délai. 'lognoteredeadline' Enregistre une note en cas de changement
de date limite. 'nologredeadline' Ne pas enregistrer les changements
de date d'échéance. 'logrefile' Enregistrer un horodatage lors d'un
nouveau dépôt. 'lognoterefile'Enregistrer une note lors d'un
nouveau dépôt.
nologrefile' Ne pas enregistrer lors d'un nouveau dépôt.
Voici les options permettant de masquer les étoiles de tête dans les titres des
contours et d'indenter les contours. Les variables correspondantes sont org-
hide-leading-stars et org-odd-levels-only, toutes deux avec une
valeur par défaut de nil (ce qui signifie "showstars" et "oddeven").
'hidestars' Rendre invisibles toutes les étoiles à l'exception de l'une
d'entre elles qui commence un titre. 'showstars' Affiche toutes les
stars qui commencent un titre.
'indent' Indentation virtuelle en fonction du niveau du
plan. 'noindent' Pas d'indentation virtuelle en fonction
du niveau de contour. 'odd' Autorise uniquement les niveaux
de contour impairs (1, 3, . . . ). 'oddeven' Autorise tous les
niveaux de contour.
Pour activer les superpositions de formats personnalisés sur les
horodatages (variables org-put-time- stamp-overlays et org-time-
stamp-overlay-formats), utilisez :
'customtime' Superposition d'un format d'heure personnalisé.
Les options options influencent le tableau feuille de calcul (variable
constantes-unité-système).
'constcgs' 'constants.el' doit utiliser le système d'unités c-g-
s. 'constSI' 'constants.el' doit utiliser le système
d'unités SI.
Pour influencer les paramètres des notes de bas de page, utilisez les mots-
clés suivants. Les variables correspondantes sont org-footnote-define-
inline, org-footnote-auto-label et org-footnote-auto-adjust.
Chapitre 17 : Divers 407
'fninline' Définit les notes de bas de page en
ligne. fnnoinline Définit les notes de bas de
page dans une section séparée.
'fnlocal' Définit les notes de bas de page à proximité de la
première référence, mais pas en ligne. 'fnprompt' Demande
d'étiquettes de notes de bas de page.
'fnauto' Crée automatiquement des étiquettes de type '[fn:1]' (par défaut).
Chapitre 17 : Divers 408

fnconfirm' Offrir une étiquette automatique pour édition ou


confirmation. 'fnadjust' Renuméroter et trier
automatiquement les notes de bas de page. 'nofnadjust' Ne
pas renuméroter et trier automatiquement.
Pour masquer les blocs ou les tiroirs au démarrage, utilisez ces mots-clés.
Les variables correspondantes sont org-hide-block-startup et org-hide-
drawer-startup. 'hideblocks' Cache tous les blocs de début et de
fin au démarrage.
nohideblocks'Ne pas masquer les blocs au
démarrage. 'hidedrawers' Cache tous les blocs de
début et de fin au démarrage. 'nohidedrawers' Ne
pas cacher les blocs au démarrage.
L'affichage des entités en caractères UTF-8 est régi par la variable org-pretty-
entities et les mots-clés
entitéspretty Affiche les entités en caractères UTF-8 dans la
mesure du possible. 'entitiesplain' Laisser les entités en clair.
'#+TAGS : TAG1(c1) TAG2(c2)'
Ces lignes (plusieurs lignes de ce type sont autorisées) spécifient les balises
valides dans ce fichier, et (potentiellement) les touches de sélection rapide des
balises correspondantes. La variable correspondante est org-tag-alist.
'#+TODO:', '#+SEQ_TODO:', '#+TYP_TODO:'
Ces lignes définissent les mots-clés TODO et leur interprétation dans le
fichier courant. La variable correspondante est org-todo-keywords.

17.9 Expressions régulières


Org, en tant que mode Emacs, utilise les expressions régulières Elisp pour la recherche,
la correspondance et le filtrage. Les expressions régulières Elisp ont une syntaxe
quelque peu différente de certaines normes courantes. Notamment, l'alternance est
indiquée par '\|' et les groupes de correspondance par '\(...\)'. Par exemple, la chaîne
"home\|work" correspond soit à "home", soit à "work".
Pour plus d'informations, voir la section "Regexps" dans emacs.

17.10 Syntaxe Org


Un document de référence fournissant une description formelle de la syntaxe d'Org est
disponible sous forme de projet sur Worg, écrit et maintenu par Nicolas Goaziou. Il définit
les principaux concepts internes d'Org, tels que les "titres", les "sections", les "mots-clés
affiliés", les "(plus grands) éléments" et les "objets". Chaque partie d'un document Org
appartient à l'une des catégories précédentes.
Pour explorer la structure abstraite d'un tampon Org, exécutez ceci dans un tampon :
M- : (org-element-parse-buffer) <RET>
Il produit une liste contenant le contenu du tampon représenté sous la forme d'une
structure abstraite. Le moteur d'exportation s'appuie sur les informations stockées dans
cette liste. La plupart des commandes interactives, par exemple pour l'édition de
structures, s'appuient également sur la signification syntaxique du contexte environnant.
Vous pouvez vérifier la syntaxe de vos documents avec la commande
M-x org-lint <RET>
Il effectue un certain nombre de vérifications pour détecter les erreurs courantes. Il
Chapitre 17 : Divers 409
affiche ensuite leur emplacement dans une mémoire tampon dédiée, ainsi qu'une
description et un "niveau de confiance", car les faux positifs sont possibles. À partir
de là, vous pouvez utiliser les rapports à l'aide des touches suivantes :
Chapitre 17 : Divers 410

C-j, TAB Afficher la ligne incriminée


RET Déplacer le point à la ligne incriminée
g Vérifier à nouveau le document
h Masquer tous les rapports du même vérificateur
i Les supprimer également de tous les contrôles ultérieurs
S Trier les rapports en fonction de la colonne au point

17.11 Documentation dépendante du contexte


C-c C-x I dans un fichier Org tente d'ouvrir une section appropriée du manuel Org en
fonction de la syntaxe au point. Par exemple, en l'utilisant sur un titre, la section
"Structure du document" s'affiche.
q ferme la fenêtre d'information.

17.12 Caractère d'évasion


Vous pouvez parfois vouloir écrire du texte qui ressemble à la syntaxe Org, mais qui
devrait en réalité être lu comme du texte simple. Org peut utiliser un caractère
d'échappement spécifique dans certaines situations, par exemple une barre oblique
inverse dans les macros (voir Section 13.5 [Remplacement des macros], page 153) et les
liens (voir Section 4.1 [Format des liens], page 38), ou une virgule dans les blocs de
source et d'exemple (voir Section 12.6 [Exemples littéraux], page 141). Dans le cas
général, cependant, nous suggérons d'utiliser l'espace de largeur zéro. Vous pouvez en
insérer un avec l'une des méthodes suivantes :
C-x 8 <RET> espace de largeur
nulle <RET> C-x 8 <RET> 200B
<RET>
Par exemple, pour écrire "[[1,2]]" tel quel dans votre document, vous pouvez écrire à la place
[X[1,2]]
où "X" désigne le caractère d'espace de largeur nulle.

17.13 Évaluation du code et questions de sécurité


Contrairement au texte brut, l'exécution d'un code comporte des risques. En termes de
risque, chaque bloc de code source équivaut à un fichier exécutable. C'est pourquoi Org
ajoute par défaut quelques invites de confirmation. Il s'agit de prévenir l'utilisateur
occasionnel de l'exécution accidentelle d'un code non fiable.
Pour les utilisateurs qui n'exécutent pas de blocs de code ou qui n'écrivent pas de code
régulièrement, les paramètres par défaut d'Org devraient suffire. Cependant, certains
utilisateurs peuvent souhaiter modifier les invites pour réduire les interruptions. Pour
évaluer les risques de l'exécution automatique des blocs de code, voici quelques détails
sur l'évaluation du code.
Org évalue le code dans les circonstances suivantes :
Blocs de code source
Org évalue les blocs de code source dans un fichier Org lors de l'exportation. Org
évalue également un bloc de code source avec l'accord C-c C-c. Les utilisateurs
qui exportent ou exécutent des blocs de code ne doivent charger des fichiers
qu'à partir de sources fiables. Méfiez-vous des variables personnalisées qui
suppriment ou modifient les mesures de sécurité par défaut.
org-confirm-babel-evaluate [Option utilisateur]
Chapitre 17 : Divers 411
Lorsque t, Org demande à l'utilisateur une confirmation avant d'exécuter chaque
bloc de code. S'il est nul, Org exécute les blocs de code sans demander
l'avis de l'utilisateur.
Chapitre 17 : Divers 412

à l'utilisateur pour confirmation. Lorsque cette option est définie pour


une fonction personnalisée, Org invoque la fonction avec ces deux
arguments : la langue du code source et le corps du bloc de code. La
fonction personnalisée doit renvoyer soit un t, soit nil, ce qui
détermine si l'utilisateur est invité à confirmer. Chaque langage de
code source peut être traité séparément par le biais de cet argument
de fonction.

Par exemple, voici comment exécuter les blocs de code ditaa sans être invité à le faire :
(defun my-org-confirm-babel-evaluate (lang body)
(not (string= lang "ditaa"))) ;ne pas demander
ditaa
(setq org-confirm-babel-evaluate #'my-org-confirm-babel-evaluate)
Suivre les liens 'shell' et 'elisp
Org possède deux types de liens qui peuvent évaluer directement le code
(voir section 4.4 [Liens externes], page 40). Comme ce code n'est pas
visible, ces liens présentent un risque potentiel. Org invite donc l'utilisateur
lorsqu'il rencontre de tels liens. Les variables de personnalisation sont les
suivantes :

org-link-shell-confirm-function [Option utilisateur]


Fonction qui invite l'utilisateur avant d'exécuter un lien shell.
org-link-elisp-confirm-function [Option utilisateur]
Fonction qui invite l'utilisateur avant d'exécuter un lien Emacs Lisp.
Formules dans les tableaux
Les formules contenues dans les tableaux (voir Section 3.5 [La feuille de
calcul], page 23) sont du code évalué soit par l'interpréteur Calc, soit par
l'interpréteur Lisp d'Emacs.

17.14 Interaction avec d'autres paquets


Org et le niveau d'interaction avec les autres paquets Emacs sont documentés ici.

17.14.1 Paquets avec lesquels Org coopère


calc.el" par Dave Gillespie
Org utilise le paquet Calc pour implémenter la fonctionnalité de feuille de
calcul dans ses tableaux (voir Section 3.5 [La feuille de calcul], page 23).
Org utilise également Calc pour les calculs intégrés. Voir la section "Mode
intégré" dans calc.
'constants.el' par Carsten Dominik
Org peut utiliser des noms pour les constantes dans les formules des
tableaux. Org peut également utiliser des suffixes de calcul pour les unités,
comme 'M' pour 'Mega'. Pour obtenir une collection standard de ces
constantes, installez le paquetage "constants". Installez la version 2.0 de ce
paquetage, disponible à l'adresse
http://www.astro.uva.nl/~dominik/Tools. Org vérifie si la fonction
constants-get a été chargée automatiquement. Les instructions
d'installation se trouvent dans le fichier "constants.el".
Chapitre 17 : Divers 413
cdlatex.el' par Carsten Dominik
Le mode Org peut utiliser le paquetage CDLATEX pour saisir efficacement
des fragments LATEX dans des fichiers Org. Voir Section 12.5.3 [Mode
CDLATEX], page 140.
Chapitre 17 : Divers 414

imenu.el" par Ake Stenhoff et Lars Lindberg


Imenu crée des menus dynamiques basés sur un index des éléments d'un
fichier. Le mode Org prend en charge les menus Imenu. Activez-le à l'aide
d'un crochet de mode comme suit :
(add-hook 'org-mode-hook
(lambda () (imenu-add-to-menubar "Imenu")))
Par défaut, l'index a une profondeur de deux niveaux. Vous pouvez modifier
cette profondeur à l'aide de l'option org-imenu-depth.
speedbar.el" par Eric M. Ludlam
Le paquet Speedbar crée un cadre Emacs spécial pour afficher les fichiers et
les éléments d'index dans les fichiers. Le mode Org prend en charge la
Speedbar ; les utilisateurs peuvent explorer les fichiers Org directement à
partir de la Speedbar. Le < dans le cadre Speedbar modifie les commandes de
l'agenda pour ce fichier ou pour une sous-arborescence.
table.el" par Takaaki Ota
Des tableaux ASCII complexes avec retour à la ligne automatique,
espacement des colonnes et des lignes, et alignement peuvent être créés en
utilisant le package Emacs table de Takaaki Ota. Le mode Org reconnaît ces
tableaux et les exporte correctement. C-c ' pour éditer ces tableaux dans un
tampon spécial, tout comme les blocs de code d'Org. En raison
d'interférences avec d'autres fonctionnalités du mode Org, les tableaux de
Takaaki Ota ne peuvent pas être édités directement dans le tampon Org.
C-c ' (org-edit-special)
Modifier un tableau 'table.el'. Fonctionne lorsque le point se trouve dans un
tableau 'table.el'.
C-c ~ (org-table-create-with-table.el)
Insérer un tableau 'table.el'. S'il existe déjà un tableau, cette
commande le convertit entre le format 'table.el' et le format du
mode Org. Voir la chaîne de documentation de la commande
org-convert-table pour les restrictions sous lesquelles cela
est possible.

17.14.2 Paquets en conflit avec le mode Org


Dans Emacs, la sélection shift combine les mouvements du point avec la touche shift pour
agrandir les régions. Emacs utilise ce mode par défaut. Cela entre en conflit avec
l'utilisation par Org des commandes S-<cursor> pour modifier les horodatages, les
mots-clés TODO, les priorités, les types de puces des éléments, etc. Puisque les
commandes S-<cursor> en dehors de contextes spécifiques ne font rien, Org offre la
variable org-support- shift-select pour la personnalisation. Le mode Org s'adapte a
la selection des majuscules (i) en la rendant disponible en dehors des contextes
speciaux ou des commandes speciales s'appliquent, et (ii) en etendant une region active
existante meme si le point se deplace a travers un contexte special.
cua.el" par Kim F. Storm
Les liaisons de touches Org sont en conflit avec les touches S-<cursor>
utilisées par le mode CUA. Pour que Org abandonne ces liaisons au mode
CUA, configurez la variable org-replace- disputed-keys. Lorsqu'elle est
activée, Org déplace les combinaisons de touches suivantes dans les
fichiers Org et dans la mémoire tampon de l'agenda, mais pas lors de la
Chapitre 17 : Divers 415
sélection de la date.
S-UP ⇒ M-p S-DOWN ⇒ M-n
S-GAUCHE ⇒ M-- S-DROITE ⇒ M-+
C-S-GAUCHE ⇒ M-S-- C-S-DROIT ⇒ M-S-+
Chapitre 17 : Divers 416

Oui, ces clés sont malheureusement plus difficiles à retenir. Si vous voulez
avoir d'autres clés de remplacement, regardez la variable org-disputed-
keys.
ecomplete.el" par Lars Magne Ingebrigtsen
Ecomplete fournit une complétion d'adresse "électrique" dans les lignes
d'en-tête des messages. Malheureusement, le mode Orgtbl coupe
l'alimentation d'Ecomplete : aucune com- plétion ne se produit lorsque le
mode Orgtbl est activé dans les tampons de messages pendant la saisie de
texte dans les lignes d'en-tête d'adresse. Si l'on veut utiliser ecomplete, il ne
faut pas suivre le conseil d'activer automatiquement le mode Orgtbl dans les
tampons de messages (voir Section 3.4 [Mode Orgtbl], page 22), mais plutôt
- après avoir rempli les en-têtes de messages - activer manuellement le
mode Orgtbl lorsque c'est nécessaire dans le corps du message.
filladapt.el" par Kyle Jones
Le mode Org tente de faire ce qu'il faut pour remplir les paragraphes, les
éléments de liste et d'autres éléments. De nombreux utilisateurs ont signalé
des problèmes lors de l'utilisation de 'filladapt.el' et du mode Org, c'est
pourquoi il est prudent de désactiver filladapt comme ceci :
(add-hook 'org-mode-hook 'turn-off-filladapt-mode)
viper.el" par Michael Kifer
Viper utilise C-c / et donc cette clé n'accède pas à la commande
correspondante du mode Org org-sparse-tree. Vous devez trouver une
autre clé pour cette commande, ou remplacer la clé dans viper-vi-global-
user-map avec
(define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
windmove.el" par Hovav Shacham
Ce paquet utilise également les touches S-<cursor>, donc tout ce qui est
écrit dans le paragraphe ci-dessus à propos du mode CUA s'applique
également ici. Si vous voulez activer la fonction windmove dans les endroits
où le mode Org n'a pas de fonctionnalité spéciale sur S-<cursor>, ajoutez ceci
à votre configuration :
; ; Faire fonctionner windmove en mode Org :
(add-hook 'org-shiftup-final-hook 'windmove-up)
(add-hook 'org-shiftleft-final-hook 'windmove-
left) (add-hook 'org-shiftdown-final-hook
'windmove-down)
(add-hook 'org-shiftright-final-hook 'windmove-right)
'yasnippet.el'
La façon dont le mode Org lie la touche TAB (en la liant à [tab] au lieu de
"\t") écrase l'accès de YASnippet à cette touche. Le code suivant corrige ce
problème :
(add-hook 'org-mode-hook
(lambda ()
(setq-local yas/trigger-key [tab])
(define-key yas/keymap [tab] 'yas/next-field-or-maybe-expand)))
La dernière version de YASnippet ne fonctionne pas bien avec le mode Org.
Si le code ci-dessus ne résout pas le conflit, commencez par définir la
fonction suivante :
Chapitre 17 : Divers 417
(defun yas/org-very-safe-expand ()
(let ((yas/fallback-behavior 'return-nil)) (yas/expand)))
Indiquez ensuite au mode Org d'utiliser cette fonction :
(add-hook 'org-mode-hook
Chapitre 17 : Divers 418

(lambda ()
(make-variable-buffer-local 'yas/trigger-key)
(setq yas/trigger-key [tab])
(add-to-list 'org-tab-first-hook 'yas/org-very-safe-
expand) (define-key yas/keymap [tab] 'yas/next-field)))

17.15 Utiliser Org sur un ATS


Org fournit des combinaisons de touches alternatives pour les ATS et les appareils
mobiles modernes qui ne peuvent pas exécuter de commandes de mouvement sur des
combinaisons de points et de touches avec des touches de modification. Certaines de ces
solutions de contournement peuvent s'avérer plus lourdes que nécessaire. Les utilisateurs
devraient envisager de les personnaliser davantage en fonction de leurs besoins
d'utilisation. Par exemple, le S-<curseur> normal pour l'édition de l'horodatage peut
être mieux utilisé avec le C-c . chord.

Défaut Alternative 1 Touche de Alternative 2


vitesse
S-TAB C-u TAB C
M-GAUCHE C-c C-x l l Esc LEFT
M-S-GAUCHE C-c C-x L L
M-DROIT C-c C-x r r Esc RIGHT
M-S-RIGHT C-c C-x R R
M-UP C-c C-x u Esc UP
M-S-UP C-c C-x U U
M-DOWN C-c C-x d Esc DOWN
M-S-DOWN C-c C-x D D
S-RET C-c C-x c
M-RET C-c C-x m Esc RET
M-S-RET C-c C-x M
S-GAUCHE C-c GAUCHE
S-DROITE C-c DROIT
S-UP C-c UP
S-DOWN C-c DOWN
C-S-GAUCHE C-c C-x GAUCHE
C-S-DROITE C-c C-x DROITE

17.16 Protocoles pour l'accès externe


Org est un outil permettant de déclencher des actions personnalisées dans Emacs à
partir d'applications externes. Toute application qui permet d'appeler des programmes
externes avec une URL comme argument peut être utilisée avec cette fonctionnalité. Par
exemple, vous pouvez configurer les signets de votre navigateur web pour envoyer un
lien vers la page en cours à Org et créer une note à partir de ce lien en utilisant la
capture (voir Section 10.1 [Capture], page 97). Vous pouvez également créer un signet
qui indique à Emacs d'ouvrir le fichier source local d'un site web distant sur lequel vous
naviguez.
Pour utiliser le protocole Org à partir d'une application, vous devez enregistrer 'org-
protocol://' en tant que gestionnaire de schéma valide. Les appels externes sont
transmis à Emacs par l'intermédiaire de la commande 'emacsclient', vous devez donc
également vous assurer qu'un serveur Emacs est en cours d'exécution. Plus précisément,
lorsque l'application appelle
Chapitre 17 : Divers 419
emacsclient "org-protocol://PROTOCOL?key1=val1&key2=val2"
Chapitre 17 : Divers 420

Emacs appelle le gestionnaire associé à PROTOCOL avec l'argument '(:key1 val1


:key2 val2)'.
Le protocole Org est fourni avec trois protocoles prédéfinis, détaillés dans les sections suivantes.
Configurez org-protocol-protocol-alist pour définir votre propre liste.
17.16.1 Le protocole store-link
En utilisant le gestionnaire store-link, vous pouvez copier des liens, pour qu'ils
puissent être insérés en utilisant M-x org-insert-link ou yanking. Plus précisément, la
commande
emacsclient "org-protocol://store-link?url=URL&title=TITLE"
stocke le lien suivant :
[[URL][TITLE]]
En outre, l'URL est placé sur le chevalet d'exécution pour être retiré. Vous devez coder l'URL et
TITLE s'ils contiennent des barres obliques, et probablement les citer pour l'interpréteur de commandes.
Pour utiliser cette fonction à partir d'un navigateur, ajoutez un signet avec un nom
arbitraire, par exemple "Org : store-link", et saisissez-le comme Emplacement :
javascript:location.href='org-protocol://store-link?' +
new URLSearchParams({url:location.href, title:document.title}) ;
Le titre est un paramètre facultatif. Une autre expression a été recommandée précédemment :
javascript:location.href='org-protocol://store-link?url='+
encodeURIComponent(location.href) ;
Cette dernière forme est compatible avec les anciennes versions d'Org, de 9.0 à 9.4.
17.16.2 Le protocole de capture
L'activation du gestionnaire "capture" fait apparaître un tampon "Capture" dans Emacs,
en utilisant le modèle acapture.
emacsclient "org-protocol://capture?template=X&url=URL&title=TITLE&body=BODY"
Pour utiliser cette fonction, ajoutez un signet avec un nom arbitraire, par exemple
"Org : capture", et saisissez-le comme "Emplacement" :
javascript:location.href='org-protocol://capture?' +
new URLSearchParams({
template : 'x', url : window.location.href,
title : document.title, body : window.getSelection()}) ;
Vous avez peut-être vu une autre expression :
javascript:location.href='org-protocol://capture?template=x'+
'&url='+encodeURIComponent(window.location.href)+
'&title='+encodeURIComponent(document.title)+
'&body='+encodeURIComponent(window.getSelection()) ;
Il est un peu plus encombré que le précédent, mais il est compatible avec les
versions précédentes d'Org 9.0-9.4. Dans ces versions, l'encodage de l'espace en tant
que caractère "+" n'était pas pris en charge par le décodeur d'URI.
Le modèle de capture à utiliser peut être spécifié dans le signet (comme 'X' ci-
dessus). S'il n'est pas spécifié, la clé du modèle est définie dans la variable org-
protocol-default-template-key. Les caractères génériques suivants sont disponibles
:
Chapitre 17 : Divers 421

%: linkL'URL
%:descriptionTitre de la page web
%: annotationEquivalent à [[%:link][%:description]]]
Le texte sélectionné

17.16.3 Le protocole open-source


Le gestionnaire open-source est conçu pour faciliter l'édition des sources locales lors
de la lecture d'un document. À cet effet, vous pouvez utiliser un signet à l'emplacement
suivant :
javascript:location.href='org-protocol://open-source?&url='+
encodeURIComponent(location.href)
La variable org-protocol-project-alist établit une correspondance entre les URL et
les noms de fichiers locaux, en supprimant les paramètres URL à la fin et en remplaçant
:base-url par :working-directory et
:online-suffix avec :working-suffix. Par exemple, en supposant que vous
possédiez une copie locale du contenu de 'https://orgmode.org/worg/' dans
'/home/user/worg', vous pouvez définir org-protocol- project-alist comme suit
(setq org-protocol-project-alist
'(("Worg"
:base-url "https://orgmode.org/worg/"
:working-directory "/home/user/worg/"
:online-suffix ".html"
:working-suffix ".org"))))
Si vous êtes en train de parcourir "https://orgmode.org/worg/org-contrib/org-protocol.html"
et que vous trouvez une coquille ou que vous avez une idée pour améliorer la
documentation, il vous suffit de cliquer sur le signet et de commencer à l'éditer.
Toutefois, cette cartographie ne donne pas toujours les résultats escomptés.
Supposons que vous gériez une boutique en ligne située à l'adresse
"https://example.com/". Les sources locales se trouvent dans "/home/user/example/". Il
est courant de proposer tous les produits d'une telle boutique dans un seul fichier et de
réécrire les URL qui ne correspondent pas à un fichier existant sur le serveur. Ainsi,
une requête vers "https://example.com/print/posters.html" peut être réécrite sur le
serveur en quelque chose comme
"https://example.com/shop/products.php/posters.html.php". Les
Le gestionnaire open-source ne peut probablement pas trouver un fichier nommé
'/home/user/example/print/posters.html.php' et échoue.
Une telle entrée dans org-protocol-project-alist peut contenir une propriété supplémentaire
:rewrites. Cette propriété est une liste de cellules cons, dont chacune associe une
expression régulière à un chemin relatif au :working-directory.
Faites maintenant correspondre l'URL au chemin '/home/user/example/products.php' en ajoutant
:réécrit les règles comme suit :
(setq org-protocol-project-alist
'(("exemple.com")
:base-url "https://example.com/"
:working-directory "/home/user/example/"
:online-suffix ".php"
:working-suffix ".php"
:rewrites (("exemple.com/print/" . "products.php")
("exemple.com/$" . "index.php")))))
Chapitre 17 : Divers 422

Étant donné que "exemple.com/$" est utilisé comme expression régulière, il associe "http://example.com/",
"https://example.com", "http://www.example.com/" et autres expressions similaires à
"/home/user/example/index.php".
Les règles :rewrites sont utilisées en dernier recours si et seulement si aucun nom
de fichier existant ne correspond.
Deux fonctions peuvent vous aider à remplir org-protocol-project-alist avec un
contenu valide : org-protocol-create et org-protocol-create-for-org. Cette
dernière est utile si vous éditez un fichier Org qui fait partie d'un projet de publication.

17.17 Org Crypt


Org Crypt crypte le texte d'une entrée, mais pas le titre ou les propriétés. Derrière la
scène, il utilise l'epa pour chiffrer et déchiffrer les fichiers, et EasyPG a besoin d'une
configuration gnupg correcte.
Tout texte situé sous un titre et comportant une balise "crypt" est automatiquement
crypté lors de l'enregistrement du fichier. Pour utiliser une balise différente,
personnalisez le paramètre org-crypt-tag-matcher.
Voici une suggestion pour les paramètres d'Org Crypt dans le fichier d'initialisation d'Emacs :
(require 'org-crypt)
(org-crypt-use-before-save-magic)
(setq org-tags-exclude-from-inheritance '("crypt"))

(setq org-crypt-key nil)


; ; clé GPG à utiliser pour le cryptage.
; ; nil signifie utiliser le chiffrement symétrique sans condition.
; ; "" signifie que le chiffrement symétrique est utilisé, sauf si l'en-tête définit
la propriété CRYPTKEY.

(setq auto-save-default nil)


; ; La sauvegarde automatique ne coopère pas avec org-crypt.el : vous devez donc
; désactivez-la si vous prévoyez d'utiliser org-crypt.el assez souvent. Dans le cas
contraire,
; vous recevrez un message (ennuyeux) à chaque fois que vous démarrerez Org.

; ; Pour le désactiver uniquement localement, vous pouvez insérer ceci :


; ;
; ; # -*- buffer-auto-save-file-name : nil ; -*-
Il est possible d'utiliser des clés différentes pour des rubriques différentes en
spécifiant la clé respective comme propriété "CRYPTKEY", par exemple :
* Totalement secret :crypt :
:PROPRIÉTÉS :
:CRYPTKEY: 0x0123456789012345678901234567890123456789
:FIN :
Notez que la propriété 'CRYPTKEY' n'est effective que si org-crypt-key est défini comme non nul.
La valeur nil de org-crypt-key permet à Org d'utiliser inconditionnellement le chiffrement symétrique.
L'exclusion de la balise "crypt" de l'héritage empêche le texte déjà crypté d'être
Chapitre 17 : Divers 423
crypté à nouveau.
Chapitre 17 : Divers 424

17.18 Org Mobile


Org Mobile est un protocole de synchronisation des fichiers Org entre Emacs et d'autres
applications, par exemple sur des appareils mobiles. Il permet des vues hors ligne et la
prise en charge de la capture pour un système en mode Org qui est enraciné sur un "vrai"
ordinateur. L'application externe peut également enregistrer les modifications apportées
aux entrées existantes.
Cette annexe décrit la prise en charge par Org des formats d'affichage de l'agenda
compatibles avec Org Mobile. Elle décrit également la synchronisation des
modifications, telles que les notes, entre l'application mobile et l'ordinateur.
Pour modifier les balises et les états TODO dans l'application mobile, il faut d'abord
personnaliser les variables org-todo-keywords, org-tag-alist et org-tag-
persistent-alist. Celles-ci devraient couvrir toutes les balises et les mots-clés TODO
importants, même si les fichiers Org n'utilisent que certains d'entre eux. Bien que
l'application mobile soit censée prendre en charge les réglages dans la mémoire
tampon, il est nécessaire de comprendre les ensembles d'états TODO (voir Section 5.2.5
[Mots clés par fichier], page 51) et les balises mutuellement exclusives (voir Section 6.2
[Définition des balises], page 61) uniquement pour ceux qui sont définis dans ces
variables.

17.18.1 Mise en place de la zone de transit


L'application mobile a besoin d'accéder à un répertoire de fichiers sur un serveur6 pour
interagir avec Emacs. Passez sa localisation à travers la variable org-mobile-
directory. Si vous pouvez monter ce répertoire localement, définissez simplement la
variable pour qu'elle pointe vers ce répertoire :
(setq org-mobile-directory "~/orgmobile/")
Alternativement, en utilisant TRAMP (voir tramp), org-mobile-directory peut
pointer vers un répertoire distant accessible par exemple par SSH, SCP, ou DAVS :
(setq org-mobile-directory "/davs:user@remote.host:/org/webdav/")
Avec un serveur public, envisagez de crypter les fichiers. Org nécessite également
l'installation d'OpenSSL sur l'ordinateur local. Pour activer le cryptage, définissez le
même mot de passe dans l'ap- plication mobile et dans Emacs. Définissez le mot de
passe dans la variable org-mobile-use-encryption7 . Notez que même après que
l'application mobile ait crypté le contenu du fichier, le nom du fichier reste visible sur les
systèmes de fichiers de l'ordinateur local, du serveur et de l'appareil mobile.

17.18.2 Pousser vers l'application mobile


La commande org-mobile-push copie les fichiers listés dans org-mobile-files dans
la zone de transit. Les fichiers incluent les fichiers d'agenda (listés dans org-agenda-
files). Personnalisez org-mobile-files pour ajouter d'autres fichiers. Les noms de
fichiers sont mis en scène avec des chemins relatifs à org-directory, donc tous les
fichiers doivent se trouver dans ce répertoire8 .
Push crée un fichier Org spécial "agendas.org" avec des vues d'agenda
personnalisées définies par l'utilisateur9 .
6
Pour un serveur destiné à héberger des fichiers, envisagez d'utiliser un serveur WebDAV, tel que
Nextcloud. Vous trouverez de l'aide supplémentaire dans cette entrée de la FAQ.
7
Si Emacs est configuré pour stocker les mots de passe en toute sécurité, configurez la variable org-
mobile-encryption- password ; veuillez lire la docstring de cette variable.
8 Les
liens symboliques dans le répertoire org doivent avoir le même nom que leurs cibles.
9
Lors de la création des agendas, le mode Org force les propriétés 'ID' sur toutes les entrées référencées,
Chapitre 17 : Divers 425
afin que ces entrées puissent être identifiées de manière unique si Org Mobile les signale pour une
action ultérieure. Pour éviter de définir des propriétés, configurez la variable org-mobile-force-id-on-
agenda-items à nil. Le mode Org s'appuie alors sur les chemins d'accès, en supposant qu'ils sont
uniques.
Chapitre 17 : Divers 426

Enfin, Org écrit le fichier "index.org", qui contient des liens vers d'autres fichiers.
L'application mobile lit d'abord ce fichier à partir du serveur afin de déterminer les autres
fichiers à télécharger pour les agendas. Pour des téléchargements plus rapides, il est
prévu de ne lire que les fichiers dont les sommes de contrôle10 ont été modifiées.

17.18.3 Extraction de l'application mobile


La commande org-mobile-pull synchronise les changements avec le serveur. Plus
précisément, elle extrait d'abord les fichiers Org pour les visualiser. Elle ajoute ensuite
les entrées capturées et les pointeurs vers les entrées marquées ou modifiées au fichier
'mobileorg.org' sur le serveur. Org intègre finalement ses données dans un format de
fichier de boîte de réception, en suivant les étapes suivantes :
1. Org déplace toutes les entrées trouvées dans 'mobileorg.org'11 et les ajoute au
fichier pointé par la variable org-mobile-inbox-for-pull. Ce fichier ne doit résider
ni dans la zone de transit, ni sur le serveur. Chaque entrée capturée et chaque
événement d'édition est une entrée de premier niveau dans le fichier de la boîte de
réception.
2. Après avoir déplacé les entrées, Org apporte des modifications aux fichiers
partagés. Certaines d'entre elles sont appliquées directement et sans interaction de
l'utilisateur. Il s'agit par exemple des modifications apportées aux balises, à l'état
TODO, aux titres et au corps du texte. Les entrées nécessitant une action
supplémentaire sont marquées comme 'FLAGGED'. Org marque les entrées
présentant des problèmes par un message d'erreur dans la boîte de réception. Ils
doivent être résolus manuellement.
3. Org génère une vue de l'agenda pour les entrées marquées afin que l'utilisateur
puisse intervenir pour les nettoyer. Pour les notes stockées dans les entrées
marquées, Org les affiche dans la zone d'écho lorsque le point est sur l'élément
d'agenda correspondant.
? L'appui sur ? affiche l'intégralité de la note marquée dans une autre
fenêtre. Org la pousse également vers le kill ring. Pour stocker la note
marquée comme une note normale, utilisez ? z C-y C-c C-c. Appuyer deux
fois sur ? a les effets suivants : premièrement, cela supprime la balise
'FLAGGED' ; deuxièmement, cela supprime la note marquée du tiroir des
propriétés ; troisièmement, cela signale que l'édition manuelle de
l'entrée marquée est maintenant terminée.
À partir du répartiteur d'agenda, ? retourne à la vue pour terminer le traitement des
entrées marquées. Notez que ces entrées peuvent ne pas être les plus récentes, car
l'application mobile recherche les fichiers qui ont été tirés en dernier. Pour obtenir une
vue actualisée de l'agenda avec les changements survenus depuis la dernière
extraction, il convient d'effectuer une nouvelle extraction.
Chapitre 17 : Divers 427

10
Les sommes de contrôle sont stockées automatiquement dans le fichier "checksums.dat".
11
Le fichier sera vide après cette opération.
Annexe A : Piratage 428

Annexe A Piratage
Cette annexe décrit quelques moyens par lesquels un utilisateur peut étendre les fonctionnalités d'Org.

A.1 Crochets
Org dispose d'un grand nombre de variables d'accroche permettant d'ajouter des
fonctionnalités. Cette annexe illustre l'utilisation de quelques-unes d'entre elles. Une liste
complète des crochets avec leur documentation est maintenue par le projet Worg à
l'adresse https://orgmode.org/worg/doc.html#hooks.

A.2 Paquets complémentaires


Plusieurs auteurs ont écrit un grand nombre de paquets complémentaires pour Org.
Certains de ces paquets faisaient partie du dépôt 'org-mode' mais sont maintenant
hébergés dans un dépôt séparé 'org-contrib' ici. Une page Worg contenant plus
d'informations se trouve à l'adresse suivante : https://orgmode.org/worg/ org-
contrib/.

A.3 Ajout de types de liens hypertextes


Org possède de nombreux types d'hyperliens intégrés (voir le chapitre 4 [Hyperliens],
page 38), ainsi qu'une interface permettant d'ajouter de nouveaux types de liens.
L'exemple suivant montre le processus d'ajout de liens Org aux pages de manuel Unix,
qui ressemblent à ceci
[[man:printf][Le manuel de printf]]]
Le fichier "ol-man.el" suivant l'implémente
;; ; ol-man.el - Prise en charge des liens vers les pages de
manuel en mode Org (nécessite 'ol)

(org-link-set-parameters "man"
:follow #'org-man-open
:export #'org-man-export
:store #'org-man-store-link)

(defcustom org-man-command 'man


"La commande Emacs à utiliser pour afficher une page de manuel".
:group 'org-link
:type '(choix (const homme) (const femme)))

(defun org-man-open (path _)


"Visitez la page de manuel
sur PATH.
PATH devrait être un sujet qui peut être lancé à la commande
man". (funcall org-man-command path))

(defun org-man-store-link ()
"Stocker un lien vers une
page de manuel".
(when (memq major-mode '(Man-mode woman-mode))
; ; Il s'agit d'une page de manuel, nous
Annexe A : Piratage 429
faisons ce lien. (let* ((page (org-man-get-
page-name))
Annexe A : Piratage 430

(link (concat "man :" page))


(description (format "Man page for %s"
page))) (org-link-store-props
:type "man"
:link link
:description description))))

(defun org-man-get-page-name ()
"Extraire le nom de la page du nom de la mémoire tampon".
; ; Cela fonctionne à la fois pour le mode "homme"
et le mode "femme". (if (string-match " \\N(\N-
+\N)\N*" (nom-tampon))
(match-string 1 (nom-tampon))
(error "Cannot create link to this man page")))

(defun org-man-export (link description format _)


"Exporter un lien vers une page de manuel à
partir de fichiers Org".
(let ((path (format "http://man.he.net/?topic=%s&section=all" link))
(desc (or description link)))
(format pcase
(`html (format "<a target=\N"_blank\N" href=\N"%s\N">%s</a>" path desc))
(`latex (format "\Nhref{%s}{%s}" path desc))
(`texinfo (format "@uref{%s,%s}" path
desc)) (`ascii (format "%s (%s)" desc
path))
(t path))))

(fournir ol-man)
;; ; ol-man.el se termine ici

Pour activer les liens vers les pages de manuel dans Org, entrez ceci dans le fichier Emacs init :

(nécessite 'ol-man)

Un examen de "ol-man.el" :

1. Tout d'abord, '(require 'ol)' s'assure que 'ol.el' est chargé.


2. Ensuite, org-link-set-parameters définit un nouveau type de lien avec le préfixe
'man' et as- socie des fonctions pour suivre, exporter et stocker de tels liens. Voir la
variable org-link-parameters pour une liste complète des associations possibles.
3. Le reste du fichier met en œuvre les variables et les fonctions nécessaires.
Par exemple, org-man-store-link est responsable du stockage d'un lien lorsque
org-store- link (voir Section 4.5 [Gestion des liens], page 42) est appelé à partir
d'un tampon affichant une page de manuel. Elle vérifie d'abord si le mode majeur
est approprié. Si la vérification échoue, la fonction renvoie nil, ce qui signifie qu'elle
n'est pas responsable de la création d'un lien vers le tampon actuel. Sinon, la
fonction crée une chaîne de liens en combinant le préfixe 'man:' avec le sujet de
la page de manuel. Elle fournit également une description par défaut. La fonction
Annexe A : Piratage 431
org-insert-link peut l'insérer à nouveau dans un tampon Org ultérieurement.
Annexe A : Piratage 432

A.4 Ajout de back-ends d'exportation


Le moteur d'exportation d'Org facilite l'écriture de nouveaux back-ends. Le cadre sur
lequel le moteur a été construit permet de dériver facilement de nouveaux back-ends à
partir de ceux qui existent déjà.
Les deux principaux points d'entrée du moteur d'exportation sont : org-export-
define-backend et org-export-define-derived-backend. Pour comprendre ces
fonctions, voir 'ox-latex.el' pour un exemple de définition d'un nouveau back-end à
partir de zéro, et 'ox-beamer.el' pour un exemple de dérivation à partir d'un moteur
existant.
Pour créer un nouveau back-end à partir de zéro, définissez d'abord son nom en tant
que symbole dans une liste d'éléments et de fonctions d'exportation. Pour rendre le
back-end visible au distributeur d'exportation, définissez le mot-clé :menu-entry. Pour
les options d'exportation spécifiques à ce back-end, définissez le mot-clé :menu-entry.
:options-alist.
Pour créer un nouveau back-end à partir d'un back-end existant, donnez à
:translate-alist la valeur d'une liste de fonctions d'exportation. Cette liste remplace
les fonctions du back-end parent.
Pour une documentation complète, voir le document Org Export Reference sur Worg.

A.5 Tableaux en syntaxe arbitraire


En raison du succès d'Org dans le traitement des tableaux avec Orgtbl, une
fonctionnalité fréquemment demandée est l'utilisation des fonctions de tableau d'Org
dans d'autres modes, par exemple, LATEX. Il serait difficile de le faire d'une manière
générale sans cauchemars compliqués de personnalisation. De plus, cela éloignerait
Org de ses racines de simplicité qu'Orgtbl a prouvées. Il existe cependant une autre
approche pour réaliser la même chose.
Cette approche implique la mise en œuvre d'une fonction de traduction personnalisée
qui opère sur un tableau source Org natif pour produire un tableau dans un autre format.
Cette stratégie permet de conserver l'excellent fonctionnement d'Orgtbl et d'isoler les
complications éventuelles, qui se limitent à la fonction de traduction. Pour ajouter d'autres
formats de tableaux étrangers, il suffit d'ajouter d'autres fonctions de traduction. De plus,
le développement de fonctions de traduction personnalisées pour les nouveaux formats
de tableaux est confié à ceux qui connaissent le mieux ces formats.

A.5.1 Tableaux radio


Les tables radio sont des emplacements cibles pour les tables traduites qui ne sont pas
proches de leur source. Org trouve l'emplacement cible et insère le tableau traduit.
La clé pour trouver l'emplacement cible est le mot magique "BEGIN/END RECEIVE ORGTBL".
Ils doivent apparaître comme des commentaires dans le mode actuel. Si le mode est C, alors :
/* BEGIN RECEIVE ORGTBL table_name */
/* END RECEIVE ORGTBL table_name */
À l'emplacement de la source, Org a besoin d'une ligne spéciale pour ordonner à
Orgtbl de traduire et de trouver la cible pour insérer le tableau traduit. Par exemple :
#+ORGTBL : SEND table_name translation_function arguments ...
'nom_table' est le nom de référence de la table, qui est également utilisé dans les lignes
de réception, et 'fonction_traduction' est la fonction Lisp qui effectue la traduction.
Cette ligne peut en outre contenir des arguments de clé et de valeur alternés à la fin. La
Annexe A : Piratage 433
fonction de traduction obtient ces valeurs sous la forme d'une liste de propriétés. Quelques
paramètres standard sont déjà reconnus et traités avant que la fonction de traduction ne
soit appelée :
Annexe A : Piratage 434

':skip N' Sauter les N premières lignes du tableau.Les lignes H comptent ; incluez-les
si elles doivent être ignorées.
':skipcols (n1 n2 ...)'
Liste des colonnes à ignorer. First Org écarte automatiquement les colonnes
comportant des marques de calcul et envoie ensuite le tableau à la fonction
de traduction, qui saute alors les colonnes comme spécifié dans 'skipcols'.
Pour que le tableau source reste intact dans la mémoire tampon sans être perturbé
lors de la compilation du fichier source ou d'une autre opération, utilisez l'une des
stratégies suivantes :
• Placez le tableau dans un commentaire de bloc. Par exemple, en mode C, vous
pouvez placer le tableau entre les lignes '/*' et '*/'.
• Placez le tableau après une déclaration de "fin". Par exemple, \ebye en TEX et \eend{document}
en LATEX.
• Commentez et dé-commentez chaque ligne du tableau pendant les modifications.
La commande M-x orgtbl- toggle-comment facilite cette opération.

A.5.2 Un exemple L A T E X de tables radio


Pour envelopper un tableau source dans LATEX, utilisez l'environnement "comment" fourni
par "comment.sty"1 . Pour l'activer, placez \usepackage{comment} dans l'en-tête du
document. Le mode Orgtbl insère un squelette de table radio2 avec la commande M-x
orgtbl-insert-radio-table, qui demande un nom de table. Par exemple, si le nom est
"salesfigures", le modèle insère :
% BEGIN RECEIVE ORGTBL salesfigures
% END RECEIVE ORGTBL salesfigures
\begin{comment}
#+ORGTBL : SEND salesfigures orgtbl-to-latex
| | |
\n-{comment}
La ligne '#+ORGTBL : SEND' indique au mode Orgtbl d'utiliser la fonction orgtbl-to-
latex pour convertir le tableau au format LATEX, puis d'insérer le tableau à
l'emplacement cible (réception) nommé 'salesfigures'. Le tableau est maintenant prêt
pour la saisie des données. Il peut même utiliser les fonctions du tableur3 :
% BEGIN RECEIVE ORGTBL salesfigures
% END RECEIVE ORGTBL salesfigures
\begin{comment}
#+ORGTBL : SEND salesfigures orgtbl-to-latex
| Nombre d'unités vendues par jour
|-------+------+---------+------------------|
| Jan |23 |55 |2 .4 |
1
https://www.ctan.org/pkg/comment
2
Par défaut, cela ne fonctionne que pour LATEX, HTML et Texinfo. Configurez la variable orgtbl-radio-
table- templates pour installer des modèles pour d'autres modes.
3
Si le mot-clé 'TBLFM' contient un nombre impair de caractères dollar, cela peut causer des problèmes
avec Font Lock en mode LATEX. Comme le montre l'exemple, vous pouvez résoudre ce problème
en ajoutant une ligne supplémentaire à l'intérieur de l'environnement "comment" qui est utilisé pour
équilibrer les expressions en dollars. Si vous utilisez AUCTEX avec la bibliothèque font-latex, une
bien meilleure solution consiste à ajouter l'environnement 'comment' à la variable LaTeX-verbatim-
environments.
Annexe A : Piratage 435

| Fév | 21 | 16 | 0.8 |
| mars | 22 | 278 | 12.6 |
#+TBLFM : $4=$3/$2;%.1f
% $ (dollar supplémentaire facultatif pour satisfaire Font Lock, voir note de bas de
page)
\n-{comment}
Après l'édition, C-c C-c insère le tableau traduit à l'emplacement cible, entre les
deux lignes de repère.
Pour les tableaux personnalisés faits à la main, notez que le traducteur doit sauter les
deux premières lignes du tableau source. La commande doit également couper le
tableau cible sans l'en-tête et le pied de page.
\begin{tabular}{lrrr}
Mois & \multicolumn{1}{c}{Days} & Nr. \N vendu & par jour\N
% BEGIN RECEIVE ORGTBL salesfigures
% END RECEIVE ORGTBL salesfigures
\N-END{tabular}
%
\begin{comment}
#+ORGTBL : SEND salesfigures orgtbl-to-latex :splice t :skip 2
| Nombre d'unités vendues par jour
|-------+------+---------+------------------|
| Jan | 23 | 55 | 2.4 |
| Fév | 21 | 16 | 0.8 |
| Mars | 22 | 278 | 12.6 |
#+TBLFM : $4=$3/$2;%.1f
\n-{comment}
La fonction de traduction LATEX orgtbl-to-latex fait déjà partie du mode Orgtbl et
utilise un environnement 'tabular' pour saisir le tableau et marque les lignes
horizontales avec \hline. Pour des paramètres supplémentaires permettant de contrôler
la sortie, voir la section A. 5.3 [Fonctions du traducteur], page 270 :
':splice BOOLEAN'
Lorsque {{var(BOOLEAN}} n'est pas nulle, ne renvoie que les lignes du corps
du tableau, c'est-à-dire qu'elles ne sont pas enveloppées dans
l'environnement "tabular". La valeur par défaut est nil.
':fmt FMT' Chaîne de format pour déformer chaque champ. Elle doit contenir '%s' pour la
valeur originale du champ. Par exemple, pour envelopper chaque valeur de
champ dans le symbole du dollar, vous pouvez utiliser ':fmt "$%s$"'. Le
format peut également envelopper une liste de propriétés avec des numéros
de colonnes et des formats, par exemple ':fmt (2 "$%s$" 4 "%s\%%")'. Au
lieu d'une chaîne de caractères, une fonction à un argument peut être
utilisée ; la fonction doit renvoyer une chaîne de caractères formatée.
':efmt EFMT
Formatage des nombres sous forme d'exponentielles. La spécification doit
comporter deux fois '%s' pour insérer la mantisse et l'exposant, par exemple
'"%s\times10^{%s}". Il peut également s'agir d'une liste de propriétés avec
des numéros de colonnes et des formats, par exemple ':efmt (2
"$%s\times10^{%s}$" 4 "$%s\cdot10^{%s}$")". Une fois que EFMT a été
appliqué à une valeur, FMT - voir ci-dessus - est également appliqué. Les
fonctions à deux ar- guments peuvent être fournies à la place des chaînes
de caractères. Par défaut, aucun formatage spécial n'est appliqué.
Annexe A : Piratage 436

A.5.3 Fonctions du traducteur


Le mode Orgtbl dispose de fonctions de traduction intégrées : orgtbl-to-csv (valeurs
séparées par des virgules), orgtbl-to-tsv (valeurs séparées par des tabulations),
orgtbl-to-latex, orgtbl-to-html, orgtbl-to- texinfo, orgtbl-to-unicode et
orgtbl-to-orgtbl. Ils utilisent le traducteur générique, orgtbl-to-generic, qui
délègue les traductions à différents back-ends d'exportation.
Les propriétés transmises à la fonction par l'intermédiaire de la ligne "ORGTBL SEND"
ont la priorité sur les propriétés définies à l'intérieur de la fonction. Par exemple, cette
fonction remplace les fins de ligne LATEX par défaut, \\N par \N[2mm] :
#+ORGTBL : SEND test orgtbl-to-latex :lend " \\\\[2mm]"
Pour un nouveau traducteur de langue, définissez une fonction de conversion. Il peut
s'agir d'une fonction générique, comme dans cet exemple. Elle marque le début et la fin
d'un tableau avec '!BTBL!' et '!ETBL!' ; le début et la fin des lignes avec '!BL!' et '!EL!' ;
et utilise un TAB comme séparateur de champs :
(defun orgtbl-to-language (table params)
"Convertit la TABLE orgtbl-mode en langue".
(orgtbl-to-generic
table
(org-combine-plists
'(:tstart "!BTBL !" :tend "!ETBL !" :lstart "!BL !" :lend "!EL !" :sep
"\t") params)))
La documentation de la fonction orgtbl-to-generic présente une liste complète de
paramètres, dont chacun peut être transmis à orgtbl-to-latex, orgtbl-to-texinfo
et à toute autre fonction utilisant cette fonction générique.
Pour les traductions complexes, la fonction de traduction générique peut être
remplacée par une fonction de traduction personnalisée. Une telle fonction personnalisée
doit prendre deux arguments et renvoyer une chaîne unique contenant le tableau
formaté. Le premier argument est le tableau dont les lignes sont une liste de champs ou
le symbole hline. Le second argument est la liste des propriétés composée des
paramètres spécifiés dans la ligne '#+ORGTBL : SEND'. Veuillez partager vos fonctions
de traducteur en les envoyant à la liste de diffusion des utilisateurs d'Org, à l'adresse
emacs-orgmode@gnu.org.

A.6 Blocs dynamiques


Org prend en charge les blocs dynamiques dans les documents Org. Ils sont insérés avec
des marqueurs de début et de fin comme tout autre bloc de code, mais leur contenu est
mis à jour automatiquement par une fonction utilisateur.
Vous pouvez insérer un bloc dynamique avec org-dynamic-block-insert-
dblock, qui est lié à C-c C-x x par défaut. Par exemple, C-c C-x x c l o c k t a b l e RET
insère une table qui met à jour le temps de travail (voir Section 8.4 [Horodatage du
temps de travail], page 84).
Les blocs dynamiques peuvent avoir des noms et des paramètres de fonction. La
syntaxe est similaire aux spécifications des blocs du code source :
#+BEGIN : myblock :parameter1 value1 :parameter2 value2 ...
...
#+END
:
Annexe A : Piratage 437
Ces commandes mettent à jour les blocs dynamiques :
Annexe A : Piratage 438

C-c C-x C-u (org-dblock-update)


Mise à jour du bloc dynamique au point.
C-u C-c C-x C-u
Mise à jour de tous les blocs dynamiques dans le fichier actuel.
Avant de mettre à jour un bloc dynamique, Org supprime le contenu entre les
marqueurs "BEGIN" et "END". Org lit ensuite les paramètres de la ligne 'BEGIN' pour les
transmettre à la fonction d'écriture sous la forme d'une liste déroulante. Le contenu
précédent du bloc dynamique est effacé de la mémoire tampon et ajouté à la liste sous
:content.
La syntaxe pour nommer une fonction writer avec un bloc dynamique appelé "myblock" est la suivante :
org-dblock-write:myblock.
Voici un exemple de bloc dynamique et de fonction d'écriture de bloc qui met à jour
l'heure à laquelle la fonction a été exécutée pour la dernière fois :
#+BEGIN : block-update-time :format "on %m/%d/%Y at %H:%M"
...
#+END
:
La fonction de rédacteur du bloc dynamique :
(defun org-dblock-write:block-update-time (params)
(let ((fmt (or (plist-get params :format) "%d. %m. %Y"))
(insert "Dernière mise à jour du bloc à : "
(formatage de la chaîne de temps fmt))))
Pour maintenir les blocs dynamiques à jour dans un fichier Org, utilisez la fonction
org-update-all- dblocks dans un hook, tel que before-save-hook. La fonction org-
update-all-dblocks ne s'exécute pas si le fichier n'est pas en mode Org.
Les blocs dynamiques, comme tout autre bloc, peuvent être réduits avec org-narrow-to-block.

A.7 Vues spéciales de l'ordre du jour


Org fournit un crochet spécial pour limiter davantage les éléments dans les vues
d'agenda : agenda, agenda*4 , todo, alltodo, tags, tags-todo, tags-tree. Spécifiez
une fonction personnalisée qui teste l'inclusion de chaque élément correspondant dans
la vue. Cette fonction peut également sauter autant d'éléments que nécessaire.
Pour une condition globale applicable aux vues de l'agenda, utilisez la variable globale
org-agenda-skip-function-. Org utilise une condition globale avec org-agenda-skip-
function pour une recherche personnalisée.
Cet exemple définit une fonction pour une vue personnalisée affichant les éléments
TODO ayant un statut "en attente". Manuellement, il s'agit d'un processus de
recherche en plusieurs étapes, mais avec une vue personnalisée, cela peut être
automatisé comme suit :
La fonction personnalisée recherche la balise 'waiting' dans le sous-arbre et renvoie
nil en cas de correspondance. Dans le cas contraire, elle indique l'emplacement à
partir duquel la recherche se poursuit.
(defun my-skip-unless-waiting ()
"Sauter les arbres qui ne sont
pas en attente"
(let ((subtree-end (save-excursion (org-end-of-subtree t))))
Annexe A : Piratage 439
4
La vue agenda* est identique à la vue agenda, sauf qu'elle ne prend en compte que les rendez-vous, c'est-
à-dire les éléments programmés et à échéance dont l'horodatage comporte la mention "[h]h:mm".
Annexe A : Piratage 440

(if (re-search-forward ":waiting :" subtree-end


t) nil ; tag found, do not skip
subtree-end))) ; balise non trouvée, continuer après la fin du sous-arbre
Pour utiliser cette fonction personnalisée dans une commande d'agenda personnalisée :
(org-add-agenda-custom-command
'("b" todo "PROJECT"
((org-agenda-skip-function 'my-skip-unless-waiting))
(org-agenda-overriding-header "Projets en attente de quelque chose : "))))
Notez que cela lie également org-agenda-overriding-header à une chaîne plus
significative adaptée à la vue de l'agenda.
Recherche d'entrées avec une limite fixée sur les niveaux de la recherche
personnalisée. Il s'agit d'une approche générale de la création de recherches
personnalisées dans Org. Pour inclure tous les niveaux, utilisez 'NIVEAU>0'5 . Ensuite,
pour sélectionner les entrées correspondantes, utilisez org-agenda-skip-function, qui
accepte également les formes Lisp, telles que org-agenda-skip-entry-if et org-
agenda-skip-subtree-if. Par exemple, la fonction org-agenda-skip-entry-function
(org-agenda-skip-entry-if "programmé")
Sauter l'entrée en cours si elle a été programmée.
(org-agenda-skip-entry-if "notscheduled")
Sauter l'entrée en cours si elle n'a pas été programmée.
(org-agenda-skip-entry-if 'deadline)
Sauter l'entrée en cours si elle a une date limite.
(org-agenda-skip-entry-if 'scheduled 'deadline)')
Sauter l'entrée en cours si elle a une date limite ou si elle est programmée.
(org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))'
Sauter l'entrée en cours si le mot-clé TODO est TODO ou WAITING.
(org-agenda-skip-entry-if 'todo 'done)'' (org-agenda-skip-entry-if 'todo 'done)')
Sauter l'entrée en cours si le mot-clé TODO marque un état DONE.
(org-agenda-skip-entry-if 'timestamp)'
Sauter l'entrée en cours si elle a un horodatage, peut également être un délai ou un calendrier.
(org-agenda-skip-entry-if 'regexp "expression régulière")
Sauter l'entrée actuelle si l'expression régulière correspond à l'entrée.
(org-agenda-skip-entry-if 'notregexp "expression
régulière")' Sauter l'entrée en cours à moins que
l'expression régulière ne corresponde.
'(org-agenda-skip-subtree-if 'regexp "expression
régulière")' Identique au précédent, mais vérifie et
saute le sous-arbre entier.
Voici un exemple de recherche de "attente" sans la fonction spéciale :
(org-add-agenda-custom-command
'("b" todo "PROJECT"
5
Notez que, pour org-odd-levels-only, un numéro de niveau correspond à l'ordre dans la hiérarchie, et
non au nombre d'étoiles.
Annexe A : Piratage 441

((org-agenda-skip-function '(org-agenda-skip-subtree-if
'regexp ":waiting :"))
(org-agenda-overriding-header "Projets en attente de quelque chose : "))))

A.8 Accélérer vos agendas


Certaines commandes de l'agenda ralentissent lorsque les fichiers Org augmentent en
taille ou en nombre. Voici quelques conseils pour accélérer le processus :
• Réduire le nombre de fichiers de l'agenda Org pour éviter les ralentissements dus aux accès au disque
dur.
• Réduire le nombre d'en-têtes FAIT et archivé afin que les opérations d'agenda qui
sautent ces en-têtes puissent se terminer plus rapidement.
• Ne diminuez pas les tâches bloquées :
(setq org-agenda-dim-blocked-tasks nil)
• Ne plus préparer les tampons de l'agenda au démarrage :
(setq org-agenda-inhibit-startup t)
• Désactiver l'héritage des balises pour les agendas :
(setq org-agenda-use-tag-inheritance nil)
• Désactiver l'analyse de certaines propriétés des tiroirs :
(setq org-agenda-ignore-properties '(effort appt stats category))
Les propriétés des tiroirs que vous pouvez désactiver dans l'agenda sont les
estimations de l'effort (effort), les rendez-vous (appt), les statistiques (stats) et
les catégories sous-locales (category).
Ces options peuvent être appliquées aux vues d'agenda sélectionnées. Pour plus de
détails sur la génération des vues de l'agenda, voir les documents relatifs aux variables
concernées et cette page Worg dédiée à l'optimisation de l'agenda.

A.9 Extraction d'informations sur l'agenda


Org fournit des commandes permettant d'accéder aux agendas par le biais du mode
batch d'Emacs. Grâce à cette interface de ligne de commande, les agendas sont
automatisés en vue d'un traitement ultérieur ou d'une impression.
org-batch-agenda crée une vue de l'agenda en ASCII et l'affiche sur la sortie
standard. Cette commande prend un paramètre de type chaîne de caractères. Lorsque
la chaîne est constituée d'un seul caractère, Org l'utilise comme clé pour org-agenda-
custom-commands. Ce sont les mêmes que celles disponibles via le répartiteur d'agenda
(voir Section 11.2 [Répartiteur d'agenda], page 110).
Cet exemple de ligne de commande imprime directement la liste TODO sur l'imprimante :
emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
Lorsque la longueur du paramètre de la chaîne est de deux caractères ou plus, Org
la fait correspondre aux chaînes de balises/TODO. Par exemple, cette ligne de
commande imprime les éléments étiquetés avec 'shop', mais exclut les éléments
étiquetés avec 'NewYork' :
emacs -batch -l ~/.emacs \
-eval '(org-batch-agenda "+shop-NewYork")' | lpr
Exemple de modification de paramètres à la volée :
emacs -batch -l ~/.emacs \
Annexe A : Piratage 442
-eval '(org-batch-agenda "a") \
Annexe A : Piratage 443

org-agenda-span (mois de citation) \


org-agenda-include-diary
n
il\ org-agenda-files (quote
("~/org/project.org")))'' \
| lpr
qui produit un agenda pour les 30 prochains jours à partir du seul fichier
'~/org/projects.org'. Pour un traitement structuré de l'agenda, utilisez org-batch-
agenda-csv avec les options suivantes
les champs d'épandage :
catégorieCatégorie de l'article
headLe titre, sans le mot-clé TODO, TAGS et PRIORITY typeLe
type de l'entrée de l'agenda, peut être
todo sélectionné dans la correspondance TODO
tagsmatch sélectionné dans tagsmatch
journal importé de l'agenda
délai un délai
programmé programmé
horodatage rendez-vous, sélectionné par horodatage
fermé l'entrée a été fermée à la date
prévue upcoming-deadline avertissement
concernant l'approche de l'échéance past-scheduled
article programmé transmis
bloc l'entrée comporte un bloc de date incluant la date
todoLe mot-clé TODO, le cas échéant
balises Toutes les balises, y compris celles héritées,
séparées par des deux points dateLa date pertinente,
comme '2007-2-14'.
l'heure L'heure, par exemple "15:00-
16:50" extraString avec des
informations supplémentaires sur la
planification
priority-lLa lettre de priorité, si elle a été
donnée priority-nLa priorité numérique
calculée
Si la sélection du point de l'ordre du jour est basée sur un horodatage, y compris les
points comportant les mots-clés "DEADLINE" et "SCHEDULED", Org inclut la date et l'heure
dans le résultat.
Si la sélection du point de l'ordre du jour est basée sur un horodatage (ou
délai/programme), Org inclut la date et l'heure dans le résultat.
Voici un exemple de script de post-traitement en Perl. Il prend la sortie CSV d'Emacs
et l'imprime avec une case à cocher :
#!/usr/bin/perl
Annexe A : Piratage 444
# définir la commande Emacs à exécuter
$cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'" ;

# l'exécuter et capturer la sortie


$agenda = qx{$cmd 2>/dev/null} ;
Annexe A : Piratage 445

# boucle sur toutes les lignes


foreach $line (split(/\n/,$agenda))
{ # get the individual values
($category,$head,$type,$todo,$tags,$date,$time,$extra,
$priority_l,$priority_n) = split(/,/,$line)
; # traiter et imprimer
print "[ ] $head\n" ;
}

A.10 Utilisation de l'API sur les propriétés


Voici une description des fonctions qui peuvent être utilisées pour travailler
avec les propriétés. [Fonction]
org-entry-properties &optional pom which
Obtenir toutes les propriétés de l'entrée au point ou marqueur POM. Cela inclut le TODO
le mot-clé, les balises, les chaînes de temps pour l'échéance, la planification et
l'horloge, et toutes les propriétés additives définies dans l'entrée. La valeur de
retour est une liste. Les clés peuvent apparaître plusieurs fois si la clé de la
propriété a été utilisée plusieurs fois. POM peut également être nul, auquel cas
l'entrée en cours est utilisée. Si WHICH est nil ou all, toutes les propriétés sont
obtenues. Si WHICH est special ou standard, seule la sous-classe concernée est
obtenue.
org-entry-get pom property &optional inherit [Fonction]
Obtenir la valeur de la PROPRIÉTÉ pour l'entrée au point ou marqueur POM. Par défaut, il s'agit
uniquement de
examine les propriétés définies localement dans l'entrée. Si INHERIT est non nul
et que l'entrée ne possède pas la propriété, il faut également vérifier les niveaux
supérieurs de la hiérarchie. Si INHERIT est le symbole sélectif, utiliser l'héritage
si et seulement si le paramètre org-use-property-inheritance sélectionne
PROPERTY pour l'héritage.
org-entry-delete pom property Fonction]
Supprimer la propriété PROPRIÉTÉ de l'entrée au point ou
marqueur POM. [Fonction]
org-entry-put pom property value
Attribuer la valeur VALUE à la PROPRIÉTÉ pour l'entrée au point ou [Fonction]
marqueur POM.
org-buffer-property-keys &optional include-specials [Fonction]
Récupère toutes les clés de propriétés dans le tampon actuel.
org-insert-property-drawer [Fonction]
Insérer un tiroir de propriétés pour l'entrée en cours. De même
org-entry-put-multivalued-property pom property &rest values [Fonction]
Attribuer la valeur VALUES à la PROPRIÉTÉ du point ou du marqueur POM. VALUES doit être une
liste de
chaînes de caractères. Elles sont concaténées, avec des espaces comme séparateurs.
org-entry-get-multivalued-property pom property [Fonction]
Traiter la valeur de la propriété PROPERTY comme une liste de valeurs séparées par des espaces.
Annexe A : Piratage 446

et renvoie les valeurs sous la forme d'une liste de chaînes de caractères.


org-entry-add-to-multivalued-property pom property value [Fonction]
Traiter la valeur de la propriété PROPERTY comme une liste de valeurs séparées par des espaces.
et assurez-vous que VALUE figure dans cette liste.
Annexe A : Piratage 447

org-entry-remove-from-multivalued-property pom property value [Fonction]


Traiter la valeur de la propriété PROPERTY comme une liste de valeurs séparées par des espaces.
et assurez-vous que VALUE ne figure pas dans cette liste.
org-entry-member-in-multivalued-property pom property value [Fonction]
Traiter la valeur de la propriété PROPERTY comme une liste de valeurs séparées par des espaces.
et vérifiez si VALUE figure dans cette liste.
org-property-allowed-value-functions [Option utilisateur]
Accroche pour les fonctions fournissant des valeurs autorisées pour une propriété spécifique. Les
fonctions
doit prendre un seul argument, le nom de la propriété, et renvoyer une liste plate
des valeurs autorisées. Si ':ETC' est l'une des valeurs, les valeurs sont utilisées
comme aide à l'achèvement, mais d'autres valeurs peuvent également être
saisies. Les fonctions doivent retourner nil si elles ne sont pas responsables de
cette propriété.

A.11 Utilisation de l'API de cartographie


Org dispose de capacités de mappage sophistiquées pour trouver toutes les entrées
répondant à certains critères. En interne, cette fonctionnalité est utilisée pour produire
des vues d'agenda, mais il existe également une API qui peut être utilisée pour exécuter
des fonctions arbitraires pour chaque entrée ou pour des entrées sélectionnées. Le point
d'entrée principal de cette API est :
org-map-entries func &optional match scope &rest skip [Fonction]
Appeler FUNC à chaque titre sélectionné par MATCH dans
SCOPE.
FUNC est une fonction ou une forme Lisp. Avec point positionné au début du
titre, appelez la fonction sans arguments. Org renvoie une liste des valeurs de
retour des appels à la fonction.
Pour éviter de préserver le point, Org enveloppe l'appel à FUNC dans la forme
save-excursion. Après l'évaluation, Org déplace le point à la fin de la ligne qui
vient d'être traitée. La recherche se poursuit à partir de ce point. Cela ne
fonctionne pas toujours comme prévu dans certaines conditions, par exemple si le
sous-arbre actuel a été supprimé par une opération d'archivage précédente. Dans
de telles circonstances, Org saute complètement l'entrée suivante alors qu'il ne
devrait pas le faire. Pour empêcher Org de faire de tels sauts, FUNC doit définir la
variable org-map-continue-from à une position spécifique du tampon.
MATCH est une correspondance tags/property/TODO. Org n'itère que sur les titres
correspondants. Org itère sur tous les titres lorsque MATCH est nil ou t.
SCOPE détermine la portée de cette commande. Il peut s'agir de l'un des éléments suivants
nil La mémoire tampon actuelle, en respectant la restriction, le cas échéant.
arbre Le sous-arbre commencé par l'entrée au
point. region Les entrées dans la région active, le cas
échéant. file Le tampon actuel, sans restriction.
file-with-archives
Le tampon actuel et toutes les archives qui lui sont associées.
Annexe A : Piratage 448

agenda Tous les dossiers de l'ordre du jour.


Annexe A : Piratage 449

agenda-avec-archives
Tous les fichiers de l'agenda avec les fichiers d'archives qui leur sont associés.
liste des noms de fichiers
S'il s'agit d'une liste, tous les fichiers de la liste sont analysés.
Les autres arguments sont traités comme des paramètres pour les fonctions de
saut du scanner. Les arguments valides sont les suivants :
archive Ignorer les arbres avec la balise
'ARCHIVE'. comment Sauter les arbres contenant le
mot-clé COMMENT. fonction ou forme Lisp
Utilisé comme valeur pour org-agenda-skip-function, de sorte que chaque fois que la
fonction
retourne t, FUNC est appelé pour cette entrée et la recherche se
poursuit à partir du point où la fonction l'a quittée.

La routine de mappage peut appeler n'importe quelle fonction arbitraire, même les
fonctions qui modifient les métadonnées ou interrogent l'API des propriétés (voir la
section A.10 [Utilisation de l'API des propriétés], page 275). Voici quelques fonctions
pratiques :

org-todo &optional arg [Fonction]


Change l'état TODO de l'entrée. Voir la docstring des fonctions pour les détails.
les valeurs possibles pour l'argument ARG.
org-priority &optional action [Fonction].
Modifier la priorité de l'entrée. Voir la docstring de cette fonction pour les options possibles.
pour ACTION.
org-toggle-tag tag &optional onoff [Fonction]
Bascule la balise TAG dans l'entrée en cours. Le fait de régler ONOFF sur on ou off a pour effet de
ne pas faire basculer l'étiquette, mais s'assurer qu'elle est soit activée, soit désactivée.
org-promouvoir [Fonction]
Promouvoir l'entrée
actuelle. [Fonction]
org-demote
Rétrograder l'entrée
actuelle.
Cet exemple transforme toutes les entrées marquées par 'DEMAIN' en entrées TODO
avec le mot-clé 'A VENIR'. Org ignore les entrées dans les arbres de commentaires et les
arbres d'archives.
(org-map-entries '(org-todo "UPCOMING")
"+TOMORROW" 'fichier 'archive 'commentaire)
L'exemple suivant compte le nombre d'entrées avec le mot-clé TODO "EN ATTENTE",
dans tous les fichiers de l'agenda.
(length (org-map-entries t "/+WAITING" 'agenda))
Annexe B : Historique et remerciements 450

Annexe B Histoire et Remerciements

B.1 De Carsten
Org est né en 2003, d'une frustration liée à l'interface utilisateur du mode Outline
d'Emacs. J'essayais d'organiser mes notes et mes projets, et l'utilisation d'Emacs
semblait être la solution naturelle. Cependant, devoir se souvenir de onze commandes
différentes, avec deux ou trois touches par commande, uniquement pour cacher et
afficher des parties de l'arborescence, me paraissait tout à fait inacceptable. De plus,
lorsque j'utilisais les contours pour prendre des notes, je voulais constamment
restructurer l'arbre, en l'organisant parallèlement à mes pensées et à mes plans. Le
cycle de visibilité et l'édition de la structure ont été implémentés à l'origine dans le
paquetage "outline-magic.el", mais ont été rapidement déplacés vers le paquetage
plus général "org.el". Cet environnement étant devenu confortable pour la planification
de projets, l'étape suivante a consisté à ajouter les entrées TODO, les horodatages de
base et la prise en charge des tableaux. Ces éléments ont mis en évidence les deux
principaux objectifs qu'Org poursuit encore aujourd'hui : être un nouveau mode de
texte brut basé sur les contours, avec des fonctions d'édition innovantes et intuitives, et
intégrer des fonctionnalités de planification de projet directement dans un fichier de
notes.
Depuis la première version, des milliers de courriels qui m'ont été adressés ou qui ont
été envoyés à la liste de diffusion ont fourni un flux constant de rapports de bogues, de
commentaires, de nouvelles idées, et parfois de correctifs et de codes complémentaires.
Un grand merci à tous ceux qui ont contribué à l'amélioration de ce paquet. J'essaie de
conserver ici une liste des personnes qui ont eu une influence significative sur
l'élaboration d'un ou plusieurs aspects d'Org. Cette liste n'est peut-être pas complète, et
si j'ai oublié quelqu'un, je vous prie de m'en excuser et de me le faire savoir.
Avant d'aborder cette liste, quelques mentions spéciales s'imposent :
Bastien Guerry
Bastien a écrit un grand nombre d'extensions pour Org (la plupart d'entre
elles sont maintenant intégrées au noyau), y compris l'exportateur LATEX et
l'analyseur de listes simples. Son soutien durant les premiers jours a été
essentiel à la réussite de ce projet. Bastien a également inventé Worg, a
aidé à établir la présence d'Org sur le Web et a financé les coûts
d'hébergement du site orgmode.org. Bastien a pris le relais en tant que
mainteneur d'Org entre 2011 et 2013, à un moment où j'avais
désespérément besoin d'une pause.
Eric Schulte et Dan Davison
Eric et Dan sont conjointement responsables du système Babel d'Org, qui
transforme Org en un environnement multilingue permettant d'évaluer le
code, de faire de la programmation lettrée et de la recherche reproductible.
Ce système est devenu l'une des fonctions phares d'Org, qui définit ce
qu'est Org aujourd'hui.
John Wiegley
John a contribué à un certain nombre de grandes idées et de correctifs
directement dans Org, y compris le système d'attachement ('org-
attach.el'), l'intégration avec Apple Mail ('org-mac-message.el'), les
dépendances hiérarchiques des éléments TODO, le suivi des habitudes
('org-habits.el'), et le cryptage ('org-crypt.el'). De plus, le système de
captures est en fait une copie étendue de son excellent "remember.el".
Annexe B : Historique et remerciements 451
Sebastian Rose
Sans Sebastian, la publication HTML/XHTML d'Org serait le travail pitoyable
d'un amateur ignorant. Sebastian a poussé cette partie d'Org sur un
Annexe B : Historique et remerciements 452

à un niveau beaucoup plus élevé. Il a également écrit "org-info.js", un


programme JavaScript permettant d'afficher des pages web dérivées d'Org à
l'aide d'une interface de type Info- ou d'une interface de pliage avec
navigation à une seule touche.
Voir ci-dessous la liste complète des contributions ! Encore une fois, n'hésitez pas à
me faire savoir ce que j'ai manqué ici !

B.2 De Bastien
C'est moi (Bastien) qui ai assuré la maintenance d'Org entre 2011 et 2013. Cette
annexe ne serait pas complète sans l'ajout de quelques autres reconnaissances et
remerciements.
Je suis tout d'abord reconnaissant à Carsten pour la confiance qu'il m'a témoignée en
me confiant la maintenance d'Org. Son soutien sans faille est ce qui m'a vraiment aidé à
devenir plus confiant au fil du temps, à la fois avec la communauté et avec le code.
Lorsque j'ai pris en charge la maintenance, je savais que je devrais rendre Org plus
collaboratif que jamais, car je devrais m'appuyer sur des personnes plus compétentes
que moi sur de nombreuses parties du code. Voici une liste des personnes sur
lesquelles je pouvais compter, elles devraient vraiment être considérées comme des co-
mainteneurs, soit du code, soit de la communauté :
Eric Schulte
Eric maintient les parties Babel d'Org. Sa réactivité m'a permis de ne pas me
préoccuper d'éventuels bugs ici et de me concentrer sur d'autres parties.
Nicolas Goaziou
Nicolas maintient la cohérence des parties les plus profondes d'Org. Son
travail sur 'org-element.el' et 'ox.el' a été remarquable et a ouvert la voie
à de nombreuses nouvelles idées et fonctionnalités. Il a réécrit de nombreux
anciens exportateurs pour utiliser le nouveau moteur d'exportation, et a aidé
à documenter ce changement majeur. Plus important encore (si c'est
possible), il a été plus que fiable pendant tout le travail effectué pour Org
8.0, et toujours très réactif sur la liste de diffusion.
Achim Gratz
Achim a réécrit le processus de construction d'Org, transformant quelques
outils ad hoc en un processus flexible et conceptuellement propre. Il a
patiemment fait face aux nombreux problèmes qu'un tel changement peut
créer pour les utilisateurs.
Nick Dokos
La liste de diffusion Org mode ne serait pas aussi agréable sans Nick, qui a
patiemment aidé les utilisateurs à de nombreuses reprises. Il est impossible
de surestimer une telle aide, et la liste ne serait pas aussi active sans lui.
J'ai reçu le soutien de tant d'utilisateurs qu'il est impossible d'être juste en en
sélectionnant quelques-uns, mais l'histoire d'Org ne serait pas complète si les
utilisateurs ci-dessus n'étaient pas mentionnés dans ce manuel.

B.3 Liste des contributions


• Russell Adams a eu l'idée des tiroirs.
• Thomas Baumann a écrit 'ol-bbdb.el' et 'ol-mhe.el'.
• Christophe Bataillon a créé le superbe logo de la licorne que nous utilisons sur le
Annexe B : Historique et remerciements 453
site web d'Org mode.
Annexe B : Historique et remerciements 454

• Alex Bochannek a fourni un correctif pour arrondir les horodatages.


• Jan B¨ocker a écrit 'ol-docview.el'.
• Brad Bozarth a montré comment extraire des données de flux RSS dans des fichiers Org.
• Tom Breton a écrit "org-choose.el".
• La suggestion de Charles Cave a donné lieu à la mise en œuvre de modèles pour
Remember, qui sont désormais des modèles pour la capture.
• Timothy E Chapman a travaillé sur une refonte complète du site orgmode.org en
2020 et a contribué à la correction de divers bugs.
• Pavel Chalmoviansky a influencé le traitement des points de l'ordre du jour avec une durée déterminée.
• Gregory Chernov a corrigé la prise en charge des formes Lisp dans les calculs de
tableaux et a amélioré la compatibilité avec XEmacs, notamment en portant
'nouline.el' vers XEmacs.
• Sacha Chua a suggéré de copier le code de liaison de Planner.
• Baoqiu Cui a contribué à l'exportateur DocBook.
• Eddward DeVilla a proposé et testé des statistiques sur les cases à cocher. Il a
également eu l'idée des propriétés et de l'existence d'une API pour celles-ci.
• Nick Dokos a détecté plusieurs bogues désagréables.
• Kees Dullemond avait l'habitude d'éditer des listes de projets directement en HTML
et a donc inspiré certains des premiers développements, notamment l'exportation
HTML. Il a également demandé un moyen de réduire les colonnes des tableaux
larges.
• Thomas S. Dye a contribué à la documentation sur Worg et a aidé à intégrer la
documentation d'Org Babel dans le manuel.
• Christian Egli a converti la documentation au format Texinfo, inspiré l'agenda,
patché le formatage CSS dans l'exportateur HTML, et écrit 'org-taskjuggler.el'.
• David Emery a fourni un correctif pour la prise en charge des CSS personnalisés dans les agendas
HTML exportés.
• Nic Ferrier a contribué à l'élaboration du mailcap et au soutien de XOXO.
• Miguel A. Figueroa-Villanueva a mis en place des cases à cocher hiérarchiques.
• John Foerch a trouvé comment faire en sorte que la recherche incrémentale affiche le
contexte autour d'une correspondance dans une arborescence cachée.
• Raimar Finken a écrit 'org-git-line.el'.
• Mikael Fornius travaille comme modérateur de liste de diffusion.
• Austin Frank travaille comme modérateur de liste de diffusion.
• Eric Fraga a mené le développement de Beamer export avec des idées et des tests.
• Barry Gidden a assuré la relecture du manuel en vue de la publication du livre par
Network Theory Ltd.
• Niels Giesen a eu l'idée d'archiver automatiquement les arbres DONE.
• Nicolas Goaziou a réécrit une grande partie du code de la liste simple.
• Kai Grossjohann a signalé des conflits de key-binding avec d'autres paquets.
• Brian Gough, de Network Theory Ltd, publie le manuel du mode Org sous forme de livre.
• Bernt Hansen est à l'origine d'une grande partie du support des tâches à répétition
automatique, de l'enregistrement des changements d'état des tâches et de la table
d'horloge. Ses explications claires ont été essentielles lorsque nous avons
commencé à adopter le système de contrôle de version Git.
Annexe B : Historique et remerciements 455

• Manuel Hermenegildo a apporté diverses idées, de petites corrections et des correctifs.


• Phil Jackson a écrit "ol-irc.el".
• Scott Jaderholm a proposé des notes de bas de page, le contrôle de l'espace entre
les entrées pliées et l'affichage des propriétés en colonnes.
• Matt Jones a écrit MobileOrg Android.
• Tokuya Kameshima a écrit 'org-wl.el' et 'org-mew.el'.
• Shidai Liu ("Leo") a demandé un LATEX intégré et l'a testé. Il a également fourni de
nombreux commentaires et quelques correctifs.
• Matt Lundin a proposé des références à la dernière rangée pour les formules de
tableau et des ancres invisibles nommées. Il a également beaucoup travaillé sur la
FAQ.
• David Maus a écrit 'org-atom.el', maintient le fichier des problèmes pour Org, et
est un contributeur prolifique sur la liste de diffusion avec des réponses
compétentes, des petites corrections et des correctifs.
• Jason F. McBrayer suggère d'exporter l'ordre du jour au format CSV.
• Kyle Meyer a aidé à mettre en place l'archive publique de la liste de diffusion Org et
a corrigé de nombreux bugs.
• Max Mikhanosha a eu l'idée de déposer un nouveau dossier.
• Dmitri Minaev a envoyé un correctif permettant de définir des limites de priorité par fichier.
• Stefan Monnier a fourni un correctif pour satisfaire le compilateur Emacs Lisp.
• Richard Moreland a écrit MobileOrg pour l'iPhone.
• Rick Moynihan a proposé d'autoriser plusieurs séquences TODO dans un fichier et
de pouvoir rapidement restreindre l'agenda à un sous-arbre.
• Todd Neal a fourni des correctifs pour les liens vers les fichiers Info et les formulaires Elisp.
• Greg Newman a rafraîchi le logo de la licorne pour lui donner sa forme actuelle.
• Tim O'Callaghan a suggéré des liens dans les fichiers, des options de recherche pour les liens dans
les fichiers généraux et des balises.
• Osamu Okano a écrit 'orgcard2ref.pl', un programme Perl pour créer une version
texte de la carte de référence.
• Takeshi Okano a traduit le manuel et le tutoriel de David O'Toole en japonais.
• Oliver Oppitz a suggéré des points TODO multi-états.
• Scott Otterson est à l'origine de l'introduction du texte descriptif pour les liens, entre
autres choses.
• Pete Phillips a participé au développement de la fonction TAGS et a fourni des
commentaires fréquents.
• Martin Pohlack a fourni l'extrait de code permettant de regrouper l'insertion de
caractères en paquets de 20 pour l'annulation.
• Ihor Radchenko a participé à la correction des bogues et à l'amélioration de
l'expérience utilisateur en ce qui concerne la vitesse d'Org.
• T. V. Raman a signalé des bogues et suggéré des améliorations.
• Matthias Rempe (Oelde) a fourni des idées, une assistance Windows et un contrôle de qualité.
• Paul Rivier a fourni l'implémentation de base des notes de bas de page nommées. Il
a également joué le rôle de modérateur de la liste de diffusion pendant un certain
temps.
• Kevin Rogers a contribué au code permettant d'accéder aux fichiers VM sur des hôtes distants.
Annexe B : Historique et remerciements 456

• Frank Ruell a résolu le mystère du bug 'keymapp nil', un conflit avec 'allout.el'.
• Jason Riedy a généralisé le mécanisme d'envoi et de réception des tables Orgtbl en y
apportant des correctifs importants.
• Philip Rooke a créé la carte de référence Org, a fourni de nombreux commentaires, a
développé et appliqué des normes à la documentation Org.
• Christian Schlauer a proposé, entre autres, des crochets angulaires autour des liens.
• Paul Sexton a écrit 'org-ctags.el'.
• Le site "organizer-mode.el" de Tom Shannon a inspiré des liens vers VM/BBDB/Gnus.
• Ilya Shlyakhter a proposé l'Archive Sibling, la numérotation des lignes dans les
exemples littéraux et la mise en évidence à distance des lignes de code
référencées.
• Stathis Sideris a écrit le convertisseur ASCII vers PNG 'ditaa.jar' qui est
maintenant empaqueté dans le dépôt org-contrib.
• Daniel Sinder a eu l'idée d'un archivage interne en verrouillant les sous-arbres.
• Dale Smith a proposé des abréviations de liens.
• James TD Smith a contribué à un grand nombre de correctifs pour des
améliorations et des fonctionnalités utiles.
• Adam Spiers a demandé des commandes de liaison globales, a inspiré le système
d'extension des liens, a ajouté la prise en charge de Mairix et a proposé l'API de
cartographie.
• Ulf Stegemann a créé la table pour traduire les symboles spéciaux en HTML, LATEX,
UTF-8, Latin-1 et ASCII.
• Andy Stewart a contribué au code 'ol-w3m.el', pour copier le contenu HTML avec
la transformation des liens vers la syntaxe Org.
• David O'Toole a écrit "org-publish.el" et rédigé le chapitre du manuel consacré à
la publication.
• Jambunathan K. a contribué à l'exportateur ODT.
• Sébastien Vauban a signalé de nombreux problèmes liés à l'exportation de LATEX et
de Beamer et a activé la mise en évidence du code source dans Gnus.
• Stefan Vollmar a organisé une conférence enregistrée sur vidéo à l'Institut Max-
Planck de neurologie. Il a également inspiré la création d'un index des concepts
pour l'exportation HTML.
• Ju¨rgen Vollmer a contribué au code générant la table des matières en sortie HTML.
• Samuel Wales a fourni des informations importantes et des rapports de bogues.
• Chris Wallace a fourni un correctif mettant en œuvre le bloc "QUOTE".
• David Wainberg a suggéré l'archivage et l'amélioration du système de liens.
• Carsten Wimmer a suggéré quelques changements et a aidé à corriger un bug dans la liaison avec
Gnus.
• Roland Winkler a demandé des raccourcis clavier supplémentaires pour permettre à Org de
fonctionner sur un TTY.
• Piotr Zielinski a écrit "org-mouse.el", proposé des blocs d'ordre du jour et contribué
à diverses idées et extraits de code.
• Marco Wahl a écrit 'ol-eww.el'.
Annexe C : Licence de documentation libre 457
GNU

Annexe C Documentation libre GNU Licence


Version 1.3, 3 novembre 2008
Copyright 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
⃝c
https://fsf.org/

Chacun est autorisé à copier et à distribuer des copies


conformes de ce document de licence, mais il n'est pas
permis de le modifier.
0. PRÉAMBULE
L'objectif de cette licence est de rendre un manuel, un guide ou tout autre document
fonctionnel et utile libre au sens de la liberté : assurer à chacun la liberté effective de
le copier et de le redistribuer, avec ou sans modification, que ce soit à des fins
commerciales ou non commerciales. En second lieu, cette licence préserve pour
l'auteur et l'éditeur un moyen d'obtenir le crédit de leur travail, tout en n'étant pas
considéré comme responsable des modifications apportées par d'autres.
Cette licence est une sorte de "copyleft", ce qui signifie que les travaux dérivés du
document doivent eux-mêmes être libres dans le même sens. Elle complète la
licence publique générale GNU, qui est une licence à gauche d'auteur conçue pour
les logiciels libres.
Nous avons conçu cette Licence afin de l'utiliser pour les manuels de logiciels libres,
car les logiciels libres ont besoin d'une documentation libre : un programme libre
devrait être accompagné de manuels offrant les mêmes libertés que le logiciel. Mais
cette Licence n'est pas limitée aux manuels de logiciels ; elle peut être utilisée pour
toute œuvre textuelle, quel que soit son sujet ou qu'elle soit publiée sous forme de
livre imprimé. Nous recommandons cette licence principalement pour les ouvrages
dont le but est l'instruction ou la référence.
1. APPLICABILITÉ ET DÉFINITIONS
La présente licence s'applique à tout manuel ou autre ouvrage, quel qu'en soit le
support, qui contient un avis placé par le détenteur des droits d'auteur indiquant qu'il
peut être distribué selon les termes de la présente licence. Un tel avis accorde une
licence mondiale, libre de droits et illimitée dans le temps, pour l'utilisation de ce
travail dans les conditions énoncées dans la présente licence. Le "document", ci-
dessous, fait référence à tout manuel ou ouvrage de ce type. Tout membre du
public est un titulaire de licence et est désigné par le terme "vous". Vous acceptez la
licence si vous copiez, modifiez ou distribuez l'œuvre d'une manière qui nécessite
une autorisation en vertu de la loi sur les droits d'auteur.
On entend par "version modifiée" du document tout ouvrage contenant le document
ou une partie de celui-ci, soit copié mot pour mot, soit avec des modifications et/ou
traduit dans une autre langue.
Une "section secondaire" est une annexe nommée ou une section de premier plan
du document qui traite exclusivement de la relation des éditeurs ou des auteurs du
document avec le sujet général du document (ou avec des sujets connexes) et ne
contient rien qui puisse relever directement de ce sujet général. (Ainsi, si le
document est en partie un manuel de mathématiques, une section secondaire ne
peut expliquer aucune mathématique). La relation peut être une question de lien
historique avec le sujet ou avec des questions connexes, ou de position juridique,
commerciale, philosophique, éthique ou politique à leur égard.
Annexe C : Licence de documentation libre 458
GNU

Les "Sections Invariables" sont certaines Sections Secondaires dont les titres sont
désignés, comme étant ceux des Sections Invariables, dans l'avis qui indique que le
Document est publié.
Annexe C : Licence de documentation libre 459
GNU

dans le cadre de la présente licence. Si une section ne correspond pas à la


définition ci-dessus du terme "secondaire", elle ne peut pas être désignée comme
"invariante". Le document peut contenir zéro section invariante. Si le document
n'identifie aucune section invariante, il n'y en a pas.
Les "Textes de couverture" sont de courts passages de texte qui sont énumérés, en
tant que Textes de couverture ou Textes de quatrième de couverture, dans l'avis
indiquant que le Document est publié sous cette Licence. Un texte de couverture ne
peut comporter plus de 5 mots et un texte de quatrième de couverture ne peut
comporter plus de 25 mots.
Une copie "transparente" du document signifie une copie lisible par machine,
représentée dans un format dont les spécifications sont accessibles au grand
public, qui permet de réviser le document directement avec des éditeurs de texte
génériques ou (pour les images composées de pixels) des programmes de peinture
génériques ou (pour les dessins) un éditeur de dessin largement disponible, et qui est
adapté à la saisie de formateurs de texte ou à la traduction automatique dans une
variété de formats adaptés à la saisie de formateurs de texte. Une copie réalisée
dans un format de fichier par ailleurs transparent dont le balisage, ou l'absence de
balisage, a été conçu pour contrecarrer ou décourager toute modification ultérieure
par les lecteurs n'est pas transparente. Un format d'image n'est pas transparent s'il
est utilisé pour une quantité substantielle de texte. Une copie qui n'est pas
"transparente" est dite "opaque".
Parmi les exemples de formats appropriés pour les copies transparentes, on peut
citer l'ASCII simple sans balisage, le format d'entrée Texinfo, le format d'entrée
LATEX, le SGML ou le XML utilisant une DTD accessible au public, et le HTML
simple conforme aux normes, le PostScript ou le PDF conçu pour être modifié par
l'homme. Les formats d'image transparents sont par exemple PNG, XCF et JPG.
Les formats opaques comprennent les formats propriétaires qui ne peuvent être lus
et modifiés que par des traitements de texte propriétaires, SGML ou XML pour
lesquels la DTD et/ou les outils de traitement ne sont pas généralement disponibles,
et les formats HTML, PostScript ou PDF générés par la machine et produits par
certains traitements de texte à des fins de sortie uniquement.
La "page de titre" désigne, pour un livre imprimé, la page de titre elle-même, plus
les pages suivantes nécessaires pour contenir, de manière lisible, le matériel dont la
présente licence exige qu'il apparaisse sur la page de titre. Pour les œuvres dont le
format ne comporte pas de page de titre proprement dite, on entend par "page de
titre" le texte situé à proximité de l'apparition la plus visible du titre de l'œuvre, avant
le début du corps du texte.
Le terme "éditeur" désigne toute personne ou entité qui distribue des copies du
document au public.
Une section " intitulée XYZ " est une sous-unité nommée du document dont le titre
est précisément XYZ ou contient XYZ entre parenthèses à la suite d'un texte
traduisant XYZ dans une autre langue. (XYZ désigne ici un nom de section spécifique
mentionné ci-dessous, tel que "Remerciements", "Dédicaces", "Approbations" ou
"Histoire"). Le fait de "conserver le titre" d'une telle section lorsque vous modifiez le
document signifie qu'elle reste une section "intitulée XYZ" selon cette définition.
Le document peut inclure des clauses d'exonération de garantie à côté de l'avis
indiquant que la présente licence s'applique au document. Ces exclusions de
garantie sont considérées comme incluses par référence dans la présente licence,
mais uniquement en ce qui concerne les exclusions de garantie : toute autre
Annexe C : Licence de documentation libre 460
GNUimplication que ces exclusions de garantie pourraient avoir est nulle et n'a aucun
effet sur la signification de la présente licence.
2. COPIE IN EXTENSO
Annexe C : Licence de documentation libre 461
GNU

Vous pouvez copier et distribuer le document sur n'importe quel support, à des fins
commerciales ou non, à condition que la présente licence, les avis de copyright et
l'avis de licence indiquant que la présente licence s'applique au document soient
reproduits dans toutes les copies, et que vous n'ajoutiez aucune autre condition que
ce soit à celles de la présente licence. Vous ne pouvez pas utiliser de mesures
techniques pour empêcher ou contrôler la lecture ou la copie ultérieure des copies
que vous faites ou distribuez. Toutefois, vous pouvez accepter une compensation en
échange des copies. Si vous distribuez un nombre suffisamment important de
copies, vous devez également respecter les conditions de la section 3.
Vous pouvez également prêter des copies, dans les mêmes conditions que celles
énoncées ci-dessus, et vous pouvez afficher publiquement des copies.
3. LA COPIE EN QUANTITÉ
Si vous publiez des copies imprimées (ou des copies sur des supports qui ont
généralement des couvertures imprimées) du Document, au nombre de plus de 100,
et que la notice de licence du Document exige des Textes de couverture, vous
devez inclure les copies dans des couvertures qui portent, de manière claire et
lisible, tous ces Textes de couverture : Les textes de la première de couverture sur
la première de couverture et les textes de la quatrième de couverture sur la
quatrième de couverture. Les deux couvertures doivent également indiquer
clairement et lisiblement que vous êtes l'éditeur de ces exemplaires. La première de
couverture doit présenter le titre complet, tous les mots du titre étant également mis
en évidence et visibles. Vous pouvez ajouter d'autres éléments sur les couvertures.
La copie avec des changements limités aux couvertures, tant qu'ils préservent le
titre du document et remplissent ces conditions, peut être considérée comme une
copie verbatim à d'autres égards.
Si les textes requis pour l'une ou l'autre des couvertures sont trop volumineux pour
être lisibles, il convient de placer les premiers textes énumérés (autant que
possible) sur la couverture proprement dite, et de poursuivre le reste sur les pages
adjacentes.
Si vous publiez ou distribuez plus de 100 copies opaques du document, vous devez
soit inclure une copie transparente lisible par machine avec chaque copie opaque,
soit indiquer dans ou avec chaque copie opaque un emplacement de réseau
informatique à partir duquel le grand public utilisant le réseau peut télécharger, en
utilisant des protocoles de réseau publics, une copie transparente complète du
document, exempte de tout élément ajouté. Si vous choisissez cette dernière
option, vous devez prendre des mesures raisonnablement prudentes, lorsque vous
commencez à distribuer des copies opaques en quantité, pour vous assurer que
cette copie transparente restera ainsi accessible à l'emplacement indiqué jusqu'à au
moins un an après la dernière fois que vous aurez distribué une copie opaque
(directement ou par l'intermédiaire de vos agents ou détaillants) de cette édition au
public.
Il est demandé, mais non exigé, que vous contactiez les auteurs du document
bien avant de redistribuer un grand nombre de copies, afin de leur donner la
possibilité de vous fournir une version mise à jour du document.
4. MODIFICATIONS
Vous pouvez copier et distribuer une Version modifiée du Document dans les
conditions des sections 2 et 3 ci-dessus, à condition de publier la Version modifiée
précisément sous cette Licence, la Version modifiée remplissant le rôle du
Document, ce qui autorise la distribution et la modification de la Version modifiée à
quiconque en possède une copie. En outre, vous devez faire les choses suivantes
Annexe C : Licence de documentation libre 462
GNUdans la Version modifiée :
A. Utiliser dans la page de titre (et sur les couvertures, le cas échéant) un titre
distinct de celui du document et de ceux des versions antérieures (qui
devraient, le cas échéant, être des titres de la page de titre),
Annexe C : Licence de documentation libre 463
GNU

dans la section "Historique" du document). Vous pouvez utiliser le même titre


qu'une version antérieure si l'éditeur original de cette version vous en donne
l'autorisation.
B. Indiquer sur la page de titre, en tant qu'auteurs, une ou plusieurs personnes ou
entités responsables de la paternité des modifications apportées à la version
modifiée, ainsi qu'au moins cinq des principaux auteurs du document (tous ses
principaux auteurs, s'il y en a moins de cinq), à moins qu'ils ne vous dispensent
de cette obligation.
C. Indiquer sur la page de titre le nom de l'éditeur de la version modifiée, en tant
qu'éditeur.
D. Conserver toutes les mentions de copyright du document.
E. Ajoutez un avis de droit d'auteur approprié pour vos modifications à côté des
autres avis de droit d'auteur.
F. Inclure, immédiatement après les avis de droits d'auteur, un avis de licence
autorisant le public à utiliser la version modifiée selon les termes de la présente
licence, sous la forme indiquée dans l'addendum ci-dessous.
G. Conserver dans cet avis de licence les listes complètes des sections invariantes
et des textes de couverture requis figurant dans l'avis de licence du document.
H. Inclure une copie non altérée de la présente licence.
I. Conserver la section intitulée " Historique ", conserver son titre et y ajouter une
rubrique indiquant au moins le titre, l'année, les nouveaux auteurs et l'éditeur
de la Version modifiée, tels qu'ils figurent sur la page de titre. S'il n'existe pas
de section intitulée " Historique " dans le document, créer une section indiquant
le titre, l'année, les auteurs et l'éditeur du document tels qu'ils figurent sur la
page de titre, puis ajouter une rubrique décrivant la version modifiée telle
qu'elle est décrite dans la phrase précédente.
J. Conserver l'emplacement du réseau, le cas échéant, indiqué dans le document
pour l'accès public à une copie transparente du document, ainsi que
l'emplacement du réseau indiqué dans le document pour les versions
antérieures sur lesquelles il était basé. Ces informations peuvent être placées
dans la section "Historique". Vous pouvez omettre l'emplacement d'un réseau
pour une œuvre qui a été publiée au moins quatre ans avant le document lui-
même, ou si l'éditeur original de la version à laquelle il se réfère en donne
l'autorisation.
K. Pour toute section intitulée "Remerciements" ou "Dédicaces", conserver le titre
de la section et conserver dans la section toute la substance et le ton de chacun
des remerciements et/ou dédicaces des contributeurs qui y figurent.
L. Préserver toutes les sections invariantes du document, sans modification de
leur texte et de leur titre. Les numéros de section ou leur équivalent ne sont pas
considérés comme faisant partie des titres de section.
M. Supprimer toute section intitulée "avenants". Une telle section ne peut pas être
incluse dans la version modifiée.
N. Ne pas modifier le titre d'une section existante pour qu'elle s'intitule "avenants"
ou qu'elle entre en conflit avec une section invariante.
O. Préserver les clauses de non-responsabilité en matière de garantie.
Si la version modifiée comprend de nouvelles sections de premier plan ou des
annexes qui peuvent être considérées comme des sections secondaires et qui ne
Annexe C : Licence de documentation libre 464
GNUcontiennent aucun élément copié du document, vous pouvez, à votre choix, désigner
certaines ou toutes ces sections comme invariantes. Pour ce faire, ajoutez leur
Annexe C : Licence de documentation libre 465
GNU

à la liste des sections invariantes dans l'avis de licence de la version modifiée. Ces
titres doivent être distincts de tout autre titre de section.
Vous pouvez ajouter une section intitulée "Approbations", à condition qu'elle ne
contienne rien d'autre que des approbations de votre Version modifiée par diverses
parties - par exemple, des déclarations d'évaluation par les pairs ou le fait que le
texte a été approuvé par une organisation en tant que définition faisant autorité
d'une norme.
Vous pouvez ajouter un passage de cinq mots au maximum comme texte de
couverture et un passage de 25 mots au maximum comme texte de quatrième de
couverture à la fin de la liste des textes de couverture de la version modifiée. Une
seule entité peut ajouter un passage de texte de couverture et un passage de texte
de quatrième de couverture (ou prendre des dispositions à cet effet). Si le document
comprend déjà un texte de couverture pour la même couverture, ajouté
précédemment par vous ou par un arrangement conclu par l'entité pour laquelle
vous agissez, vous ne pouvez pas en ajouter un autre ; mais vous pouvez
remplacer l'ancien, avec l'autorisation explicite de l'éditeur précédent qui a ajouté
l'ancien texte.
Les auteurs et les éditeurs du document ne sont pas autorisés par la présente licence
à utiliser leur nom à des fins publicitaires ou pour affirmer ou impliquer l'approbation
d'une version modifiée.
5. LA COMBINAISON DE DOCUMENTS
Vous pouvez combiner le document avec d'autres documents publiés sous cette
licence, dans les conditions définies à la section 4 ci-dessus pour les versions
modifiées, à condition d'inclure dans la combinaison toutes les Sections invariantes
de tous les documents originaux, non modifiées, et de les énumérer toutes comme
Sections invariantes de votre travail combiné dans son avis de licence, et de
préserver toutes leurs clauses de non-responsabilité de garantie.
L'œuvre combinée ne doit contenir qu'un seul exemplaire de la présente licence, et
plusieurs sections invariantes identiques peuvent être remplacées par un seul
exemplaire. S'il existe plusieurs Sections Invariables ayant le même nom mais des
contenus différents, rendez le titre de chacune de ces sections unique en ajoutant à
la fin de celui-ci, entre parenthèses, le nom de l'auteur ou de l'éditeur original de
cette section s'il est connu, ou bien un numéro unique. Procéder à la même
adaptation des titres des sections dans la liste des sections invariantes dans l'avis
de licence de l'œuvre combinée.
Dans la combinaison, vous devez regrouper toutes les sections intitulées "Histoire"
dans les différents documents originaux, pour former une section intitulée "Histoire"
; de même, vous devez regrouper toutes les sections intitulées "Remerciements" et
toutes les sections intitulées "Dédicaces". Vous devez supprimer toutes les sections
intitulées "avenants".
6. LES COLLECTIONS DE DOCUMENTS
Vous pouvez constituer un recueil composé du document et d'autres documents
publiés sous cette licence, et remplacer les copies individuelles de cette licence
dans les divers documents par une copie unique incluse dans le recueil, à condition
que vous respectiez les règles de cette licence pour la copie verbatim de chacun
des documents à tous autres égards.
Vous pouvez extraire un seul document d'une telle collection et le distribuer
individuellement sous la présente licence, à condition d'insérer une copie de la
Annexe C : Licence de documentation libre 466
GNUprésente licence dans le document extrait et de respecter la présente licence à tous
autres égards en ce qui concerne la copie mot à mot de ce document.
Annexe C : Licence de documentation libre 467
GNU

7. AGRÉGATION AVEC DES ŒUVRES INDÉPENDANTES


Une compilation du Document ou de ses dérivés avec d'autres documents ou
travaux séparés et indépendants, dans ou sur un volume d'un support de stockage
ou de distribution, est appelée "agrégat" si le droit d'auteur résultant de la
compilation n'est pas utilisé pour limiter les droits légaux des utilisateurs de la
compilation au-delà de ce que les travaux individuels permettent. Lorsque le
document est inclus dans un agrégat, la présente licence ne s'applique pas aux
autres œuvres de l'agrégat qui ne sont pas elles-mêmes des œuvres dérivées du
document.
Si l'exigence de texte de couverture de la section 3 s'applique à ces exemplaires du
document, alors si le document représente moins de la moitié de l'ensemble, les textes
de couverture du document peuvent être placés sur des couvertures qui encadrent le
document dans l'ensemble, ou sur l'équivalent électronique des couvertures si le
document est sous forme électronique. Dans le cas contraire, ils doivent figurer sur
des couvertures imprimées qui encadrent l'ensemble de l'agrégat.
8. TRADUCTION
La traduction est considérée comme une sorte de modification, et vous pouvez donc
distribuer des traductions du document selon les termes de la section 4. Le
remplacement des Sections invariantes par des traductions nécessite une
autorisation spéciale de leurs détenteurs de droits d'auteur, mais vous pouvez
inclure des traductions de tout ou partie des Sections invariantes en plus des versions
originales de ces Sections invariantes. Vous pouvez inclure une traduction de la
présente licence, de tous les avis de licence figurant dans le document et de tous
les avertissements de garantie, à condition d'inclure également la version anglaise
originale de la présente licence et les versions originales de ces avis et
avertissements. En cas de désaccord entre la traduction et la version originale de la
présente licence ou d'un avis ou d'une clause de non-responsabilité, la version
originale prévaudra.
Si une section du document est intitulée "Remerciements", "Dédicaces" ou
"Histoire", l'exigence (section 4) de préserver son titre (section 1) nécessitera
généralement de changer le titre actuel.
9. RÉSILIATION
Vous n'êtes pas autorisé à copier, modifier, concéder en sous-licence ou distribuer le
document, sauf dans les cas expressément prévus par la présente licence. Toute
autre tentative de copie, de modification, de sous-licence ou de distribution est nulle
et non avenue et met automatiquement fin à vos droits au titre de la présente
licence.
Toutefois, si vous cessez toute violation de la présente licence, votre licence
accordée par un détenteur de droits d'auteur particulier est rétablie (a)
provisoirement, à moins que le détenteur des droits d'auteur ne mette explicitement
et définitivement fin à votre licence, et (b) définitivement, si le détenteur des droits
d'auteur ne vous notifie pas la violation par un moyen raisonnable dans les 60 jours
suivant la cessation de la violation.
En outre, votre licence auprès d'un détenteur de droits d'auteur particulier est
rétablie de manière permanente si le détenteur des droits d'auteur vous notifie la
violation par un moyen raisonnable, si c'est la première fois que vous recevez une
notification de violation de la présente licence (pour toute œuvre) de la part de ce
détenteur de droits d'auteur, et si vous remédiez à la violation dans les 30 jours
suivant la réception de la notification.
Annexe C : Licence de documentation libre 468
GNULa résiliation de vos droits en vertu de la présente section ne met pas fin aux
licences des parties qui ont reçu des copies ou des droits de votre part en vertu de
la présente licence. Si vos droits ont été résiliés et ne sont pas rétablis de façon
permanente, la réception d'une copie de tout ou partie du même matériel ne vous
donne aucun droit de l'utiliser.
Annexe C : Licence de documentation libre 469
GNU

10. RÉVISIONS FUTURES DE LA PRÉSENTE LICENCE


La Free Software Foundation peut publier de temps à autre de nouvelles versions
révisées de la GNU Free Documentation License. Ces nouvelles versions seront
similaires dans l'esprit à la présente version, mais pourront différer dans le détail
pour répondre à de nouveaux problèmes ou préoccupations. Voir
https://www.gnu.org/copyleft/.
Chaque version de la Licence porte un numéro de version distinctif. Si le document
précise qu'une version numérotée particulière de la présente licence "ou toute
version ultérieure" s'applique, vous avez la possibilité de suivre les termes et
conditions soit de cette version spécifiée, soit de toute version ultérieure publiée
(pas à l'état de projet) par la Free Software Foundation. Si le document ne précise
pas de numéro de version de la présente licence, vous pouvez choisir n'importe
quelle version publiée (pas à l'état de projet) par la Free Software Foundation. Si le
Document spécifie qu'un mandataire peut décider quelles versions futures de cette
Licence peuvent être utilisées, la déclaration publique d'acceptation d'une version
par ce mandataire vous autorise de façon permanente à choisir cette version pour le
Document.
11. RELICENSING
On entend par "site de collaboration massive multi-auteurs" (ou "site MMC") tout
serveur World Wide Web qui publie des œuvres protégées par le droit d'auteur et
qui offre également à quiconque la possibilité de modifier ces œuvres. Un wiki
public que tout le monde peut modifier est un exemple de ce type de serveur. Une
"collaboration massive multi-auteurs" (ou "MMC") contenue dans le site désigne tout
ensemble d'œuvres protégées par le droit d'auteur ainsi publiées sur le site MMC.
"CC-BY-SA" désigne la licence Creative Commons Attribution-Share Alike 3.0
publiée par Creative Commons Corporation, une société à but non lucratif dont le
siège social se trouve à San Francisco, en Californie, ainsi que les versions futures
de cette licence publiées par cette même organisation.
"Incorporer" signifie publier ou republier un document, en tout ou en partie, en tant
que partie d'un autre document.
Une MMC est "éligible pour une nouvelle licence" si elle est concédée en vertu de la
présente Licence et si toutes les œuvres qui ont été publiées pour la première fois
en vertu de la présente Licence ailleurs que dans la MMC, et qui ont ensuite été
incorporées en tout ou en partie dans la MMC, (1) n'avaient pas de textes de
couverture ou de sections invariantes, et (2) ont donc été incorporées avant le 1er
novembre 2008.
L'opérateur d'un site MMC peut republier une MMC contenue dans le site sous CC-
BY-SA sur le même site à tout moment avant le 1er août 2009, à condition que la
MMC puisse faire l'objet d'un renouvellement de licence.
Annexe C : Licence de documentation libre 470
GNU
C.1 ADDENDUM : Comment utiliser cette licence pour vos
documents
Pour utiliser cette licence dans un document que vous avez écrit, incluez une copie de la
licence dans le document et placez les avis de copyright et de licence suivants juste
après la page de titre :
Copyright (C) ANNÉE VOTRE NOM.
Il est permis de copier, distribuer et/ou modifier ce document
selon les termes de la licence de documentation libre GNU, version
1.3 ou toute version ultérieure publiée par la Free Software
Foundation ;
sans sections invariantes, sans textes de couverture et sans textes de
quatrième de couverture. Une copie de la licence est incluse dans la
section intitulée "Licence de documentation libre GNU".
Si vous avez des sections invariantes, des textes de couverture et des textes de
quatrième de couverture, remplacez le "avec" par "avec". . . Textes." par celle-ci :
les sections invariantes étant LISTE DE LEURS TITRES, avec
les textes de la première de couverture étant la LISTE, et les
textes de la quatrième de couverture étant la LISTE.
Si vous avez des sections invariantes sans textes de couverture, ou une autre
combinaison des trois, fusionnez ces deux alternatives en fonction de la situation.
Si votre document contient des exemples non triviaux de code de programme, nous vous
recommandons de publier ces exemples en parallèle sous la licence de logiciel libre de
votre choix, telle que la licence publique générale GNU, afin de permettre leur utilisation
dans des logiciels libres.
Chapitre 18 : Index 471
principal

18 Index principal

* arguments, en blocs de code..................................222


Exportation ASCII ....................................................155
'*this*', dans l'argument d'en-tête 'post'. ............235
ASCII", mot-clé..........................................................156
Flux d'atomes......................................................97, 108
+ pièce jointe de Dired...............................................107
liens de rattachement .................................................40
Suffixe "+" dans les propriétés ..................................68
liens d'attachement, recherche .................................46
pièces jointes.......................................................97, 104
ATTR_ASCII", mot-clé ...............................................156
ATTR_BEAMER", mot-clé .............................................159
Suffixe "_ALL" dans les propriétés............................68
ATTR_HTML", mot-clé.........................................164, 165
ATTR_LATEX", mot-clé .............174, 175, 176, 177, 178
A ATTR_ODT", mot-clé..........................181, 182, 183, 187
ATTR_TEXINFO", mot-clé..........................193, 195, 196
abréviation, liens .........................................................45 auteur..............................................................................3
abstrait, dans l'exportation LATEX ..........................176 'auteur', macro .........................................................154
action, pour la publication........................................204 'AUTHOR', mot-clé........................................................149
activation ........................................................................3 horloge automatique après une période d'inactivité 91
région active ..................................................................9 sauvegarde automatique, édition de blocs de code240
paquets complémentaires .......................................265
agenda .......................................................................111 autoload..........................................................................3
agenda dispatcher .....................................................110
dossiers de l'ordre du jour .........................................109 B
fichiers d'agenda, suppression des tampons .......130 babel, langues ...........................................................239
filtrage de l'agenda ....................................................120 babel, bibliothèque de..............................................244
vues de l'agenda........................................................109 les barres obliques inverses, dans les liens .............38
vues de l'agenda, personnalisées ...........................130 trace d'une erreur..........................................................4
vues de l'agenda, exportation..........................133, 134
Liens BBDB .................................................................40
vues de l'agenda, exemple principal......................131
BBDB, anniversaires . . . . . . . . . . . . . . . . . . . . . 113
vues de l'agenda, optimisation ................................273 . . . . . . . . . . . . . . . . . . . . . ...................
vues de l'agenda, définies par l'utilisateur ..............271 Beamer export . . . . . . . . . . . . . . . . . . . . . . . . . . 157
agenda*, comme une vue d'ensemble de l'agenda131 . . . . . . . . . . . . . . . . . . . . . . . . . . ...............
l'ordre du jour, en tant que vues de l'ordre du jour.131 ..
agenda, vue en colonne ..........................................135 'BEAMER', mot-clé . . . . . . . . . . . . . . . . . . . . . . . . 159
agenda, tuyau ............................................................273 . . . . . . . . . . . . . . . . ..........................
BEAMER_ACT", propriété . . . . . . . . . . . . . . . . . . . 158
agenda, avec vues en bloc......................................132
. . . . . . . . . . . . . . . . . . . .......................
alignement dans les tableaux ...................................21 'BEAMER_COL', propriété . . . . . . . . . . . . . . . . . . . 158
ALLTAGS", propriété spéciale .....................................69 . . . . . . . . . . . . . . . . . . .......................
'ALT_TITLE', propriété ......................................152, 192 'BEAMER_ENV', propriété . . . . . . . . . . . . . . . . . . . 158
liens d'équerre .............................................................38 . . . . . . . . . . . . . . . . . . . .......................
équerres de fixation, liens autour de l'équerre .......42 'BEAMER_FONT_THEME', mot-clé . . . . . . . . . . . . . . 157
anniversaires, de BBDB...........................................113 ...
API, pour la cartographie .........................................276 'BEAMER_HEADER', mot-clé . . . . . . . . . . . . . . . . . . 157
. . . . . . . . . . . . . . . . ......................
API, pour les propriétés ...........................................275
'BEAMER_INNER_THEME', mot-clé . . . . . . . . . . . . . 157
APPENDICE", propriété...............................................192 .
nomination ...........................................................76, 114 'BEAMER_OPT', propriété . . . . . . . . . . . . . . . . . . . 158
rappels de rendez-vous ...........................................114 . . . . . . . . . . . . . . . . ..........................
appt.el ......................................................................114 'BEAMER_OUTER_THEME', mot-clé . . . . . . . . . . . . . 157
APPT WARNTIME, mot-clé ....................................114 .
lieux d'archivage .........................................................95 'BEAMER_REF', propriété . . . . . . . . . . . . . . . . . . . 158
ARCHIVE", mot-clé ...............................................95, 251 . . . . . . . . . . . . . . . . . . . . ......................
'BEAMER_THEME', mot-clé . . . . . . . . . . . . . . . . . . . 157
ARCHIVE", propriété ..............................................70, 95 . . . . . . . . . . . . . . . . . . .....................
'ARCHIVE', tag...............................................................96 BEGIN clocktable" (début de la table
entrées archivées, dans les vues de l'agenda......109 d'horloge)..................................................................87
archivage ...............................................................94, 95 'BEGIN columnview'....................................................74
'BEGIN_CENTER' . . . . . . . . . . . . . . . . . . . . . . . . . 137
. . . . . . . . . . . . . . . . . . . ........................
...
'BEGIN_COMMENT' . . . . . . . . . . . . . . . . . . . . . . . . 155
. . . . . . . . . . . . . . . . . . . . ......................
...
Chapitre 18 : Index 472
principal

'BEGIN_EXAMPLE' . . . . . . . . . . . . . . . . . . . . . . . . 141
. . . . . . . . . . . . . . . . ...........................
...
'BEGIN_EXPORT ascii' . . . . . . . . . . . . . . . . . . . . 156
.........
'BEGIN_EXPORT beamer' . . . . . . . . . . . . . . . . . . . 159
....
'BEGIN_EXPORT html' ................................................163
'BEGIN_EXPORT latex' . . . . . . . . . . . . . . . . . . . . 172
...........
'BEGIN_EXPORT texinfo' . . . . . . . . . . . . . . . . . . 193
...........
'BEGIN_JUSTIFYLEFT' . . . . . . . . . . . . . . . . . . . . . 156
.............
'BEGIN_JUSTIFYRIGHT' . . . . . . . . . . . . . . . . . . . . 156
. . . . . . . . . . . . . . . . . . . . . . . ..................
BEGIN_QUOTE' .............................................................137
BEGIN_SRC .........................................................142, 218
Chapitre 18 : Index 473
principal

BEGIN_VERSE' .............................................................137 bloc de code, liaisons de touches...........................245


BIND", mot-clé............................................................151 bloc de code, langues ..............................................239
agenda du bloc..........................................................132 bloc de code, bibliothèque .......................................244
BLOCKED", propriété spéciale .....................................69 bloc de code, référence noweb...............................241
blocage des cases à cocher......................................59 bloc de code, résultats de l'évaluation ...................231
blocs, pliage.................................................................15 bloc de code, structure.............................................218
texte en gras, règles de balisage............................137 références aux lignes de code, règles de balisage141
logique booléenne, pour les recherches dans texte du code, règles de balisage...........................137
l'agenda .....................................................................115 'colnames', argument d'en-tête ...............................222
liens de support...........................................................38 formule de la colonne .................................................29
rapports de bogues .......................................................3 vue en colonne, pour les propriétés .........................71
vue en colonne, dans l'agenda ...............................135
colonne, des coordonnées du champ ......................24
C 'COLUMNS', mot-clé .......................................................71
C-c C-c, vue d'ensemble .........................................250 COLONNE", propriété ............................................70, 251
cache des résultats de l'évaluation du code...........230 évasion de la virgule, dans les exemples littéraux141
'cache', argument d'en-tête .....................................230 commandes, dans la mémoire tampon de l'agenda 123
Paquet Calc .................................................................23 bloc de commentaires ..............................................155
calc.el ......................................................................256 lignes de commentaires ...........................................155
calculs, dans les tableaux ...................................20, 23 commentaires arbres ...............................................155
commandes de calendrier, de l'agenda ................130 entrées commentées, dans vues de l'agenda ......109
intégration du calendrier ..........................................112 'comments', argument d'en-tête ...............................238
calendrier, pour sélectionner la date........................79 complétion, des mots du dictionnaire ....................247
"APPEL", mot-clé ........................................................228 achèvement, des noms de fichiers...........................44
CAPTION", mot-clé ....................................144, 164, 165 complément, des abréviations de liens..................247
légendes, règles de balisage ..................................144 achèvement, des liens ...............................................43
capturer ........................................................................97 achèvement, des mots-clés de l'option ...........51, 247
protocole de capture.................................................260 achèvement, des clés de propriété ........................247
capturer, à partir de l'ordre du jour .........................128 achèvement, des étiquettes ..............................61, 247
catégorie ....................................................................118 complétion, des symboles TEX ..............................247
catégorie filtrage, dans l'agenda.............................120 achèvement, des mots-clés TODO..................49, 247
catégorie, pour la correspondance tags/propriétés index des concepts, dans l'exportation Texinfo ....192
....................................................................................115 constantes, dans les calculs......................................25
'CATEGORIE', mot-clé.........................................118, 251 constantes.el..........................................................256
'CATEGORIE', propriété ........................................70, 118 CONSTANTS", mot-clé...........................................25, 251
cdlatex.el................................................................256 contenu, visibilité globale état .....................................7
CDLATEX ..................................................................140 horloge continue..........................................................91
blocs centraux ...........................................................137 évaluation du bloc de code de contrôle .................229
image centrale dans l'exportation LaTeX ..............175 convertir......................................................................185
modifier l'affichage de l'agenda ..................................123 convertisseur .............................................................185
blocage des cases à cocher .......................................59 'COOKIE_DATA', propriété ......................................57, 58
statistiques sur les cases à cocher ............................58 coordonnées, du champ ............................................24
cases à cocher ............................................................58 copie de notes .............................................................94
cases à cocher et dépendances TODO ..................53 copie, de sous-arbres ...................................................9
enfants, sous-arbre visibilité état ................................6 'COPIE', propriété.......................................................191
CINDEX", mot-clé .......................................................192 compte à rebours ........................................................92
citation ........................................................................214 compteur, macro .......................................................154
CLASS", propriété .......................................................198 'CREATOR', mot-clé .....................................................149
Vue d'ensemble propre ............................................248 CSS, pour l'exportation HTML.................................166
CLOCK_MODELINE_TOTAL", propriété..........................85 cua.el ........................................................................257
temps d'horloge ...........................................................84 vues personnalisées de l'agenda ............................130
CLOCKSUM", propriété spéciale...........................69, 136 format de date et d'heure personnalisé ................80
'CLOCKSUM_T', propriété spéciale ......................69, 136 chaînes de recherche personnalisées ......................47
horloge, bloc dynamique............................................86 'CUSTOM_ID', propriété ..........................................39, 42
"CLOSED", propriété spéciale ......................................69 découpage, de sous-arbres.........................................9
bloc de code, exécution par lots .............................245 le cyclisme, en clair ....................................................13
bloc de code, édition ................................................240 cyclisme, des dossiers de l'ordre du jour...............110
bloc de code, évaluation ..........................................228 cyclisme, des états TODO.........................................48
bloc de code, exportation.........................................236
bloc de code, extraction du code source...............237
Chapitre 18 : Index 474
principal

cyclisme, visibilité..........................................................6 filtrage de l'effort, dans l'agenda.............................120


EFFORT", propriété .......................................................91
Liens Elisp....................................................................40
D ellipse, symbole spécial ...........................................139
agenda quotidien ......................................................111 ELPA...............................................................................3
tiret, symbole spécial ................................................139 'email', macro ...........................................................154
index de type de données, dans l'exportation 'EMAIL', mot-clé .........................................................149
Texinfo .......................................................................192 intégration d'images dans l'ODT.............................182
format de date, personnalisé.....................................80 entités .........................................................................138
plage de dates .............................................................77 enum, attribut Texinfo ..............................................193
timbre à date................................................................76 'epilogue', argument d'en-tête ...............................228
timbres à date ..............................................................76 caractère d'échappement...........................................255
dattier ............................................................................99 syntaxe d'échappement, pour les liens ...................38
date", macro..............................................................154 'eval', argument d'en-tête........................................229
date, lecture dans le minibuffer.................................78 évaluer l'intervalle de temps ......................................78
'DATE', mot-clé............................................................149 exemple de bloc ........................................................141
dates .............................................................................76 blocs d'exemple, dans l'exportation LATEX ...........176
Marqueur "DEADLINE...................................................81 'EXCLUDE_TAGS', mot-clé...........................................149
DEADLINE", bien d'exception ......................................69 exclure des entrées de la table des matières .......151
délais ............................................................................76 export back-end.........................................................147
débogage des formules de tableaux ........................32 export, dispatcher .....................................................147
arguments d'en-tête par défaut par langue...........219 exportation, fichiers d'inclusion ...............................152
définir de nouveaux protocoles...............................260 export, OpenDocument............................................179
rétrogradation, de sous-arbres....................................9 Exportation, paramètres ..........................................148
dépendances, des états TODO ................................52 Exportation, écriture de back-ends.........................267
DESCRIPTION", mot-clé ...................157, 161, 169, 179 'EXPORT_FILE_NAME', mot-clé ..................................149
DESCRIPTION", propriété ..................................192, 198 'EXPORT_FILE_NAME', propriété................................179
entrées de journal, création à partir de l'agenda..130 EXPORT_LATEX_CLASS', propriété ............................170
intégration de l'agenda .............................................112 EXPORT_LATEX_CLASS_OPTIONS', propriété.............170
horodatage de type journal ........................................76 l'exportation................................................................147
dictionnaire mots complétés....................................247 exportation des vues de l'agenda...........................134
Fichier 'dir', dans l'exportation Texinfo..............192 l'exportation, non.......................................................155
'dir', argument d'en-tête..........................................227 'exports', argument d'en-tête .................................236
DIR", propriété ..........................................................105 mots-clés TODO étendus ..........................................49
annuaires, pour la publication .................................203 archivage externe .......................................................95
dispatcher, pour les commandes d'exportation ....147 liens externes ..............................................................40
envoi des commandes de l'agenda ........................110 liens externes, dans l'exportation HTML ...............164
affichage changeant, dans l'agenda ......................123
doc, docx, rtf..............................................................185
structure du document..................................................6
F
titre du document ......................................................149 visages, pour les mots-clés TODO...........................51
documentation...........................................................255 FAQ.................................................................................1
FAIT, mot-clé TODO final ........................................51 Retour d'information ......................................................3
tiroir, pour les biens ....................................................67 coordonnées du champ..............................................24
tiroir, pour l'enregistrement des changements d'état formule de champ .......................................................28
.......................................................................................53 références de terrain ..................................................23
tiroirs .............................................................................15 liens de fichiers............................................................40
durée, informatique .....................................................28 liens de fichiers, recherche........................................46
dvipng.................................................................165, 184 complétion du nom de fichier ....................................44
dvisvgm..............................................................165, 184 'file', argument d'en-tête........................................232
blocs dynamiques.....................................................270 'file-desc', argument d'en-tête .............................233
l'indentation dynamique............................................248 'file-ext', argument d'en-tête ...............................233
'file-mode', argument d'en-tête .............................233
FILE", propriété spéciale............................................69
E dossiers pour l'ordre du jour....................................109
ecomplete.el............................................................258 fichiers, ajout à la liste de l'agenda.........................109
édition de tableaux......................................................17 fichiers, sélection pour la publication .....................204
édition des formules de tableaux ..............................30 FILETAGS", mot-clé.............................................61, 251
éditions, rattraper l'invisible .........................................8
estimations de l'effort ..................................................91
Chapitre 18 : Index 475
principal

filladapt.el............................................................258 'html-style', 'OPTIONS' item ...................................167


entrées de filtrage, dans l'agenda ..........................120 Exportation HTML....................................................160
Filtres, exportation ....................................................200 Exportation HTML, CSS...........................................166
FINDEX", mot-clé........................................................192 HTML, et mode Orgtbl..............................................270
'FLAGGED', tag.............................................................264 'HTML', mot-clé............................................................163
plié, état de visibilité du sous-arbre ............................6 'HTML_CONTAINER', mot-clé.......................................161
plier, arbres clairsemés ..............................................11 HTML_CONTAINER_CLASS', propriété ........................167
liens suivants ...............................................................44 HTML_DOCTYPE", mot-clé ...........................................161
pieds de page, en blocs de code............................228 HTML_HEAD", mot-clé.........................................161, 167
notes de bas de page ...............................................145 'HTML_HEAD_EXTRA', mot-clé ............................161, 167
spécificateur de format, dans le tableur ..................25 'HTML_HEADLINE_CLASS', propriété .........................167
format, de liens............................................................38 'HTML_INCLUDE_STYLE', mot-clé . . . . . . . . . . . . . 167
formatage du code source, règles de balisage ....142 ..
débogage des formules..............................................32 'HTML_LINK_HOME', mot-clé . . . . . . . . . . . . . . . . . 161
édition de formules......................................................30 . . . . . . . . . . . . . . . . . . ....................
syntaxe de la formule, Calc .......................................25 'HTML_LINK_UP', mot-clé . . . . . . . . . . . . . . . . . . 161
. . . . . . . . . . . . . . . . . . . ....................
formule, pour un champ de table individuel.........28
'HTML_MATHJAX', mot-clé . . . . . . . . . . . . . . . . . . 161
formule, pour une série de champs..........................28 . . . . . . . . . . . . . . . . . ......................
formule, pour une colonne de tableau .....................29 'HTML5', exporter de nouveaux éléments . . . . . . 162
formule, en tableaux ...................................................20 . . . . . . . . . . . . . . . . . . . . . . . . ..................
index des fonctions, dans l'exportation Texinfo....192 .
liens hypertextes . . . . . . . . . . . . . . . . . . . . . . . . . 38
............
G hyperliens, ajout de nouveaux types . . . . . . . . . 265
. . . . . . . . . . . . . . . . . . . . . ...................
cyclisme mondial...........................................................7
liaisons de touches globales........................................3
liste globale TODO ..................................................114 I
visibilité mondiale états ..............................................7 Exportation iCalendar...............................................198
Liens Gnus...................................................................40
ID", propriété ................................................42, 74, 198
graphique, en tableaux...............................................35
identifier, ImageMagick ............................................182
étiquettes de groupe....................................................64
oisif, résolu, suspendu ...............................................90
balises de groupe, sous forme d'expressions
image, centrage dans l'exportation LaTeX............175
régulières ...................................................................115
ImageMagick.....................................................165, 184
regroupement de colonnes dans des tableaux.......22 images, intégration dans ODT ................................182
images, inline en HTML ...........................................165
H images, en ligne dans LaTeX .................................174
images, règles de balisage......................................143
habitudes......................................................................55 imenu.el....................................................................257
piratage ......................................................................265 paramètres dans la mémoire tampon ....................251
arguments d'en-tête par langue..............................220 horodatage inactif........................................................77
arguments d'en-tête, dans les blocs de code .......219
fichiers d'inclusion, lors de l'exportation.................152
lignes d'en-tête, dans les tableaux ...........................17 'INCLUDE', mot-clé . . . . . . . . . . . . . . . . . . . . . . . 152
en-tête, pour les fichiers LATEX ...............................170 . . . . . . . . . . . . . . . . . . ........................
HEADER", mot-clé........................................................221 Mode d'indentation . . . . . . . . . . . . . . . . . . . . . . 249
en-têtes, en blocs de code .......................................228 ...........
navigation à la une ........................................................8 indentation, dans les blocs de code . . . . . . . . . 240
balisage des titres .......................................................61 . . . . . . . . . . . . . . . . . . . . . . ....................
titre, promotion et rétrogradation.................................9 indentation, dans les blocs source . . . . . . . . . . . 143
titres ................................................................................6 . . . . . . . . . . . . . . . . . . . . . ...................
titres, dans l'exportation HTML.............................163 index, dans un projet de publication . . . . . . . . . 211
Liens d'aide..................................................................40 . . . . . . . . . . . . . . . . . . . . . ...................
'INDEX', mot-clé . . . . . . . . . . . . . . . . . . . . . . . . . 211
cacher le texte..............................................................6
. . . . . . . . . . . . . . . . . .........................
cacher les grandes stars .........................................248 'INDEX', propriété . . . . . . . . . . . . . . . . . . . . . . . . 192
'hlines', argument d'en-tête....................................232 . . . . . . . . . . . . . . . . . . . . .......................
crochets......................................................................265 .
règle horizontale, en tableaux ................................17 indic, attribut Texinfo . . . . . . . . . . . . . . . . . . . . . 193
règles horizontales, dans l'exportation ASCII ...156 . . . . . . . . . . . . . . . . . . . ...................
règles horizontales, dans l'exportation LATEX ......177 Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
règles horizontales, règles de balisage .................145 .......
Fichier de répertoire Info, dans l'exportation 192
Texinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
...
Liens d'information......................................................40
INFOJS_OPT', mot-clé................................................167
Chapitre 18 : Index 476
principaldes biens .....................................................70
héritage,
héritage, de tags .........................................................61
en ligne, dans l'exportation LATEX ........................172
l'incrustation d'images ..............................................143
inlining d'images en HTML ....................................165
inlining d'images dans LaTeX.................................174
'fichier-entrée', macro.........................................154
insertion de liens .........................................................43
insertion, de modèles ...............................................247
install-info, dans l'exportation de Texinfo .......192
installation ......................................................................2
Chapitre 18 : Index 477
principal

Installation du protocole Org ...................................259 liens, dans l'exportation HTML................................164


liens internes ..............................................................39 liens, dans l'exportation ODT ..................................181
liens internes, dans l'exportation HTML .............164 liens, internes .............................................................39
introduction....................................................................1 liens, édition...............................................................209
Liens IRC .....................................................................40 liens, cibles radio ........................................................40
texte en italique, règles de balisage....................137 liens, revenir à............................................................44
ITEM", propriété spéciale............................................69 liner .............................................................................254
Formes Lisp, comme formules de tableau ..............27
liste des inscriptions..................................................151
J liste des tableaux ......................................................151
saut, à la une.................................................................8 listes, dans d'autres modes.....................................267
listes, ordonnées .........................................................12
listes, simples ..............................................................12
K exemples littéraux, règles de balisage...................141
liaisons de touches, globales ......................................3 'LOCATION', propriété.................................................198
index des touches, dans l'exportation Texinfo......192 LOG_INTO_DRAWER', propriété ..............................53, 84
options de mots-clés...................................................51 l'exploitation forestière, du progrès ..........................53
mot-clé", macro .......................................................154 'LOGGING', propriété ..............................................54, 70
'KEYWORDS', mot-clé..........................157, 161, 170, 180 fonctions de recherche dans les tableaux...............30
KINDEX", mot-clé .......................................................192 lualatex .......................................................................169

L M
remplacement des macros, lors de l'exportation..153
arguments d'en-tête par défaut spécifiques à la
MACRO", mot-clé..........................................................153
langue ........................................................................219 mainteneur .....................................................................3
propriétés des arguments d'en-tête spécifiques à la entrées de mappage, API........................................276
langue mappings dans le protocole open-source .............262
. ..........................................................................220 anneau de marquage..................................................44
langue, en blocs de code.........................................218 Exportation Markdown..............................................178
'LANGUE', mot-clé ......................................149, 169, 171 marquage des caractères, tableaux.........................34
LAST_REPEAT', propriété .............................................85 vue du match .............................................................115
LATEX", mot-clé..........................................................172 correspondance, des biens .....................................115
'LATEX_CLASS', mot-clé .............................................170 correspondance, d'étiquettes ..................................115
'LATEX_CLASS_OPTIONS', mot-clé ............................170 correspondance, étiquettes........................................61
'LATEX_COMPILER', mot-clé ..............................169, 170 symboles mathématiques........................................138
'LATEX_HEADER', mot-clé..........................161, 170, 171 MathJax......................................................................165
'LATEX_HEADER_EXTRA', mot-clé......................170, 171 MathML ......................................................................183
Classe LATEX.............................................................170
Exportation LATEX....................................................168 Liens MH-E .................................................................40
Fragments de LATEX.................................................139 minlevel", inclure.....................................................152
Fragments LATEX, aperçu.........................................140 mode mineur pour les tableaux.................................22
En-tête LATEX............................................................170 'mkdirp', argument d'en-tête ...........................227, 238
Interprétation LATEX.................................................139
Structure de sectionnement LATEX ..........................170 pour le mode Calc.......................................................25
Mode LATEX et Orgtbl .............................................268 temps de modification", macro..........................154
Exportations des pays latins-1..............................155 motion commande dans l'ordre du jour..................123
listes de lettres, dans l'exportation Texinfo ...........193 mouvement, entre les titres .........................................8
niveau, pour la correspondance entre les plusieurs lignes de formule......................................32
étiquettes et les propriétés....................................115 plusieurs éléments dans les listes Texinfo............193
LibreOffice..................................................................179
limites, dans l'agenda...............................................122
sauts de ligne, règles de balisage ..........................137 N
lignes", inclure.........................................................153 n", macro ....................................................................154
abréviations des liens .................................................45 nom de la colonne ou du champ ..............................25
lien abréviations, complément de...........................247 Mot-clé "NOM", dans les blocs source .....................218
achèvement du lien.....................................................43 NOM", mot-clé .........................................................25, 39
format de lien..............................................................38 Références nominatives .............................................25
LIEN", mot-clé .....................................................46, 251 les noms comme mots-clés TODO ..........................49
liens, externes .............................................................40
colonnes étroites dans les tableaux .........................21
liens, recherche du suivant/précédent ..................45
liens, manipulation ......................................................42
Chapitre 18 : Index 478
principal

'no-expand', argument d'en-tête . . . . . . . . . . . . 238 impression d'arbres épars .........................................12


.... priorités.........................................................................56
'NOBLOCKING', propriété . . . . . . . . . . . . . . . . . . . . 52 priorités, des points de l'ordre du jour ....................119
. . . . . . . . . . . . . . . . . ........................ PRIORITÉS", mot-clé...........................................57, 251
'noweb', argument d'en-tête . . . . . . . . . . . . . . . . 241
cookie prioritaire ........................................................56
.....
'noweb-ref', argument d'en-tête . . . . . . . . . . . . 241 PRIORITÉ", propriété spéciale ...................................69
.... index des programmes, dans l'exportation Texinfo 192
'noweb-sep', argument d'en-tête . . . . . . . . . . . . 242 enregistrement des progrès........................................53
.... projets, pour la publication.......................................203
nombre de titres . . . . . . . . . . . . . . . . . . . . . . . . 250 'prologue', argument d'en-tête ...............................228
..... promotion, de sous-arbres...........................................9
preuve, dans l'exportation LATEX ............................176
propriétés .....................................................................67
O propriétés, API...........................................................275
se produire, commander ............................................11 propriétés, vue en colonnes.......................................71
arbre-occurrence........................................................131 propriétés, héritage.....................................................70
contours des niveaux impairs uniquement ............248 propriétés, recherche..................................................69
ODT.............................................................................179 propriétés, spéciales...................................................69
ODT", mot-clé ..............................................................187 syntaxe des propriétés ...............................................67
'ODT_STYLES_FILE', mot-clé ............................180, 181 'propriété', macro ...................................................154
'only-contents', include .........................................153 'PROPRIÉTÉ', mot-clé...........................................68, 251
protocole open-source...............................................261 protocole, capture .....................................................260
OpenDocument .........................................................179 protocole, nouveau protocole..................................260
option complétion du mot-clé...................................247 protocole, open-source.............................................261
options, pour des vues personnalisées de l'agenda protocole, open-source URL réécrit .......................261
.....................................................................................132 protocole, open-source, set-up mapping...............262
options, pour l'exportation........................................148 protocole, store-link...................................................260
options, pour la publication......................................205 protocoles, pour l'accès externe ......................97, 259
'OPTIONS', mot-clé .....................................................148 édition .........................................................................203
listes ordonnées ..........................................................12 options de publication...............................................205
ORDERED", propriété ..............................................52, 59
Org export..................................................................190
Mode Org, mise en marche..........................................3 Q
Mode Org Num..........................................................250 édition de requêtes, dans l'agenda ........................120
Protocole Org, mise en place .................................259 Blocs de citations ......................................................137
org-agenda, commande ............................................112 blocs de citations, dans l'exportation LATEX ...........178
org-latex-default-quote-environment .......................178
ORG-IMAGE-ACTUAL-WIDTH", propriété....................144
Mode Orgtbl.........................................................22, 267 R
ORGTBL", mot-clé .......................................................267 bouton radio, case à cocher comme ........................59
arbre de contour ............................................................6 tables radio ................................................................267
'output-dir', argument d'en-tête ...........................232 cibles radio...................................................................40
vue d'ensemble, visibilité globale état .......................7 formule de gamme ......................................................28
références de la gamme.............................................24
plages, temps ...............................................................76
P recalculer les champs de la table .............................33
paquets, interaction avec d'autres..........................256 Références...................................................................23
'padline', argument d'en-tête .................................238 références, noms ..........................................................25
paragraphes, règles de balisage ............................137 références, à distance ..................................................25
passer des arguments aux blocs de code.............222 références, à un autre tableau ..................................25
collage, de sous-arbres................................................9 références, aux domaines ..........................................23
Exportation de PDF .................................................168 références, à des fourchettes.....................................24
pdflatex .......................................................................169 refonte des notes ........................................................94
mots-clés par fichier ...................................................51 refresh set-up .............................................................251
PINDEX", mot-clé .......................................................192 région, active .................................................................9
liens simples ...............................................................38 syntaxe des expressions régulières ........................254
listes simples ..............................................................12 expressions régulières, dans les recherches........254
listes simples, dans l'exportation LATEX ..............175 expressions régulières, avec recherche par tags.115
liens externes en texte clair.......................................42
tracer des tableaux à l'aide de Gnuplot ...................35
PLOT", mot-clé..............................................................35
'post', argument d'en-tête........................................235
présentation, des points de l'ordre du jour ............118
édition imprimée ..........................................................1
Chapitre 18 : Index 479
principal

minuterie relative . . . . . . . . . . . . . . . . . . . . . . . . . 92
.........
rappels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
. . . . . . . . . . . . . . . . ............................
édition à distance, en vrac, à partir de l'agenda . 128
...........
édition à distance, à partir de l'agenda . . . . . . . 126
...........
édition à distance, annuler . . . . . . . . . . . . . . . . . 126
........
références à distance . . . . . . . . . . . . . . . . . . . . . . . 25
.......
tâches répétées ... ... ... ... ... ... ... ... ... ... ... ... . 82
... ... ... ... ... ... ... ... ... ...
rapport, du temps chronométré . . . . . . . . . . . . . . 86
. . . . . . . . . . . . . . . . . . . . . . . . .................
...
signaler un bogue . . . . . . . . . . . . . . . . . . . . . . . . . 3
. . . . . . . . . . . . . . . . . . . . ......................
...
résoudre le temps mort . . . . . . . . . . . . . . . . . . . . 90
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ......
..........
'results', argument d'en-tête . . . . . . . . . . . . . . 231
.....
'résultats', macro . . . . . . . . . . . . . . . . . . . . . . 155
. . . . . . . . . . . . . . . . . . . . . . ....................
...
'RESULTS', mot-clé . . . . . . . . . . . . . . . . . . . . . . . 228
. . . . . . . . . . . . . . . ...........................
révéler le contexte.........................................................7 show branches, commande ..........................................7
URL réécrite dans un protocole open-source.......261 montrer les enfants, commande .................................7
Liens Rmail ..................................................................40 afficher le texte caché...................................................6
séparateur de lignes, dans les tableaux..................17 trait d'union timide, symbole spécial ......................139
rangée, de coordonnées de champ..........................24 Plan du site, des pages publiées............................209
'rownames', argument d'en-tête ...............................223 smartphone................................................................263
Flux RSS..............................................................97, 108 tri, des points de l'ordre du jour...............................119
rsync ...........................................................................211 tri, de la liste simple ....................................................15
tri, des sous-arbres .......................................................9

S
Marqueur "SCHEDULED ................................................81
"SCHEDULED", propriété spéciale................................69
l'ordonnancement........................................................76
scripts, pour le traitement de l'agenda ...................273
option de recherche dans les liens de fichiers........46
chaînes de recherche, personnalisées .....................47
Vue de la recherche...................................................117
recherche d'étiquettes ................................................65
recherche, pour le texte ...........................................117
recherche, de biens ....................................................69
structure de sectionnement, pour l'exportation
LATEX........................................................................170
'SELECT_TAGS', mot-clé.............................................149
'sep', argument d'en-tête..........................................233
sep, attribut Texinfo ..................................................193
SEQ_TODO", mot-clé.............................................51, 254
'session', argument d'en-tête .................................227
réglage des étiquettes ................................................61
'SETUPFILE', mot-clé.........................................148, 252
timestamps sexp .........................................................76
'shebang', argument d'en-tête .................................238
liens vers les coquilles................................................40
shift-sélection.............................................................257
mode de sélection par décalage................................14
show all, commande.....................................................7
show all, global visibility state......................................7
code source, exécution par lots . . . . . . . . . . . . 245
. . . . . . . . . . . . . . . . . . . . . .................
code source, structure des blocs . . . . . . . . . . . . 218
. . . . . . . . . . . . . . . . . . . . . .................
code source, édition . . . . . . . . . . . . . . . . . . . . . . 240
. . . . . . . . . . . . . . . . . . . . . . . .................
Chapitre 18 : Index code source, évaluation . . . . . . . . . . . . . . . . . . 480 228
principal . . . . . . . . . . . . . . . . . . . . . . . . .................
code source, exportation . . . . . . . . . . . . . . . . . . 236
. . . . . . . . . . . . . . . . . . . . . . . ...................
.
arbre clairsemé, pour les délais................................82 code source, extraction . . . . . . . . . . . . . . . . . . . 237
. . . . . . . . . . . . . . . . . . . . . ...................
arbre clairsemé, pour TODO.....................................48
code source, en ligne . . . . . . . . . . . . . . . . . . . . 218
arbre clairsemé, basé sur les balises.......................61 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .........
arbres clairsemés..........................................................11 ......
blocs spéciaux, dans l'exportation ASCII ..............156 code source, langues . . . . . . . . . . . . . . . . . . . . . . 239
blocs spéciaux, dans l'exportation LATEX .............176 . . . . . . . . . . . . . . . . . . . ..................
mots-clés spéciaux ...................................................251 code source, bibliothèque . . . . . . . . . . . . . . . . . 244
symboles spéciaux....................................................138 ..........
symboles spéciaux, affichage dans la mémoire code source, référence noweb . . . . . . . . . . . . . . 241
tampon .......................................................................138 . . . . . . . . . . . . . . . . . . . ..................
touches de vitesse ......................................................248 code source, résultats de l'évaluation 231
speedbar.el..............................................................257 ..........................................
code source, travail avec . . . . . . . . . . . . . . . . . . 217
capacités des tableurs.................................................23 . . . . . . . . . . . . . . . . ....................
crochets, autour des liens..........................................42
visibilité des startups...................................................7
STARTUP", mot-clé...........................................8, 15, 252
statistiques, pour les cases à cocher .......................58
statistiques, pour les points TODO ..........................57
protocole store-link ...................................................260
stocker le lien, dans un tampon de code source ..143
stockage des liens ......................................................42
texte barré, règles de balisage .............................137
édition de la structure ...................................................9
structure du document..................................................6
STYLE", propriété .........................................................55
styles, personnalisés ........................................180, 185
SUBAUTHOR", mot-clé.........................................190, 191
sous-niveaux, inclusion dans la correspondance des
étiquettes .....................................................................61
sous-niveaux, inclusion dans la liste TODO .........114
indice ..........................................................................138
SUBTITLE", mot-clé.........156, 158, 162, 170, 180, 190
cycle des sous-arbres ..................................................6
états de visibilité des sous-arbres ...........................6
sous-arbre, couper-coller .............................................9
sous-arbre, état de visibilité du sous-arbre ...............6
sous-arbres, couper-coller ...........................................9
résumé............................................................................1
SOMMAIRE", propriété.................................................198
exposant.....................................................................138
commutateurs, en blocs de code ...........................218
vérificateur de syntaxe .............................................254
syntaxe, noweb .........................................................241
syntaxe des formules .................................................25
Chapitre 18 : Index 481
principal

T format de l'heure, personnalisé.................................80


éditeur de tableaux, intégré .......................................17 grille horaire ...............................................................119
éditeur de tableau, table.el ..................................257 temps, informatique ....................................................28
indirection de table......................................................25 temps", macro ...........................................................154
fonctions de consultation de tableaux......................30 temps, lecture dans le minibuffer...........................78
table des matières ....................................................151 spécification de l'heure du jour ................................119
table des matières, exclure les entrées.................151 plage temporelle ..........................................................77
syntaxe du tableau......................................................17 temps ............................................................................76
table-type, attribut Texinfo .......................................193 horodatage ...................................................................76
table.el....................................................................257 horodatage, inactif ......................................................77
tables ............................................................................17 horodatage, avec intervalle de répétition.................76
tableaux, en HTML ...................................................164 TIMESTAMP", propriété spéciale .................................69
tableaux, dans l'exportation LATEX ........................172 TIMESTAMP_IA", propriété spéciale ...........................69
tableaux, dans l'exportation ODT ...................181, 187 horodatage ...................................................................76
tableaux, dans d'autres modes...............................267 TIMEZONE", propriété.................................................198
achèvement de l'étiquette ........................................247 TINDEX", mot-clé........................................................192
filtrage des étiquettes, dans l'agenda ....................120 'titre', macro............................................................154
tag héritage..................................................................61 'TITLE', mot-clé..........................................................149
recherche de tags .......................................................65 toc", dans le mot-clé "OPTIONS ............................151
étiquettes ......................................................................61 TOC", mot-clé ..............................................................151
tags hiérarchie.............................................................64 todo, en tant que vue de l'agenda ..........................131
tags view ....................................................................115 todo-tree .....................................................................131
tags, en tant que vue d'ensemble de l'agenda .......131 Dépendances TODO ..................................................52
tags, groupes...............................................................64 TODO dépendances, 'NOBLOCKING'...........................52
tags, setting .................................................................61 Articles TODO .............................................................48
tags-todo.....................................................................131 TODO correspondance des mots-clés...................114
tags-tree .....................................................................131 TODO correspondance des mots-clés, avec recherche par tags 115
TAGS", mot-clé .....................................................62, 254 Jeux de mots clés TODO...........................................50
TAGS", propriété spéciale............................................69 Compléter les mots-clés TODO ..............................247
'tangle', argument d'en-tête ...................................237 Liste TODO, globale ...............................................114
'tangle-mode', argument d'en-tête.........................238 Types de TODO.........................................................49
enchevêtrement.........................................................237 Flux de travail TODO ..................................................49
cibles, pour les liens ...................................................39 TODO", mot-clé .....................................................51, 254
cibles, radio..................................................................40 TODO", propriété spéciale............................................69
tâches, décomposition ................................................57 filtrage des principaux titres, dans l'agenda..........120
tâches répétées...........................................................82 Nœud supérieur, dans l'exportation Texinfo .........192
Mots clés "TBLFM", multiples......................................32 mode de marquage transitoire ....................................9
TBLFM", mot-clé............................................................29 fonction du traducteur...............................................270
TBLFM", commutation ..................................................32 arbres, clairsemés .......................................................11
expansion du modèle ...............................................247 arbres, visibilité ..............................................................6
insertion d'un modèle ...............................................247 liaisons avec les touches tty..................................259
modèle, personnalisé.......................................180, 185 tableaux à deux colonnes, dans l'exportation Texinfo 193
modèles, pour Capture ..............................................98 TYP_TODO", mot-clé.............................................51, 254
Tempo ........................................................................247
comme mots-clés TODO ...........................................49
Interprétation TEX.....................................................139
Complétion des symboles TEX...............................247
TEXINFO", mot-clé .....................................................193
TEXINFO_CLASS", mot-clé........................190, 191, 192
U
'TEXINFO_DIR_CATEGORY', mot-clé..................190, 192 texte souligné, règles de balisage ..........................137
TEXINFO_DIR_DESC', mot-clé...........................191, 192 annuler les événements d'édition à distance ........126
'TEXINFO_DIR_TITLE', mot-clé........................191, 192 unisson .......................................................................211
'TEXINFO_FILENAME', mot-clé ..........................190, 191 UNNUMBERED", propriété.............................................150
TEXINFO_HEADER", mot-clé ..............................190, 191 unoconv ......................................................................180
'TEXINFO_POST_HEADER', mot-clé ............................190 mise à jour, tableau ....................................................33
'TEXINFO_PRINTED_TITLE', mot-clé........................191 Liens URL ...................................................................40
zones de texte, en HTML ........................................166 Liens Usenet ................................................................40
recherche de texte ....................................................117 utilisation des sessions dans les blocs de code ....227
horloge de pointage ....................................................84 Exportation UTF-8 ...................................................155
Chapitre 18 : Index 482
principal

V agenda hebdomadaire .............................................111


'var', argument d'en-tête..........................................222 windmove.el..............................................................258
index des variables, dans l'exportation Texinfo ....192 les états du flux de travail en tant que mots-clés TODO 49
vecteurs, dans les calculs de tableaux ....................25 répertoire de travail, dans un bloc de code...........227
blocs verbatim, dans l'exportation LATEX..............176 'wrap', argument d'en-tête........................................234
texte in extenso, règles de balisage....................137
blocs de vers ..............................................................137
blocs de vers, dans l'exportation LATEX ..................177 X
afficher les commandes de fichiers dans l'agenda
.....................................................................................123 xelatex ........................................................................169
VINDEX", mot-clé........................................................192
viper.el ....................................................................258
visibilité cyclisme .........................................................6 Y
visibilité cyclisme, tiroirs...........................................15
VISIBILITÉ", propriété.................................................8 yasnippet.el............................................................258
texte visible, impression...........................................12
Liens VM .....................................................................41
Z
W espace de largeur zéro ............................................255
zip................................................................................179
Liens Wanderlust ........................................................41
Chapitre 19 : Index 483
des clés

19 Index des clés

! < < (répartiteur d'agenda).......................................111


!.....................................................................................63
! (Dispatcheur de l'agenda)....................................118 >
>......................................................................74, 79, 128
#
# (répartiteur de l'agenda) .......................................118 ?
? (Répartiteur de l'ordre du jour) ............................264
$
$...................................................................................127 [
[ ..................................................................................125
%
%...................................................................................129 ^
^ ..................................................................................141
'
'...................................................................................141
_ ..................................................................................141
*
*...................................................................................128 '
* (répartiteur de l'agenda) .......................................111 ` ..................................................................................141

+ 1
+...................................................................................127 1..9,0 ..........................................................................73

, A
,...................................................................................127 a ............................................................................74, 127
a (répartiteur Agenda) .............................................112
- A ..................................................................................123
-...................................................................................127
B
. b ..................................................................................124
B ..................................................................................129
. ............................................................................79, 124

C
/ c ..................................................................................130
/ (répartiteur de l'agenda) .......................................111 C ............................................................................90, 130
C (répartiteur de l'agenda).......................................131
C (menu Capture ........................................................98
: C-#.................................................................................33
:...................................................................................127 C-' ..............................................................................110
C-, ..............................................................................110
C.....................................................................................79
< C-_...............................................................................126
< ..............................................................................74, 79 C-0 C-c C-w ................................................................94
< (répartiteur de l'agenda) .......................................111 C-2 C-c C-w ................................................................94
Chapitre 19 : Index 484
des clés

C-3 C-c C-w ................................................................94 C-c C-c c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ............
.......
C-c ! ............................................................................77 C-c C-c d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
. . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............
......
C-c # ............................................................................60 C-c C-c D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .............
.......
C-c $ ............................................................................95 C-c C-c m m . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
.......................................
. . . . . ...
C-c % ............................................................................44 C-c C-c m M . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
.......................................
. . . . . . ..
C-c & ............................................................................44 C-c C-c s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .............
.......
C-c ' ..........................................31, 143, 153, 240, 257 C-c C-d ................................................................82, 128
C-c * ...............................................................11, 14, 33 C-c C-e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
. . . . . . . . . . . . . . . . . . . . . .......................
....
C-c + ............................................................................20 C-c C-e c a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
.......................................
. . . . ....
C-c , ............................................................................57 C-c C-e c c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
.......................................
. . . . . ...
C-c ..........................................................................14, 19 C-c C-e c f . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
.......................................
. . . . . ...
C-c.................................................................................77 C-c C-e C-a ... ... ... ... ... ... ... ... ... ... ... ... ... ... 148
... ... ... ... ... ... ... ... ... ....
C-c /....................................................................11, 258 C-c C-e C-b . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ............
.....
C-c / / ........................................................................11 C-c C-e C-s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
.......................................
. . . . . ...
C-c / a ........................................................................82 C-c C-e C-v........................................................12, 148
C-c / b ........................................................................82 C-c C-e h h . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
.......................................
. . . . . ...
C-c / d ........................................................................82 C-c C-e h H . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
.......................................
. . . . . ...
C-c / m..................................................................65, 70 C-c C-e h o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
.......................................
. . . . . ...
C-c / p ........................................................................70 C-c C-e i i . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
.......................................
. . . . . . ..
C-c / r ........................................................................11 C-c C-e i t . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
........................................
C-c C-a o ..................................................................105 C-c C-n...........................................................................8
. . . . . . ..
C-c C-a
C-c / t ........................................................................48
O..................................................................105 C-c C-cC-e C-ol........................................44,
b . . . . . . . . . . . . . . . . . . 77, . . . 123,
. . . . 146, 157
. . . 245
C-c C-a s..................................................................105 . C-c . . . . C-p...........................................................................8
..................................
C-c C-a S..................................................................105 . . . . . . . . 61
C-c C-q ..................................................................31,
C-c ; ..........................................................................155 C-c C-e l B . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
C-c C-a z..................................................................105 . C-c . . . . C-r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
. . . ....................................................................7,
C-c C-b ..................................................................8, 160 C-c C-s ................................................................82,
. . . . . . . . 127
C-c
C-c C-c ......14, 18, 21, 31, 32, 59, 62, 63, 68, 73, 74, C-c
< ............................................................................77 C-cC-e C-tl..................................................................48,
l . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 86
75, 77, 85, 86, 146, 228, 245, 250 . C-c
. . . . C-TAB
. . . . . ....................................................................96
.............................
C-c C-c (tampon de capture)...................................97 C-c C-u...........................................................................8
. . . . . ...
C-c = ............................................................................30 C-c C-e l L . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
.......................................
. . . . . . ..
C-c > ............................................................................77 C-c C-e l o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
.......................................
. . . . . ...
C-c ? ............................................................................31 C-c C-e l O . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
.......................................
Chapitre 19 : Index 485
des clés

C-c C-v a..................................................................245 C-c C-x b..............................................................7, 123


C-c C-v b..................................................................245 C-c C-x c ....................................................................10
C-c C-v c..................................................................245 C-c C-x C-a........................................................95, 127
C-c C-v C-a ..............................................................245 C-c C-x C-b ................................................................59
C-c C-v C-b ..............................................................245 C-c C-x C-c ...............................................73, 126, 135
C-c C-v C-c ..............................................................245 C-c C-x C-d ................................................................86
C-c C-v C-d ..............................................................245 C-c C-x C-e..........................................................85, 91
C-c C-v C-e ..............................................................245 C-c C-x C-i ................................................................84
C-c C-v C-f ..............................................................245 C-c C-x C-j ................................................................86
C-c C-v C-g ..............................................................245 C-c C-x C-l ..............................................................140
C-c C-v C-h ..............................................................245 C-c C-x C-n ................................................................45
C-c C-v C-i ..............................................................245 C-c C-x C-o ................................................................85
C-c C-v C-I ..............................................................245 C-c C-x C-p ................................................................45
C-c C-v C-j ..............................................................245 C-c C-x C-q ................................................................86
C-c C-v C-l ..............................................................245 C-c C-x C-r ................................................................59
C-c C-v C-n ..............................................................245 C-c C-x C-s........................................................95, 127
C-c C-v C-o ..............................................................245 C-c C-x C-t ................................................................80
C-c C-v C-p ..............................................................245 C-c C-x C-u .................................................75, 86, 271
C-c C-v C-r ..............................................................245 C-c C-x C-v ..............................................................144
C-c C-v C-s ..............................................................245 C-c C-x C-w..........................................................10, 19
C-c C-v C-t ..............................................................245 C-c C-x C-x ................................................................85
C-c C-v C-u ..............................................................245 C-c C-x C-y..........................................................10, 19
C-c C-v C-v......................................................244, 245 C-c C-x d ....................................................................15
C-c C-v C-x ..............................................................245 C-c C-x e............................................................91, 127
C-c C-v C-z ..............................................................245 C-c C-x f ..................................................................145
C-c C-v d..................................................................245 C-c C-x g ..................................................................108
C-c C-v e..........................................................228, 245 C-c C-x G ..................................................................108
C-c C-v f..........................................................239, 245 C-c C-x I ..................................................................255
C-c C-v g..................................................................245 C-c C-x M-w..........................................................10, 19
C-c C-v h..................................................................245 C-c C-x o..............................................................52, 59
C-c C-v i..........................................................244, 245 C-c C-x p............................................................68, 220
C-c C-v I..................................................................245 C-c C-x q ....................................................................65
C-c C-v j..................................................................245 C-c C-x v ......................................................................7
C-c C-v l..................................................................245 C-c C-x x .....................................................75, 86, 270
C-c C-v n..................................................................245 C-c C-y ..................................................................78, 85
C-c C-v o..................................................................245 C-c C-z ................................................................15, 127
C-c C-v p..................................................................245 C-c M-w.........................................................................94
C-c C-v r..................................................................245 C-c RET ........................................................................19
C-c C-v s..................................................................245 C-c TAB....................................................................7, 21
C-c C-v t..........................................................239, 245 C-g.................................................................................63
C-c C-v u..................................................................245 C-k...............................................................................126
C-c C-v v..........................................................244, 245 C-RET...............................................................................9
C-c C-v x..................................................................245 C-S-DOWN ......................................................................85
C-c C-v z..................................................................245 C-S-GAUCHE..........................................................50, 126
C-c C-w..........................................................10, 94, 127 C-S-RET...........................................................................9
C-c C-w (tampon de capture) ..................................97 C-S-DROIT............................................................50, 126
C-c C-x ,....................................................................92 C-S-UP...........................................................................85
C-c C-x.........................................................................92 C-u C-c ! ....................................................................77
C-c C-x.........................................................................92 C-u C-c * ....................................................................33
C-c C-x ;....................................................................92 C-u C-c.........................................................................77
C-c C-x <..................................................................110 C-u C-c =..............................................................29, 30
C-c C-x >..........................................................110, 126 C-u C-c C-c ................................................................33
C-c C-x @..................................................................214 C-u C-c C-l ................................................................44
C-c C-x _....................................................................93 C-u C-c C-t ................................................................53
C-c C-x \N- C-c...............................................138, 139 C-u C-c C-w ................................................................94
C-c C-x 0....................................................................92 C-u C-c C-x a............................................................96
C-c C-x a............................................................96, 127 C-u C-c C-x C-s ........................................................95
C-c C-x A............................................................96, 127 C-u C-c C-x C-u .........................................75, 86, 271
Chapitre 19 : Index 486
des clés

C-u C-c TAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 K


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . ............
........ k ............................................................................90, 128
C-u C-u C-c ! . . . . . . . . . . . . . . . . . . . . . . . . . . 77 k c (Agenda) ..............................................................97
....... K.....................................................................................90
C-u C-u C-c * . . . . . . . . . . . . . . . . . . . . . . . . . . 33
.......................................
. . . . . ..... L
C-u C-u C-c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .............. l ..................................................................................125
......
C-u C-u C-c = . . . . . . . . . . . . . . . . . . . . . . . . . . 31
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... M
.........
C-u C-u C-u TAB..........................................................7 m ..................................................................................128
C-u C-u C-c C-c . . . . . . . . . . . . . . . . . . . . . . . . 33 m (répartiteur de l'agenda)..........................65, 70, 115
C-u C-u TAB..............................................................7, 8
.......................................
C-u TAB ..........................................................................7 M ..................................................................................130
. . . . . . . ... M (répartiteur d'agenda) ..............................65, 70, 115
C-v.................................................................................79
C-u C-u C-c C-t . . . . . . . . . . . . . . . . . . . . . . . . 50
C-x M-*...............................................................................129
. . . . C-s........................................................31,
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126, . . . .240
C-x C-w.......................................................................134
. . . . . . .... M-a.................................................................................18
C-u
C-x C-u C-c C-w . . . . . . . . . . . . . . . . . . . . . . . . 94
n b ........................................................................11 M-DOWN......................................10, 14, 18, 32, 126, 245
C-x
. . . . n. .s. ........................................................................11
................................ M-e.................................................................................18
C-x n w ........................................................................11
. . . . . . .... M-g M-n.........................................................................12
C-u C-u C-c C-x C-s ... ... ... ... ... ... ... ... ... ... 95 M-g M-p.........................................................................12
C-y.................................................................................10
... ... ... ... ... ... ... ... ... ... ... ... M-g n ............................................................................12
C-u C-u C-c TAB . . . . . . . . . . . . . . . . . . . . . . . . 22 M-g p ............................................................................12
D
.......................................
. . . . . .....
M-GAUCHE ...........................................................9, 14, 18
C-u C-u C-u C-c C-w ... ... ... ... ... ... ... ... ... ... 94
d...................................................................................124 M-m...............................................................................129
... ... ... ... ... ... ... ... ... ... ... ... M-RET ...........................................................9, 14, 19, 92
D...................................................................................125 M-R IGHT .............................................................9, 14, 18
C-u C-u C-u C-u C-c C-t ... ... ... ... ... ... ... ... ... 52
... ... ... ... ... ... ... ... ... ... ... ... M-S -DOWN................................................................19, 31
E M-S-GAUCHE...............................................10, 14, 18, 79
e ............................................................................73, 127 M-S-RET..............................................................9, 14, 59
e (Dispatcher Agenda) ............................................134 M-S-DROITE ..............................................10, 14, 18, 79
M-S-UP ....................................................................18, 31
E...................................................................................125
M-T AB ................................................31, 51, 61, 68, 247
M-U P..........................................10, 14, 18, 32, 126, 245
F M-v.................................................................................79
f...................................................................................124 souris-1 ........................................................44, 79, 146
souris-2 ......................................................44, 123, 146
F...................................................................................123
souris-3...............................................................44, 123

G
g ............................................................................73, 126 N
G...................................................................................125 n ............................................................................73, 123

H O
H...................................................................................130 o ..................................................................................124
O ..................................................................................128
I
i...................................................................................130 P
I...................................................................................128 p ............................................................................73, 123

J Q
j...................................................................................124
J..........................................................................124, 128 q......................................................................63, 73, 130
Chapitre 19 : Index 487
des clés

R U
r....................................................................73, 114, 126 u...................................................................................128
R ..................................................................................125 U...................................................................................129
RET ....................................................18, 44, 63, 79, 123
V
S v.....................................................................................74
v [ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
s ............................................................................90, 126 .........
s (répartiteur de l'agenda) ..............................111, 117 v a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
S ............................................................................90, 130 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .........
S-DOWN .................................14, 18, 31, 57, 78, 79, 127 .............
S-GAUCHE . . . 15, 18, 31, 48, 50, 69, 73, 78, 79, 87, vv EA .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 125 125
128 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..... .. .. .. .. .. .. .. .. .. ..
............
.............
v c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
S-M-DOWN ......................................................................86 .v. l . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..... .. .. ... 125
. . . . . . . . . . . . . . . . . . . . . . . . . . . . ..........................
.v. . d. . .. ... .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
S-M-GAUCHE ..................................................................74 .v. L . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..... .. .. ... 125
. . . . . . . . . . . . . . . . . . . . . . ....................
...........
S-M-RET ........................................................................49 v m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..........
.............
S-M-RIGHT....................................................................74 v R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
. . . . . . . . . . . . . . . . . . . . . . . ...................
T ...........
S-M-UP ..........................................................................86 Xv SPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
t...................................................................................126 ........
x...................................................................................130
tS-RET
(répartiteur de l'agenda) ................................49, 114
............................................................................20 v w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
T...................................................................................127 X...................................................................................128
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..........
T (répartiteur de l'agenda) .......................................114 .............
S-DROITE . . 15, 19, 31, 48, 50, 69, 73, 78, 79, 87, v y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
TAB...................................6,
128 9, 13, 18, 31, 63, 123, 141 Z. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..........
z...................................................................................127
.............
S-TAB ........................................................................7, 18
S-UP .....................................14, 18, 31, 57, 78, 79, 127
CPS ........................................................................63, 123 W
w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
.........
Chapitre 20 : Index des commandes et 488
des fonctions

20 Index des commandes et des fonctions

L org-agenda-goto-date ............................................124
org-agenda-goto-today .........................................124
lisp-complete-symbol .............................................31
org-agenda-fêtes ...................................................130
org-agenda-kill ......................................................126
N org-agenda-later....................................................124
org-agenda-limit-interactively.......................122
erreur suivante ........................................................12 org-agenda-list ......................................................112
org-agenda-list-projets bloqués.....................118
O org-agenda-log-mode ..............................................125
org-agenda-manipuler-query-add.........................125
ou-clock-goto ............................................................86 org-agenda-mois-vue ..............................................124
org-agenda ....................................................................3 org-agenda-next-line ............................................123
org-agenda-add-note ..............................................127 org-agenda-open-link ............................................123
org-agenda-archive................................................127 org-agenda-phases-de-la-lune ............................130
org-agenda-archive-default-with- org-agenda-ligne precedente..............................123
confirmation....................................................127 org-agenda-priorité .............................................127
org-agenda-archive-to-archive-sibling ........127 org-agenda-priority-down ....................................127
org-agenda-archives-mode ....................................125 org-agenda-priorité-up.........................................127
org-agenda-bulk-action .......................................129 org-agenda-quit ......................................................130
org-agenda-bulk-mark ............................................128 org-agenda-recenter .............................................123
org-agenda-bulk-mark-all.....................................128 org-agenda-redo ......................................................126
org-agenda-bulk-mark-regexp .............................129 org-agenda-refile..................................................127
org-agenda-bulk-toggle .......................................129 org-agenda-remove-restriction-lock........110, 126
org-agenda-bulk-toggle-all.................................129 org-agenda-reset-view ..........................................124
org-agenda-bulk-unmark .......................................128 org-agenda-schedule .............................................127
org-agenda-bulk-unmark-all.................................129 org-agenda-set-effort .........................................127
org-agenda-capture................................................128 org-agenda-set-restriction-lock ......................110
org-agenda-clock-cancel .....................................128 org-agenda-set-tags ..............................................127
org-agenda-clock-goto..................................124, 128 org-agenda-show-and-scroll-up...........................123
org-agenda-clock-in...............................................128 org-agenda-show-tags ............................................127
org-agenda-clock-out.............................................128 org-agenda-skip-entry-if.....................................272
org-agenda-clockreport-mode ..............................125 org-agenda-skip-subtree-if.................................272
org-agenda-columns .......................................126, 135 org-agenda-sunrise-sunset .................................130
org-agenda-convert-date ......................................130 org-agenda-switch-to.............................................123
org-agenda-date-prompt .......................................128 org-agenda-todo ......................................................126
org-agenda-day-view ..............................................124 org-agenda-todo-nextset .....................................126
org-agenda-deadline .............................................128 org-agenda-toggle-archive-tag...........................127
org-agenda-diary-entry ........................................130 org-agenda-toggle-diary .....................................125
org-agenda-do-date-earlier ...............................128 org-agenda-tree-to-indirect-buffer...............123
org-agenda-do-date-later ....................................128 org-agenda-undo ......................................................126
org-agenda-drag-line-backward.........................126 org-agenda-week-view ............................................124
org-agenda-drag-line-forward ...........................126 org-agenda-write ...................................................134
org-agenda-earlier................................................124 org-agenda-year-view ............................................124
org-agenda-entry-text-mode ................................125 org-anniversaire......................................................76
org-agenda-exit ......................................................130 org-archive-subtree................................................95
org-agenda-file-to-front ...................................109 org-archive-subtree-default ...............................95
org-agenda-filter..................................................121 org-archive-to-archive-sibling.........................96
org-agenda-filtre-par-categorie.....................120 org-ascii-convert-region-to-ascii.................202
org-agenda-filtre-par-effort ...........................121 org-ascii-convert-region-to-utf8....................202
org-agenda-filter-by-regexp .............................121 org-ascii-export-as-ascii ..................................156
org-agenda-filter-by-tag.....................................120 org-ascii-export-to-ascii ..................................155
org-agenda-filter-by-top-headline.................121 org-attach .......................................................104, 127
org-agenda-follow-mode ........................................123 org-attach-attach..................................................105
org-agenda-goto ......................................................123 org-attach-buffer..................................................105
org-agenda-goto-calendrier ...............................130 org-attach-dired-to-subtree.............................107
Chapitre 20 : Index des commandes et 489
des fonctions

org-attach-new . . . . . . . . . . . . . . . . . . . . . . . . 105 org-clock-report . . . . . . . . . . . . . . . . . . . . . . . . . . 86


. . . . . . . . . . . . . . . . . . . . . . . . . ................. . . . . . . . . . . . . . . . . . . .......................
...
org-attach-open . . . . . . . . . . . . . . . . . . . . . . . . 105 org-clock-timestamp-down . . . . . . . . . . . . . . . . . . 86
. . . . . . . . . . . . . . . . . . . . . . . . . .................. .....
.
org-attach-open-in-emacs . . . . . . . . . . . . . . . . 105 org-clock-timestamp-up . . . . . . . . . . . . . . . . . . . . 86
. . . . . . . . . . . . . . . . ...................... . . . . . . . . . . . . . . . . . .....................
org-attach-reveal . . . . . . . . . . . . . . . . . . . . . . 105 org-clock-timestamps-down . . . . . . . . . . . . . . . . . 85
. . . . . . . . . . . . . . . . . . . . ...................... . . . . . . . . . . . . . . . . ...................
org-attach-reveal-in-emacs . . . . . . . . . . . . . . 105 org-clock-timestamps-up . . . . . . . . . . . . . . . . . . . 85
..... . . . . . . . . . . . . . . . . . . ....................
org-attach-sync . . . . . . . . . . . . . . . . . . . . . . . . 105 org-clocktable-try-shift . . . . . . . . . . . . . . . . . . 87
..... . . . . . . . . . . . . . . ......................
org-babel-check-src-block . . . . . . . . . . . . . . . 245 org-clocktable-write-default . . . . . . . . . . . . . . 88
.... . . . . . . . . . . . .......................
org-babel-demarcate-block . . . . . . . . . . . . . . . 245 org-clone-sous-tree-avec-décalage-temporel 10
. . . . . . . . . . . . . . . . . . .................. ........
org-babel-describe-bindings . . . . . . . . . . . . . 245 org-columns-delete . . . . . . . . . . . . . . . . . . . . . . . 74
..... ...
org-babel-do-key-sequence-in-edit-buffer org-columns-edit-allowed . . . . . . . . . . . . . . . . . . 74
...
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 org-columns-edit-value . . . . . . . . . . . . . . . . . . . . 73
... ......
org-babel-execute-buffer . . . . . . . . . . . . . . . . 245 org-columns-insert-dblock . . . . . . . . . . . . . . . . . 75
.... ...
org-babel-execute-maybe . . . . . . . . . . . . . . . . . 245 org-columns-narrow . . . . . . . . . . . . . . . . . . . . . . . 74
..... ...........
org-babel-previous-src-block
org-babel-execute-src-block......................228, ...........................245
245 cycle-orange.....................................................6,
org-columns-new . . . . . . . . . . . . . . . . . . . . . . . .9,. 13 74
org-babel-sha1-hash ..............................................245 . . org-cycle-agenda-files
. . . . . . . . . . . . . . . . . . . . .........................................110
..................
org-babel-switch-to-session-with-code..........245 org-cyclique..............................................................76 ...
org-babel-execute-subtree
org-babel-tangle . . . . . . . . . . . . . . . 245
...........................................239, org-columns-next-allowed-value . . . . . . . . . . . . 73
org-date ......................................................................76
org-babel-tangle-file..................................239,
.... 245 org-date-from-calendar .........................................77 ..
org-babel-expand-src-block.......................244, 245
org-babel-tangle-jump-to-org.............................239 org-columns-previous-allowed-value
org-dblock-update.....................................75, . . . .86, 73
. . .271
org-babel-goto-named-result ...........................245
org-babel-view-src-block-info . . . . . . . . . . . . 245 org-columns-quit . . . . . . . . . . . . . . . . . . . . .
org-deadline..............................................................82. . . . . 73
.....
org-backward-heading-same-level.........................8 org-delete-property ...............................................69 ...
org-babel-goto-named-src-block . . . . . . . . . . 245 org-columns-redo . . . . . . . . . . . . . . . . . . . . . . . . . . 73
org-batch-agenda
.. ...................................................273 org-delete-property-globally.............................69 ..........
org-batch-agenda-csv.............................................274
org-babel-goto-src-block-head . . . . . . . . . . . 245 org-demote................................................................277
org-columns-show-value . . . . . . . . . . . . . . . . . . . . 74
org-bbdb-anniversaires
... .......................................113 org-demote-subtree..................................................10 .....
org-bbdb-anniversaries-future.........................113
org-babel-insert-header-arg . . . . . . . . . . . . . 245 org-do-demote..............................................................9
org-columns-toggle-or-columns-quit . . . . . . . . 74
org-beamer-export-as-latex
.. ...............................157 org-do-promouvoir......................................................9
org-babel-load-in-session ................................157
org-beamer-export-to-latex . . . . . . . . . . . . . . 245 org-columns-widen . . . . . . . . . . . . . . . . . . . . . . . . . 74
org-dynamic-block-insert-dblock.....................270
org-beamer-export-to-pdf.....................................157
..... org-edit-special...................................143, . . . . . . .153,
. . . .257
org-babel-lob-ingest...................................244, 245
org-beamer-select-environment.........................160 org-compute-property-at-point . . . . . . . . . . . . . 69
org-entities-help ..................................................138
bloc-orgue ..................................................................76 org-entry-add-to-multivalued-property ........275 ...
org-babel-next-src-block . . . . . . . . . . . . . . . . 245 org-copy-subtree . . . . . . . . . . . . . . . . . . . . . . . . . . 10
org-buffer-property-keys ....................................275 org-entry-delete ...................................................275
.... ..........
org-calendar-goto-agenda
org-babel-open-src-block-result ...................................130
. . . . . . . . . 245 org-entry-get ..........................................................275
org-copy-visible ...........................7
org-capture
.. ...........................................................3, 97 org-entry-get-multivalued-property
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...............275
........
org-capture-finalize
org-babel-pop-to-session .............................................97
. . . . . . . . . . . . . . . . 245 org-entry-member-in-multivalued-property
org-cut-subtree . . . . . . . . . . . . . . . . . . . . . . . . . 10
org-capture-kill
..... ......................................................97 . . . . . .. ..........................................................................276
. . . . . . . . . . . . . . . . . . . ...................
org-capture-refile..................................................97 org-entry-properties ...........................................275
org-check-after-date ..............................................82 org-entry-put...........................................................275
org-check-before-date ............................................82 org-entry-put-multivalued-property...............275
org-check-deadlines ...............................................82 org-entry-remove-from-multivalued-property (supprimer l'entrée
org-cite-insert .....................................................214 d'une propriété multivaluée)
org-clock-cancel......................................................86 . ..........................................................................276
org-clock-display....................................................86 org-evaluate-time-range..................................78, 85
org-clock-in...............................................................84 org-export-define-backend .................................267
org-clock-in-last ....................................................85 org-export-define-derived-backend.................267
org-clock-modify-effort-estimate ..............85, 91 org-export-dispatch .............................................147
org-clock-out.............................................................85 org-forward-heading-same-level...........................8
org-global-cycle........................................................7
Chapitre 20 : Index des commandes et 490
des fonctions

org-goto.........................................................................8 org-priority-down ....................................................57


org-goto-calendrier ...............................................77 org-priorité-up .........................................................57
org-html-convert-region-to-html......................202 org-promouvoir........................................................277
org-html-export-as-html ......................................161 org-promote-subtree................................................10
org-html-export-to-html ......................................161 org-property-action................................................68
org-icalendar-combine-agenda-files ..............198 org-protocol-create .............................................262
org-icalendar-export-agenda-files.................198 org-protocol-create-for-org...............................262
org-icalendar-export-to-ics...............................198 org-publish..............................................................213
mode d'indentation de l'org .............................249 org-publish-all ......................................................213
org-info-find-node ................................................255 org-publish-current-file ....................................213
org-insert-drawer .............................................15, 68 org-publish-current-project.............................213
org-insert-heading ...........................................14, 92 org-publish-find-date ..........................................210
org-insert-heading-respect-content...................9 org-publish-find-property .................................210
org-insert-link ........................................................43 org-publish-find-title ........................................210
org-insert-link-global .........................................45 org-refile ...........................................................10, 94
org-insert-property-drawer...............................275 org-refile-cache-clear ..........................................94
org-insert-structure-template.........................247 org-refile-copy ........................................................94
org-insert-todo-heading ............................9, 49, 59 org-refile-goto-last-stored...............................94
org-insert-todo-heading-respect-content ........9 org-refile-reverse .................................................95
org-latex-convert-region-to-latex.................202 org-remove-file ......................................................110
org-latex-export-as-latex ..................................169 org-reveal ....................................................................7
org-latex-export-to-latex~...............................168 org-save-all-org-buffers ...................................126
org-latex-export-to-pdf.......................................169 org-schedule..............................................................82
org-latex-preview .................................................140 org-search-view ......................................................117
org-link-escape........................................................38 org-set-effort..........................................................91
org-link-set-parameters .....................................266 org-set-property.......................................68, 69, 220
org-lint ....................................................................254 org-set-startup-visibility...............................7, 8
org-list-checkbox-radio-mode ..............................59 commande org-set-tags ...........................................61
org-lookup-all...........................................................30 org-show-all.................................................................7
org-lookup-first......................................................30 org-show-branches......................................................7
org-lookup-last ........................................................30 org-show-enfants........................................................7
org-map-entries .....................................................276 org-show-todo-tree ..................................................48
org-mark-ring-goto ..................................................44 org-sort ......................................................................11
org-mark-ring-push ..................................................44 org-sparse-tree ........................................................11
Sous-arbre de marque d'org .................................10 org-speed-command-help ........................................248
org-match-sparse-tree......................................65, 70 org-speedbar-set-agenda-restriction.............110
org-md-convert-region-to-md................................202 org-store-agenda-vues ..........................................134
org-md-export-as-markdown .................................178 org-store-link......................................................3, 42
org-md-export-to-markdown .................................178 org-submit-bug-report .............................................3
org-meta-return..........................................................9 org-switchb..............................................................110
org-mobile-pull ......................................................264 org-table-align .................................................18, 21
org-mobile-push ......................................................263 org-table-beginning-of-field.............................18
org-move-subtree-down ............................................10 org-table-blank-field ...........................................18
org-move-subtree-up.................................................10 org-table-copy-down ................................................20
org-narrow-to-block........................................11, 271 org-table-copy-region ...........................................19
org-narrow-to-subtree ...........................................11 org-table-create-or-convert-from-region
org-next-link ............................................................45 . ......................................................................17, 20
org-next-visible-heading .......................................8 org-table-create-with-table.el.......................257
org-occur....................................................................11 org-table-cut-region .............................................19
org-odt-convert .....................................................180 org-table-delete-column .......................................18
org-odt-export-to-odt...........................................179 org-table-edit-field ..............................................20
org-open-at-point..............................................44, 77 org-table-edit-formulas .......................................31
org-open-at-point-global .....................................45 org-table-end-of-field .........................................18
org-org-export-to-org...........................................190 org-table-eval-formula ............................29, 30, 31
org-paste-subtree ...................................................10 org-table-expand......................................................22
org-previous-link ....................................................45 org-table-export......................................................20
org-previous-visible-heading ...............................8 org-table-fedit-abort ...........................................31
org-priorité .....................................................57, 277 org-table-fedit-finish .........................................31
Chapitre 20 : Index des commandes et 491
des fonctions

org-table-fedit-line-down ....................................31 org-time-stamp-inactive .......................................77


org-table-fedit-line-up.........................................31 org-timer ....................................................................92
org-table-fedit-lisp-indent...............................31 org-timer-item ..........................................................92
org-table-fedit-ref-down ......................................31 org-timer-pause-or-continue ...............................92
org-table-fedit-ref-left ......................................31 org-timer-set-timer................................................92
org-table-fedit-ref-right ....................................31 org-timer-start........................................................92
org-table-fedit-ref-up...........................................31 org-timer-stop ..........................................................93
org-table-fedit-scroll-down ................................32 org-timestamp-down-day...........................................78
org-table-fedit-scroll-up.....................................32 org-timestamp-up-day...............................................78
org-table-fedit-toggle-ref-type ........................31 org-todo..............................................................86, 277
org-table-field-info ..............................................31 org-todo-list ..........................................................114
org-table-header-line-mode ..................................21 org-toggle-archive-tag...........................................96
org-table-hline-and-move ......................................19 org-toggle-checkbox................................................59
org-table-import......................................................20 org-toggle-commentaire .......................................155
org-table-insert-column .......................................18 org-toggle-heading..................................................11
org-table-insert-hline ..........................................19 org-toggle-inline-images ...................................144
org-table-insert-row...............................................19 org-toggle-ordered-property.........................52, 59
org-table-iterate ...................................................33 org-toggle-pretty-entities.......................138, 139
org-table-iterate-buffer-tables.......................33 org-toggle-radio-button .......................................59
org-table-kill-row...................................................18 org-toggle-sticky-agenda ...................................111
org-table-move-cell-down ......................................18 org-toggle-tag.........................................................277
org-table-move-cell-left ......................................18 org-toggle-tags-groups .........................................65
org-table-move-cell-right ....................................19 org-toggle-time-stamp-overlays.........................80
org-table-move-cell-up...........................................18 org-tree-to-indirect-buffer .................................7
org-table-move-column-left ..................................18 org-update-statistics-cookies ...........................60
org-table-move-column-right...............................18 org-version ..................................................................3
org-table-move-row-down ........................................18 org-yank ......................................................................10
org-table-move-row-up.............................................18 orgtbl-ascii-draw ....................................................36
org-table-next-field ..............................................18 orgtbl-mode ................................................................22
org-table-next-row...................................................18 orgtbl-to-csv...........................................................270
org-table-paste-rectangle ...................................19 orgtbl-to-generic..................................................270
org-table-previous-field .....................................18 orgtbl-to-html ........................................................270
org-table-recalculate ...........................................33 orgtbl-to-latex......................................................270
org-table-recalculate-buffer-tables ..............33 orgtbl-to-orgtbl....................................................270
org-table-rotate-recalc-marks...........................33 orgtbl-to-texinfo..................................................270
org-table-shrink......................................................21 orgtbl-to-tsv...........................................................270
org-table-sort-lines ..............................................19 orgtbl-to-unicode..................................................270
org-table-sum.............................................................20
outline-up-heading....................................................8
org-table-toggle-column-width ...........................21
org-table-toggle-coordinate-overlays ......31, 32
org-table-toggle-formula-debugger...................31 P
org-table-transpose-table-at-point.................21
org-table-wrap-region ...........................................19 pcomplete ....................................................................68
org-tags-view .............................................65, 70, 115 erreur précédente ...................................................12
org-texinfo-convert-region-to-texinfo ........202
org-texinfo-export-to-info ................................190
org-texinfo-export-to-texinfo.........................190 W
Horodatage de l'organisation .............................77 élargir ........................................................................11
Chapitre 21 : Index des 492
variables

21 Indice variable
Il ne s'agit pas d'un index complet des variables et des faces, mais seulement de celles
qui sont mentionnées dans le manuel. Pour obtenir une liste plus complète, utilisez M-x
org-customize et cliquez vous-même dans l'arbre.

C org-agenda-skip-scheduled-delay-if-deadline
cdlatex-simplifier-sous-super-scripts ........141 . .............................................................................81
org-agenda-skip-scheduled-if-deadline-is-
constantes-système d'unités ......................25, 253
shown ....................................................................84
org-agenda-skip-scheduled-if-done ....................81
org-agenda-sorting-strategy .............................120
L org-agenda-span..............................................112, 124
LaTeX-verbatim-environnements.........................268 org-agenda-début-jour...........................................112
org-agenda-début-de-semaine.............................112
org-agenda-start-with-clockreport-mode ........125
O org-agenda-start-with-entry-text-mode ..........125
org-adapt-indentation .........................................249 org-agenda-start-with-follow-mode ..................123
org-agenda-auto-exclude-function...................121 org-agenda-sticky..................................................111
org-agenda-bulk-custom-functions ..........128, 129 org-agenda-tag-filter-preset ...........................120
org-agenda-bulk-marques persistantes ...........129 org-agenda-tags-column .......................................118
org-agenda-category-filter-preset.................120 org-agenda-tags-todo-honor-ignore-options
org-agenda-category-icon-alist.......................118 . ..........................................................................115
org-agenda-clock-consistency-checks.............125 org-agenda-text-search-extra-files ......111, 117
org-agenda-columns-add-appointments-to- org-agenda-time-grid....................................119, 125
effort-sum...........................................................91 org-agenda-todo-ignore-deadlines...................114
org-agenda-confirm-kill ......................................126 org-agenda-todo-ignore-scheduled...................114
org-agenda-custom-commandes .....12, 131, 132, 273 org-agenda-todo-ignore-timestamp...................114
org-agenda-custom-commands-contexts.............133 org-agenda-todo-ignore-with-date ....................114
org-agenda-diary-file ..........................................130 org-agenda-todo-list-sublevels ................57, 114
org-agenda-dim-tâches bloquées ................53, 273 org-agenda-use-tag-inheritance ................61, 273
org-agenda-use-time-grid............................119, 125
org-agenda-effort-filtre-preset.....................120
org-agenda-window-setup .....................................109
org-agenda-entry-text-maxlines.......................125
org-alphabetical-lists .........................................12
org-agenda-exporter-settings ..................134, 135
org-archive-default-command.......................95, 127
org-agenda-files ...........................................109, 119
org-archive-location.....................................95, 251
org-agenda-ignore-properties ...........................273
org-archive-save-context-info ............................95
org-agenda-inhibit-startup ...............................273 org-archive-subtree-save-file-p ............................95
org-agenda-log-mode-items .................................125 org-ascii-links-to-notes ...................................155
org-agenda-loop-over-headlines-in-active- org-ascii-text-width ............................................155
region ................................................................250 org-attach-archive-delete .................................106
org-agenda-max-effort .........................................122 org-attach-auto-tag...............................................106
org-agenda-max-entries .......................................122 org-attach-commands .............................................107
org-agenda-max-tags ..............................................122 org-attach-dir-relative .....................................106
org-agenda-max-todos ...........................................122 org-attach-expert..................................................107
org-agenda-overriding-header ...........................272 org-attach-id-dir...................................................105
org-agenda-prefix-format ...................................118 org-attach-id-to-path-function-list ..............107
org-agenda-regexp-filtre-preset.....................120 méthode org-attach.......................................105, 106
org-agenda-restore-windows-after-quit ..........109 org-attach-preferred-new-method.....................106
org-agenda-search-headline-for-time ..............119 org-attach-store-link-p .........................................107
org-agenda-show-inherited-tags................127, 273 org-attach-use-inheritance ...............................106
org-agenda-skip-archived-trees ................96, 109 org-babel-default-header-args ..........................219
org-agenda-skip-comment-trees.........................109 org-babel-default-inline-header-args ............219
org-agenda-skip-deadline-prewarning- if org-babel-inline-result-wrap ............................228
scheduled ............................................................81 org-babel-load-languages ...................................239
org-agenda-skip-function ..................271, 272, 277 org-babel-post-tangle-hook ................................239
org-agenda-skip-function-global.....................271 org-babel-pre-tangle-hook ..................................239
Chapitre 21 : Index des 493
variables

org-babel-tangle-corps-crochet ........................239 org-export-creator-string .................................163


org-babel-tangle-finished-hook ........................239 org-export-date-timestamp-format...................149
org-beamer-environnements-default.................158 org-export-default-language ....................149, 171
org-beamer-environnements-extra......................158 org-export-dispatch-use-expert-ui...................147
org-beamer-frame-level ........................................158 org-export-exclude-tags ......................................149
org-beamer-theme ...................................................157 org-export-global-macros ...................................153
org-calc-default-modes ..........................................25 org-export-headline-levels ...............................150
org-capture-bookmark .............................................98 org-export-html-table-tag...................................164
org-capture-last-stored .......................................98 org-export-html-tag-class-prefix...................166
org-capture-templates ...........................................98 org-export-html-todo-kwd-class-prefix ........166
org-capture-templates-contexts.......................104 org-export-html-use-infojs ...............................168
org-capture-use-agenda-date ..............................128 org-export-in-background ...................................148
org-clock-auto-clockout-timer...........................91 org-export-initial-scope ...................................148
org-clock-continuously ............................84, 85, 91 org-export-odt-convert-capabilities.............185
org-clock-display-default-range.......................87 org-export-odt-convert-process.......................185
org-clock-idle-time ................................................90 org-export-odt-convert-processes...................185
org-clock-in-prepare-hook ....................................85 org-export-odt-preferred-output-format ......179
org-clock-into-drawer ...........................................84 org-export-odt-schema-dir...................................189
org-clock-mode-line-total ....................................85 org-export-preserve-breaks ...............................150
org-clock-persist ...................................................84 org-export-select-tags ........................................149
org-clock-report-include-clocking-task........125 org-export-fichier d'horodatage .............151, 163
org-clock-x11idle-program-name ..........................90 org-export-use-babel ...........................................237
org-clocktable-defaults .......................................87 org-export-avec-arbres-archivés ..............96, 150
org-closed-keep-when-no-todo ..............................53 org-export-avec-auteur .......................................150
org-coderef-label-format ...................................143 org-export-avec-liens-cassés...........................150
org-colonnes..............................................................73 org-export-avec-horloges ...................................150
org-columns-default-format .........73, 91, 126, 136 org-export-with-creator .....................................150
org-columns-default-format-for-agenda ........136 org-export-with-date ............................................150
org-columns-skip-archived-trees.......................96 org-exportation-avec-tiroirs ...........................150
org-columns-summary-types ...................................72 org-export-with-email .........................................150
org-complete-tags-always-offer-all-agenda- org-export-avec-emphase .....................................149
tags ......................................................................62 org-export-avec-entités .....................................150
org-confirm-babel-evaluate...............................255 org-export-with-fixed-width .............................149
org-create-file-search-functions.....................47 org-export-avec-notes .........................................150
org-crypt-tag-matcher .........................................262 org-export-avec-tâches-en-ligne.....................150
org-ctrl-k-protect-subtree ...................................6 org-export-avec-latex.................................140, 151
org-cycle-emulate-tab...............................................6 org-exportation-avec-planification...............150
org-cycle-global-at-bob...........................................7 org-export-with-priority ...................................150
org-cycle-include-plain-lists...........................13 org-export-with-properties ...............................150
org-cycle-inline-images-display.....................144 org-export-avec-numéros-de-section...............150
org-cycle-open-archived-trees...........................96 org-export-avec-des-citations-martines ......149
org-cycle-separator-lines .....................................6 org-export-avec-chaînes-spéciales..................149
org-deadline-warning-days..............................81, 82 org-export-with-statistics-cookies...............151
org-default-notes-file....................................97, 99 org-export-with-sub-superscripts...................150
org-directory............................................................99 org-export-with-tables .......................................151
org-display-custom-times ......................................80 org-export-with-tags ............................................151
org-disputed-keys ..................................................257 org-export-avec-tâches .......................................151
org-done, face..........................................................51 org-export-with-timestamps ...............................150
org-edit-src-auto-save-idle-delay.................240 org-export-with-title .........................................151
org-effort-propriété .............................................91 org-export-with-toc...............................................151
org-enforce-todo-dependencies ....................52, 53 org-export-avec-mots-clefs ...............................151
org-entities-user ..................................................138 org-expot-creator-string ...................................149
org-execute-file-search-functions...................47 org-faces-easy-properties ...................................52
org-export-allow-bind-keywords.......................151 org-fast-tag-selection-include-todo ................51
org-export-async-init-file ................................148 org-fast-tag-selection-single-key.....................63
org-export-backends .............................................147 org-file-apps....................................................44, 105
org-export-before-parsing-hook ........................199 org-fold-catch-invisible-edits ............................8
org-export-before-processing-hook..................199 org-fontify-emphasized-text ..............................137
Chapitre 21 : Index des 494
variables

org-footnote-auto-adjust...........................146, 253 org-icalendar-include-todo ................................198


org-footnote-auto-label..............................145, 253 org-icalendar-store-UID.......................................198
org-footnote-define-inline.......................145, 253 org-icalendar-use-deadline...............................198
org-footnote-section.......................................6, 145 org-icalendar-use-scheduled.............................198
org-format-latex-header.............................139, 140 org-id-link-to-org-use-id.....................................42
org-format-latex-options ...................................140 org-image-actual-width ........................................144
org-global-properties.....................................68, 91 org-imenu-depth .....................................................257
org-goto-auto-recherche .........................................8 org-indent-indentation-par-niveau.................249
org-goto-interface....................................................9 org-indent-mode-turns-off-org-adapt-
org-group-tags ..........................................................65 indentation......................................................249
org-habit-following-days ......................................56 org-indent-mode-turns-on-hiding-stars ........249
org-habit-graph-colonne .......................................56 org-infojs-options................................................168
org-habit-preceding-days ......................................56 org-insert-mode-line-dans-un-fichier-vide ......3
org-habit-show-habits-seulement-pour- org-irc-links-to-logs ............................................43
aujourd'hui ................................................................56 org-latex-bibtex-compiler .................................169
org-cacher, visage................................................249 org-latex-classes..................................................170
org-hide-block-startup.................................15, 254 org-latex-compiler .......................................169, 170
org-hide-drawer-startup .....................................254 org-latex-default-class .....................................170
org-hide-leading-stars................................249, 253 org-latex-default-packages-alist ..........169, 170
org-hide-macro-markers .......................................155 org-latex-default-table-environment.............172
org-hierarchical-checkbox-statistics.............58 org-latex-default-table-mode ............................172
org-hierarchique-todo-statistique...................57 org-latex-engraved-options ...............................175
org-html-container-element ...............................161 org-latex-hyperref-template ....................169, 170
org-html-doctype ...........................................161, 162 org-latex-images-centrées .................................175
org-html-doctype-alist ........................................162 org-latex-language-alist ...................................169
org-html-head .........................................161, 167, 202 org-latex-listings-options ...............................175
org-html-head-extra .............................161, 167, 202 org-latex-minted-options ...................................175
org-html-head-include-default-style ...........167, org-latex-packages-alist...........................169, 170
202 org-latex-src-block-backend .............................142
org-html-head-include-scripts.........................202 org-latex-subtitle-format .................................170
org-html-html5-elements .....................................163 org-latex-subtitle-separate .............................170
org-html-html5-fancy ...........................................162 org-latex-tables-booktabs .................................173
org-html-inline-images .......................................165 org-latex-tables-centered .................................173
org-html-link-home ................................................161 org-latex-title-command.............................169, 170
org-html-link-org-files-as-html ......................164 commande de conversion org-latex-mathml ....183
org-html-link-up.....................................................161 org-latex-to-mathml-jar-file ............................183
org-html-mathjax-options ...................................161 org-link-abbrev-alist...................................45, 251
org-html-mathjax-options~ .................................165 org-link-elisp-confirm-function.....................256
org-html-mathjax-template .................................165 org-link-email-description-format...................42
org-html-postamble .......................................163, 202 org-link-frame-setup .............................................44
org-html-postamble-format .................................163 org-link-from-user-regexp .................................103
org-html-preamble .........................................163, 202 org-link-keep-stored-after-insertion.............43
org-html-preamble-format ...................................163 org-link-parameters .............................................266
org-html-self-link-headlines ...........................163 org-link-search-must-match-exact-headline
org-html-style-default .......................................167 . .............................................................................39
org-html-table-align-individual-fields ......164 org-link-shell-confirm-function.....................256
org-html-table-caption-above ...........................164 org-link-use-indirect-buffer-for-internals
org-html-table-data-tags ....................................164 . .............................................................................44
org-html-table-default-attributes.................164 org-list-automatic-rules...............................13, 58
org-html-table-header-tags ................................164 org-list-demote-modify-bullet...........................13
org-html-table-row-tags ......................................164 org-list-indent-offset .........................................13
org-html-table-use-header-tags-for-first- org-list-use-circular-motion.............................14
column ................................................................164 org-log-done .............................................54, 125, 252
org-html-use-infojs .............................................202 org-log-into-drawer .......................................53, 127
org-html-validation-link ....................................163 org-log-note-clock-out ..................................85, 252
org-icalendar-alarm-time ....................................198 org-log-redeadline .................................................82
org-icalendar-categories ...................................198 org-log-refile..........................................................94
org-icalendar-combined-agenda-file ................198 org-log-repeat .................................................83, 252
org-icalendar-include-body ................................198
Chapitre 21 : Index des 495
variables

org-log-reschedule .................................................82 org-scheduled-delay-days ......................................81


org-log-states-order-reversed ...........................53 org-show-context-detail .......................................11
org-loop-over-headlines-in-active-region org-sort-agenda-noeffort-is-high ....................121
. ..........................................................................250 org-sparse-tree-open-archived-trees...............96
org-M-RET-may-split-line..................................9, 14 org-special-ctrl-a/e.................................................6
org-md-headline-style .........................................179 org-special-ctrl-k.......................................................6
org-mobile-directory ...........................................263 org-speed-commands................................................248
org-mobile-encryption .........................................263 org-src-ask-before-returning-to-edit-buffer
org-mobile-files ...................................................263 . ..........................................................................240
org-mobile-inbox-for-pull ..................................264 org-src-block-faces ..............................................240
org-num-face ............................................................250 org-src-fontify-natively ...................................240
org-num-format-function .....................................250 org-src-lang-modes ................................................240
org-num-max-level..................................................250 org-src-preserve-indentation ...........................240
org-num-skip-commented .......................................250 org-src-window-setup ...........................................240
org-num-skip-footnotes .......................................250 org-startup-align-all-tables ....................21, 252
org-num-skip-tags ..................................................250 org-startup-folded ..................................8, 252, 273
org-num-skip-unnumbered .....................................250 org-startup-indenté.....................................249, 252
org-odd-levels-only.....................115, 249, 253, 272 org-startup-numerated.................................250, 252
org-odt-category-map-alist ...............................184 org-startup-shrink-all-tables ..................22, 252
org-odt-convert-process .....................................180 org-startup-avec-images-en-ligne ..........144, 252
org-odt-create-custom-styles-for-srcblocks
org-startup-with-latex-preview.......................140
. ..........................................................................185 org-store-link-props ............................................103
org-odt-fontify-srcblocks .................................185 org-structure-template-alist ...........................247
org-odt-pixels-per-inch ......................................182
org-projets bloqués .............................................118
org-odt-preferred-output-format ............179, 180
org-support-shift-select ......................14, 15, 257
org-odt-styles-file......................................180, 181
org-table-automatic-realign ...............................21
org-odt-table-styles...................................187, 189
org-table-copy-increment .....................................20
org-outline-path-complete-in-steps.................94
org-table-current-column .....................................24
org-plain-list-ordered-item-terminator .......12,
org-table-current-dline .......................................24
14
org-table-duration-custom-format.....................28
org-popup-calendar-for-date-prompt.................79
org-table-export-default-format.......................20
org-pretty-entities.....................................138, 254
org-pretty-entities-include-sub- org-table-formula..................................................251
org-table-formula-constants..............25, 251, 256
superscripts....................................................138
org-preview-latex-default-process.................140 org-table-header-line-p ...........................................21
org-priority-default.....................................57, 251 org-table-use-standard-references...................30
org-priority-faces ..................................................56 org-tag-alist ...................................................62, 254
org-priority-highest.....................................57, 251 org-tag-faces............................................................61
org-priority-lowest .......................................57, 251 org-tag-persistent-alist .....................................62
org-priority-start-cycle-with-default...........57 org-tags-column........................................................61
org-property-allowed-value-functions ..........276 org-tags-exclude-from-inheritance...................61
org-protocol-default-template-key...................260 org-tags-match-list-sublevels .....61, 65, 70, 115
org-protocol-project-alist ...............................261 org-tempo-keywords-alist ...................................247
org-publish-project-alist.........................203, 205 org-texinfo-classes.....................................191, 192
org-publish-use-timestamps-flag ......................213 org-texinfo-coding-system .................................191
org-put-time-stamp-overlays .............................253 org-texinfo-default-class.........................190, 192
org-read-date-display-live ..................................80 org-texinfo-info-process ...................................190
org-read-date-force-compatible-dates.............79 org-texinfo-table-default-markup...................193
org-read-date-prefer-future ...............................78 org-time-stamp-custom-formats ...........................80
org-refile-allow-creating-parent-nodes ........94 org-time-stamp-overlay-formats.......................253
org-refile-keep ........................................................94 org-time-stamp-rounding-minutes.......................77
org-refile-targets .................................................94 org-timer-default-timer .......................................92
org-refile-use-cache .............................................94 org-todo, visage......................................................51
org-refile-use-outline-path ................................94 org-todo-keyword-faces ..........................................51
org-remove-highlights-with-change ............11, 86 org-todo-keywords ............................48, 49, 114, 254
org-replace-disputed-keys ..................................257 org-todo-repeat-to-state .....................................83
org-return-follows-link ........................................44 org-todo-state-tags-triggers .............................49
org-reverse-note-order ..........................................94 org-track-ordered-property-with-tag ..........52, 59
Chapitre 21 : Index des 496
variables

org-treat-insert-todo-heading-as-state- P
change ....................................................................9
org-treat-S-cursor-todo-selection-as-state- parse-temps-mois......................................................79
changer ................................................................48 parse-time-weekdays................................................79
org-use-property-inheritance............70, 220, 275
org-use-speed-commands .......................................248
org-use-sub-superscripts ...................................138 U
org-use-tag-inheritance .......................................61
org-yank-adjusted-subtrees .................................10 nom d'utilisateur ..................................................149
org-yank-sous-arbres-pliés .................................10 adresse électronique de l'utilisateur ........149

Vous aimerez peut-être aussi