Dernière mise-à-jour:

Écrire un Scénario en Fountain : Utiliser et Personnaliser Atom

Cette publication est la partie 2 de 3 dans la série Écrire un Scénario au Format Foutain
  1. Écrire un Scénario en Fountain : Concept et Usage Basique
  2. Écrire un Scénario en Fountain : Utiliser et Personnaliser Atom
  3. Écrire un Scénario en Fountain : Interopérabilité, Rendu et Analyse

Types d’Éditeurs

Nous pouvons écrire avec la syntaxe Fountain dans des logiciels d’édition de texte minimalistes, comme le Bloc Notes, un Mémo, ou le corps d’un mail, ce qui est bien pratique, Il est aussi possible d’utiliser certains logiciels de traitement de texte (Open Office, Google Doc), dans la mesure où vous exporter le texte brut sans formatage. Cependant, l’édition y est trop basique (elle n’est pas dédiée à celle d’un scénario) et la personnalisation de l’interface est souvent trop limité pour songer y consacrer l’écriture d’un scénario entier. Il nous faut un éditeur plus avancé et personnalisable au niveau de l’interface, qui comprenne que nous écrivons des scénarios et pas n’importe quel type de texte, afin de nous proposer des fonctions intelligentes comme une tables des matières pour faciliter la navigation entre les séquences, une auto complétion du nom de personnage pour gagner du temps etc..

Le Bloc Notes de Windows est un petit peu trop basique pour écrire du Fountain confortablement.

Comme je le mentionnais dans l’article précédant, si la plupart des éditeurs de scénarios sont capable d’importer / exporter du Fountain, ils doivent d’abord le convertir dans leur propre format d’enregistrement pour pouvoir le traiter. Cela signifie qu’ils ne sont pas capables d’altérer ces fichiers directement, ce qui est une perte d’un point de vue de l’interopérabilité.

Il existe des logiciels de scénarios capables d’éditer des Fountain nativement sans conversion (un mode de fonctionnement que nous allons privilégier, pour des questions d’interopérabilité, comme nous le verrons dans le prochain article), tout en étant ergonomique et riches en fonctionnalités. Cependant la plus part sont payants et exclusifs MacOS ou iOS. Si cela ne pose pas de problèmes pour vous, alors n’hésitez pas et jetez un coup d’oeil Slugline ou LogLine, ils auront de quoi vous séduire !

Pour ma part, afin de ne pas me sentir limité, je privilégie toujours les solutions gratuites, open sources, cross-platforms et modulaires.

C’est pourquoi, nous allons nous pencher vers un éditeur de code. Pensés par des développeurs pour des développeurs, ce type d’éditeur est particulièrement modulaire et des milliers de plugins de toutes sortes sont développés gratuitement par leur communauté pour répondre à des besoins très variés, que ce soit pour faire de la programmation bien-sûr, mais aussi pour faire l’écriture de texte avancée.

Et dans le monde des éditeurs de code open source gratuits et cross-platforms, il y en a un qui brille par sa facilité de personnalisation (sa modularité) : Atom.

Atom a été pensé comme « A hackable text editor for the 21st Century ». Ce n’est pas le plus performant, notamment en rapidité d’ouverture ou en traitement de très long fichier, mais c’est de loin celui qui est le plus facile à personnaliser, tout en permettant d’aller très en profondeur. C’est pourquoi c’est mon éditeur de prédilection, que ce soit pour le code, mais aussi pour l’écriture de scénario !

Ensemble, nous allons transformer Atom en un éditeur de scénario complet, comme sur la capture d’écran au début de l’article. Ne vous laissez pas impressionner : j’ai mis ici tous ce que j’ai trouvé pour répondre à mes besoins et exigences personnelles. Vous pouvez vous contenter de la première étape, cela ne vous prendra pas plus de 5 minutes à mettre en place !

Optionnellement, après avoir installé Atom, vous pouvez mettre les menus d’Atom en Français avec le package French Menu. Le guide d’installation est en Français.

Configuration

Gestion du Fountain

Après avoir installé Atom, il va falloir lui installer des modules pour qu’il puisse répondre à nos besoins d’écritures en Fountain.

