Fin du premier jet programmation

This commit is contained in:
Bastien Dumont 2021-03-01 21:53:40 +01:00
parent 7ad0f066c6
commit d4b2e74fee

View File

@ -769,10 +769,24 @@ Dans les deux cas, il faudra au préalable importer la [bibliographie de test](<
### Le code CSL de *CSL/Clio*
Suivant un principe éprouvé et largement appliqué en programmation, [le code des feuilles de style est modulaire](#créer-un-ensemble-de-styles-cohérents-et-interopérables), ce qui lui permet d'être lisible et facilement transformable. Le plus simple est donc de copier un fichier existant et de le modifier en respectant les principes suivants (que l'on comprendra mieux en étudiant ledit fichier) :
* Contrairement à l'usage courant dans les fichiers CSL, l'ordre des macros va de la plus générale à la plus précise : ainsi, un coup d'œil sur le début du fichier (macros `citation` et `bibliography`) donne une indication sur la logique d'ensemble, puis la poursuite de la lecture permet d'acquérir une compréhension de plus en plus précise;
* Les choix conditionnels et les instructions de mise en forme doivent être reléguées dans les macros de plus bas niveau possible. Par exemple :
* On n'indiquera pas dans la macro `citation` que le titre d'un article doit être indiqué en caractères droits et celui d'un livre en italiques : la macro `citation` contiendra un appel à la macro `publicationTitle`, qui elle-même contiendra ces informations;
* Dans le fichier `REB.csl`, la macro `publicationReference` appelle `publicationTitle` sans considérer si l'on est dans le cas d'une source pour laquelle la variable `year-suffix` a été renseignée dans le champ _Extra_, indiquant que le titre de la publication est redondant et ne doit pas être affiché. Ce n'est que dans la macro `publicationTitle` qu'apparaît l'instruction selon laquelle il ne faut rien afficher si la variable `year-suffix` est renseignée. Cela permet à la macro `publicationReference` de donner uniquement les informations qu'elle doit donner : dans quel ordre sont affichés, le cas échéant, les différents composants de la citation, et par quels caractères ils sont séparés.
* Le nom d'une macro doit indiquer précisément ce qu'elle fait : `publicationTitle` s'occupe du titre principal d'une publication (et non d'une source), `titleInItalics` produit un titre en italiques;
* Par convention, les noms de macros doivent être en _camelCase_;
* Les macros doivent être courtes (entre 3 et 40 lignes). Dès que vous imbriquez des choix conditionnels ou que vous mêlez des informations sur des parties différentes de la citation (titre, auteur,...), demandez-vous si vous ne pourriez pas créer différentes macros pour gérer ces différents problèmes et les appeler dans votre macro principale. La logique d'ensemble n'en sera que plus claire;
* Reprenez le plus possible les titres de macros déjà existants, et donc la logique sous-jacentes. En particulier, essayez de conserver la division des citations en `sourceReference`/`publicationReference`/`digitalReference`, avec la subdivision de `sourceReference` en `sourceAuthor`/`sourceTitle`/`sourceIdentifier`, etc...
* Pour délimiter les différentes parties d'un bloc, enclosez-les dans des éléments `group` dotés d'un attribut `delimiter` plutôt que d'utiliser les attributs `prefix` et `suffix`.
### Les macros
Les macros _LibreOffice_ sont plus difficiles à programmer; d'autre part, comme la plus grande partie du code est commune à tous les styles, il devrait être moins nécessaire d'en créer de nouvelles. Le plus important est de bien indiquer dans un fichier à part les modifications qui restent à effectuer lorsque votre feuille de style a été appliquée : à partir de ces indications, il me sera facile de construire la macro correspondante.
En revanche, la création d'une version pour _Microsoft Word_ serait bienvenue.
# Annexes
## Liste des variables spécialisées