Par défaut, Atom traite le Fountain comme du texte simple.

Et cela tombe bien, parce que d’autres gens y ont déjà pensé !

La première étape, c’est donc tout simplement d’installer le package Fountain de Superlou

Pour se faire, File → Settings → Install, et tappez juste Fountain puis Install. Voilà, votre Atom gère le Fountain !

La colorisation syntaxique nous montre qu’Atom sait maintenant reconnaître un dialogue, d’une description etc, ce qui facilitera grandement le confort d’écriture.

Ce package est très intéressant car il permet :

  • D’avoir des couleurs différentes en fonction des différents éléments syntaxiques (nom de personnage, dialogues, description etc…)
  • De générer un PDF avec une mise en forme standard à partir de vos fichiers Fountain
  • D’avoir une table des matières de votre scénario (un peu basique pour l’instant, mais les développeurs sont en train de préparer une nouvelle version, suite à une de mes feature requests)
Screenshot par superlou, montrant la table des matières en action.

Thèmes et Couleurs

Une autre grande force d’Atom est sa facilité de personnalisation de l’interface.

Il y a déjà plusieurs thèmes installés (clair, sombre, bleu sombre), mais vous pouvez aussi en installer d’autres si vous le désirez. Ils sont disponibles dans File → Settings → Thèmes.

Atom et Fountain avec un thème blanc.

Pour aller plus loin, vous pouvez même ajouter vos propres règles de style ! Un simple petit bout de code CSS dans File → Stylesheet et hop, l’affichage de mes lignes Fountain sont transformées pour correspondre à mes besoins !

/* Couleur des noms de personnages */
.syntax--name.syntax--fountain {
  color: Silver;
}

/* Couleur des dialogues */
.syntax--dialogue.syntax--fountain {
  color: DarkGrey;
}

/* Couleur des description */
.syntax--fountain .syntax--text {
  color: SkyBlue;
}

/* Style des scène */
.syntax--fountain .syntax--scene {
  font-weight: bold; /* Mettre en Gras */
  color: LimeGreen!important; /* Changer la couleur */
  text-decoration: underline; /* Texte soulignée */
}
Avec un style personnalisé.

Vous pouvez ainsi personnaliser l’aspect de tous les éléments : mettre les couleur que vous voulez, mettre en gras, en italique… Ces changements ne sont visible que pour l’éditeur, et n’influenceront pas le rendu en PDF.

Retour à la Ligne Automatique

Afin de ne pas avoir de lignes de texte trop longues, je vous conseille d’activer la fonction View → Toggle Soft Wrap si ce n’est pas déjà fait.

Dictionnaires

Quand on écrit beaucoup de texte, avoir un dictionnaire intégré s’avère très utile. Il existe un module pour intégré cela : Spell-Check. Vous n’aurez plus qu’à définir la langue sur fr-FR dans les options.

L’auto-complétion, la faculté de prédire la fin d’un mot que vous êtes en train d’écrire, est elle aussi disponible nativement dans Atom. Vous pouvez l’ajuster selon vos besoin. Je l’ai personnellement réglé à 3 caractères, ce qui permet d’avoir les suggestions de noms de personnage lors de l’écriture de dialogues.

Compteur de Mots

Un compteur de mots, c’est très pratique pour évaluer la durée d’un scénario. Il existe un petit module très sympathique qui s’appelle word-count.

Je l’ai modifié pour en rajouter une évaluation temporelle de la durée du scénario (ou du texte sélectionné) en fonction du nombre de caractère (un indice plus pertinent que le nombre de mots ou de caractères). Je proposerai surement ces changements officiellement à un moment donné, ou créerai mon propre package officiel pour faciliter l’installation pour les autres utilisateurs. EDIT 2018-06-04: Mes changements ont été acceptés dans la version officielle du plugin !

Mon mod de word-count, avec son évaluation de la durée de l’épisode. La barre de progression indique si le scénario est trop court par rapport à l’objectif fixé.

Autres Personnalisations

Vous pouvez aussi changer le comportement de certains paramètres d’édition via File → Settings → Editor, comme la taille des caractères, ou autoriser le défilement du document après la fin (une fonctionnalité que j’apprécie tout particulièrement, afin de pouvoir placer le texte au milieu de l’écran lorsque que j’écris en bout de scénario).

Fonctions Avancées

Les fonctions ci-dessus vous permettent d’avoir les fonctionnalités généralement offertes par un éditeur de scénario basique. Explorons plus loin pour découvrir ce que nous pouvons faire de plus ! Ces fonctions, plus avancées, ne concerneront pas tout le monde, mais pourront vous donner des idées.

Couleur pour les Noms de Persos

Voilà la fonction qui me manquait sous les autres éditeurs : avoir des couleurs pour mes persos, afin de faciliter l’écriture des scènes de dialogues.

J’ai exploré pendant longtemps avant de trouver une astuce fonctionnelle. La mise en place n’est pas très évidente, mais une fois que c’est en place, ça tourne sans problème. Peut-être un jour quelqu’un fera un package plus simple à configurer ; la beauté de l’open source, c’est aussi cette invitation permanente à développer ses propres outils !

Pour résoudre ce problème, installons Pigments, un package qui a pour rôle de repérer des mots ou des codes couleurs dans du code, et de la visualiser à l’aide d’une pastille, d’un soulignage, ou d’un surlignage. L’astuce consiste juste à créer des nouvelles couleurs qui porteront le nom de personnages. Tout simplement !

Après l’installation, allez dans les paramètres de Pigments, et rajoutez fountain à la liste des types de fichiers analysés par le module.

Le code pour rajouter des couleurs personnalisées n’est pas des plus simples pour un novice, mais n’ayez crainte, il suffit juste de le modifier soigneusement. Placer le dans votre File → Init Script..., un fichier qui lance des scripts défini par l’utilisateur au démarrage du logiciel. Un changement dans ce fichier nécessite donc de redémarrer Atom.

Voici le code en question, qui colorise le nom des persos principaux de ma saga Alien 2347 :

# Add Alien 2347 Character Names Color
atom.packages.serviceHub.consume 'pigments.api', '1.0.0', (pigmentsAPI) ->
  colorRegexp = "\\b(ZAWN|EURG|KRILG|FRUDE|PLAUDE|BERDE)\\b(?![-\\.:=\\(])"
  registry = pigmentsAPI.getProject().getColorExpressionsRegistry()

  registry.createExpression 'my-custom-colors', colorRegexp, ['*'], (match, expression, context) ->
    colors =
      ZAWN: "#0000FF"
      EURG: "#9966CC"
      KRILG: "#FF0000"
      FRUDE: "#800000"
      PLAUDE: "#FF8080"
      BERDE: "#23B8DC"

    [_,name] = match


    scopes: ['fountain']

    @colorExpression = @name = name
    @hex = colors[name].replace('#','')

Noter que les noms sont écrits en majuscule. Cela permet de ne coloriser que le nom de la réplique, et nom pas les occurrences du nom présentes en plein milieu d’une ligne de dialogue.

Pour rajouter un nom et une couleur, il suffit de rajouter le nom à la ligne 2 avant la première fermeture de parenthèse, préfixé du sépérateur |, par exemple |X-RAYM, et de rajouter ce nom suivi d’une couleur en dessous de votre liste, de la manière suivante: X-RAYM: "#FFF000". Vous voyez, ce n’était pas aussi compliqué que cela en avait l’air !

Pour ma part, j’ai choisi l’affichage de type gouttière, que j’ai personnalisé avec le style suivant :

/* Pigments */

// Pigments line 48 fixed
.pigments-gutter-marker span, .pigments-gutter-marker-in-selection span {
    background-attachment: scroll !important;
}

atom-text-editor[data-grammar='source fountain'] .gutter .pigments-gutter-marker div span, atom-text-editor .gutter .pigments-gutter-marker-in-selection div span {
    height: 44px;
    top: 11px;
}

Et voici le résultat :

Les couleurs favorisent grandement l’écriture des dialogues.

Tables des Matières

La table des matières par séquence actuellement proposées par le module Fountain de superlou repose une sur architecture un peu dépassée, qui ne permet pas son redimensionnement. Des mises à jour sont envisagées (et concrétisées d’ici peu, si tout ce passe bien). En attendant, j’ai exploré un peu et j’ai trouvé un moyen plutôt sympathique d’avoir une fonctionnalité similaire, en installant un autre module : todo-show.

Le but premier de todo-show est de repérer tous les endroits dans le code (fichier actif, les fichiers ouverts, ou sur l’ensemble des fichiers d’un répertoire) préfixés par certains mots clés comme TODO ou NOTE, et de les lister dans un tableau filtrable.

Le module nous permet de rajouter nos propres règles. Dans la mesure où je préfixe mes séquences par un ., il suffit, après l’avoir installé, de définir une règle pour lister les lignes qui commencent par un point. Pour ce faire, rajouter simplement \. à la liste des mots surveillés.

Puis, remplacez l’expression de captures par /(${TODOS})(.+#)/g. Et c’est tout !

Versionnage

Un système de versionnage vous permet de contrôler les modifications apportées à un ensemble de documents.

Parce que vous travaillez sur de simples fichiers texte, vous pouvez utiliser Git, un des système de versionnage le plus avancé qui soit. Nul besoin de comprendre comment cela fonctionne, ni de connaître l’ensemble des fonctionnalités disponibles, la plupart étant liée à des problématiques de développeurs travaillant en équipes.

Cependant, certaines fonctionnalités de Git sont intéressantes en écriture de scénario :

  • sauvegarde des modifications des scénarios (on appelle ces sauvegardes des « commits »)
  • retour en arrière possible (si vous n’êtes pas content d’une modification)
  • outils de visualisation de différence entre commits pour voir ce qui a changé
  • travail collaboratif facilité (on voit qui a soumis quel changement et quand)
  • synchronisation en ligne pour pouvoir travailler de n’importe où

Et la bonne chose nouvelle, c’est qu’un module pour gérer Git est directement intégré dans Atom, puisqu’il a été développé par GitHub, l’entreprise leader du portage du système Git en ligne, utilisé par des millions de développeurs à travers le monde.

Le module de visualisation de différence Git nous permet de voir les fichiers modifiés, les lignes ajoutées, supprimées, ou modifiée, ainsi que l’historique des modification du document.

Je vous conseille cependant d’utiliser la plateforme GitLab si vous vous voulez sauvegarder vos scénarios en ligne. C’est gratuit, open source, et vous pouvez avoir des dépôts privés pour sauvegarder vos fichiers à l’abri des regards indiscrets.

Édition Collaborative en Temps Réel

Via le module Teleype, Atom permet l’édition collaborative en temps réel entre plusieurs utilisateurs directement sur les fichiers locaux. Ce type de collaboration est peu habituel en scénario, la rédaction étant un processus relativement solitaire. Cependant, pendant la phase de relecture pour corriger les fautes d’orthographes, cela devient très intéressant et permet de gagner beaucoup de temps !

Synchronisation des Paramètres

Vous avez pleinement configuré Atom pour qu’il réponde à vos besoins. Cool !

Cependant, vous voulez transférer votre config sur un autre ordinateur, et vous n’avez pas envie de tout refaire. Pas de panique !

Il existe un module tout simple pour synchroniser les paramètres d’Atom entre plusieurs PC : sync-settings.

Voilà, vos paramètres sont accessibles de n’importe où. Portabilité de vos données Fountain et de votre éditeur… À vous la liberté !

Note : il existe aussi une version portable d’Atom que vous pouvez transporter sur une clé USB sans avoir à l’installer sur le PC.

Ajustements

Voici une liste de petites modifications ajoutées à Atom pour parfaire l’expérience d’écriture.

Filtrer la Liste des Fichiers

Mon répertoire de scénarios est rempli de fichiers .fountain juxtaposés avec des fichiers .html du même nom. Afin de ne pas gêner la lisibilité, j’utilise un module qui permet de filtrer la liste des fichiers : tree-view-filter. J’ai juste à taper fountain dans le filtre, et seuls ces fichiers apparaîtrons. Pratique !

Ordre des Onglets

Atom permet d’édition de plusieurs fichiers simultanément grâce à un système d’onglet. Par défaut, les onglets sont dans l’ordre de l’ouverture des fichiers. Préférant que les onglets soit ordonnés en fonction de leur noms (ce qui est plus logique, pour l’écriture d’une série), j’utilise simplement le module tab-smart-sort.

Macros Personnalisées

Le scénario est pour moi un document de travail. Lorsque j’enregistre les acteurs pour une fiction sonore, j’aime marquer les répliques qui ont été enregistrées.

Le Fountain offre une syntaxe pour marquer une ligne ou un ensemble de caractères en gras, ou en italique.

Pour mettre un groupe de mots en italique, il suffit de rajouter * avant et après.

Le truc c’est que quand on a des centaines de lignes de dialogues à marquer, c’est long, cela perturbe la concentration pendant la session d’enregistrement… Vous l’avez compris, je voulais le faire en une simple touche, pour ne plus y penser. Tout gain de temps est précieux !

Bref, je me suis fait une petite macro, qui se met dans le fichier File → Init Script... :

atom.commands.add 'atom-text-editor', 'custom:x-raym add * line', ->
  editor = atom.workspace.getActiveTextEditor()
  editor.selectLinesContainingCursors()
  selection = editor.getLastSelection()
  text = selection.getText().slice(0, -2)
  selection.insertText("*" + text + "*\n")

Il suffit ensuite d’ajouter le raccourci clavier dans File → Keymap... :

'atom-text-editor':
	'ctrl-*' : 'custom:x-raym add * line'

Et voilà le résultat ! Efficace !

Pas de distraction, il ne suffit que d’une seule touche pour marquer un texte comme venant d’être enregistré.

Tronquer le Nom des Fichiers dans les Onglets

Les fichiers des épisodes de ma saga portent tous en préfixe le nom de la saga suivi de - Épisode puis le numéro, et en suffixe le nom de l’extension .fountain. Par défaut, Atom affiche nom de fichier complet et extension dans les onglets. Cela prend beaucoup de place pour une information redondante. Un simple petit script dans init.coffee pour prendre la dernière chaîne de nombre avant les fichiers dont le nom est suivi par .fountain, et le titre de l’onglet n’affichera plus que le numéro de l’épisode.

# Add folder and filename to tab title
atom.workspace.observeTextEditors (editor) ->
  if editor.getTitle() isnt "untitled"
    title = editor.getTitle().match(/(\d+)\.fountain/)
    if title?
      editor.getTitle = -> title[1]
      editor.getLongTitle = -> title[1]
      editor.emitter.emit "did-change-title", editor.getTitle()

Conclusion

Après une petite phase de configuration du logiciel, vous avez maintenant accès à un puissant éditeur de Fountain totalement paramétrable, qui pourra répondre à vos exigences d’ergonomie et de fonctionnalités. L’installation d’un module existant, la personnalisation de celui-ci, ou le développement d’une fonction personnalisée devrait être en mesure de combler le moindre de vos besoins !

Voici une récapitulation détaillée des petits modules que j’ai pu rajouter pour l’écriture de scénario sous Atom.

Dans le prochain article, nous verrons comment travailler en Fountain nativement peut permettre d’utiliser ou de développer des outils d’analyses de scénarios, indépendants du logiciel d’édition que vous utilisez.

A bientôt, et merci pour votre lecture !

Au delà du temps de recherche et d’élaboration des solutions proposées, cet article a pris plus de 8h de rédaction, correction et de traduction. Je vous invite à faire une donation si celui-ci vous a plu !


Merci à Marie pour les corrections !

Cette publication est la partie 2 de 3 dans la série Écrire un Scénario au Format Foutain
  1. Écrire un Scénario en Fountain : Concept et Usage Basique
  2. Écrire un Scénario en Fountain : Utiliser et Personnaliser Atom
  3. Écrire un Scénario en Fountain : Interopérabilité, Rendu et Analyse