4.1.1 Configuration du système
Lorsque cette fonctionnalité est active, LilyPond ajoute des hyperliens au fichier PDF ou SVG. Ces liens sont transmis à un « URI helper » ou au navigateur internet, qui se charge d’ouvrir un éditeur de texte à l’endroit même où le curseur pointe.
Afin que cette chaîne de traitement soit pleinement opérationnelle, il faut configurer votre visionneur de PDF de façon à ce qu’il suive les liens grâce au script ‘lilypond-invoke-editor’ fourni avec LilyPond.
‘lilypond-invoke-editor’ est un petit programme assistant. Il
se charge d’appeler un éditeur pour les identifiants de ressource
(URI) de type textedit, et un navigateur pour les autres.
Il teste en outre les variables d’environnement EDITOR et
LYEDITOR pour trouver et lancer l’éditeur favori. Dans la mesure
où LYEDITOR aura préséance sur EDITOR, nous vous
conseillons de l’utiliser si vous désirez utiliser un éditeur pour le
terminal et un autre pour la fonctionnalité pointer-cliquer de LilyPond.
Les éditeurs peuvent recourir à des syntaxes différentes pour ouvrir un fichier à une ligne et une colonne spécifiques. LilyPond dispose déjà d’un certain nombre de commandes selon les éditeurs, définies dans le fichier ‘scm/editor.scm’. Il suffit donc de libeller, par exemple :
export LYEDITOR=atom
pour lancer la commande
atom %(file)s:%(line)s:%(column)s
où %(file)s, %(line)s et %(column)s seront
respectivement remplacés par le fichier, la ligne et la colonne
considérés.
L’utilisation d’un éditeur non répertorié dans le fichier
‘scm/editor.scm’ recquiert d’en connaître la syntaxe spécifique et
d’assigner la commande complète à la variable LYEDITOR. Voici par
exemple ce qui convient à l’éditeur Visual Studio Code :
export LYEDITOR="code --goto %(file)s:%(line)s:%(column)s"
Note : L’utilisation d’Emacs recquiert une configuration
supplémentaire. Il faudra ajouter la ligne (server-start) à votre
fichier ‘~/.emacs’ afin d’éviter qu’une instance supplémentaire
d’Emacs ne s’ouvre à chaque clic sur un objet du PDF.
| Utilisation avec Xpdf | ||
| Utilisation avec GNOME 2 | ||
| Utilisation avec GNOME 3 | ||
| Configuration spécifique à Evince |
Utilisation avec Xpdf
Pour Xpdf, sous UNIX, vous devrez insérer la ligne suivante dans le fichier ‘xpdfrc’ – soit ‘/etc/xpdfrc’, soit dans votre répertoire personnel ‘$HOME/.xpdfrc’.
urlCommand "lilypond-invoke-editor %s"
Dans un environnement Ubuntu, il est fort probable que la version de Xpdf installée avec le système plante à l’ouverture de tout fichier PDF – c’est un problème connu et persistant depuis plusieurs années et dû à des incohérences de bibliothèques. La solution consiste alors à installer une version à jour des paquetages ‘xpdf’ et ‘libpoppler’ directement à partir de Debian. Une fois assuré que tout fonctionne correctement, la commande
sudo apt-mark hold xpdf
permet d’empêcher Ubuntu de le remplacer par un paquetage défectueux à la prochaine « mise à jour ».
Utilisation avec GNOME 2
En ce qui concerne l’environnement GNOME 2 et les lecteur de PDF associés, la succession de commandes suivante permet de régler le système pour la gestion des URI par ‘textedit:’
gconftool-2 -t string -s /desktop/gnome/url-handlers/textedit/command "lilypond-invoke-editor %s" gconftool-2 -s /desktop/gnome/url-handlers/textedit/needs_terminal false -t bool gconftool-2 -t bool -s /desktop/gnome/url-handlers/textedit/enabled true |
Après ces invocations,
gnome-open textedit:///etc/issue:1:0:0
devrait appeler ‘lilypond-invoke-editor’ pour ouvrir les fichiers.
Utilisation avec GNOME 3
En ce qui concerne l’environnement GNOME 3, les URI sont gérés par la surcouche « gvfs » au lieu de « gconf ». Il faut donc créer un fichier dans un répertoire local tel que ‘/tmp’, que l’on appelera ‘lilypond-invoke-editor.desktop’. Il devra avoir le contenu suivant :
[Desktop Entry] Version=1.0 Name=lilypond-invoke-editor GenericName=Textedit URI handler Comment=URI handler for textedit: Exec=lilypond-invoke-editor %u Terminal=false Type=Application MimeType=x-scheme-handler/textedit; Categories=Editor NoDisplay=true
puis exécuter les commandes
xdg-desktop-menu install ./lilypond-invoke-editor.desktop xdg-mime default lilypond-invoke-editor.desktop x-scheme-handler/textedit
Après cette invocation,
gnome-open textedit:///etc/issue:1:0:0
devrait appeler ‘lilypond-invoke-editor’ pour ouvrir les fichiers.
Configuration spécifique à Evince
Il se peut que, bien que gnome-open soit fonctionnel, Evince
refuse d’ouvir les liens pointer-cliquer pour des raisons
d’autorisation. S’impose alors une modification du profil
Apparmor d’Evince ; c’est lui qui contrôle le type d’action
qu’Evince est autorisé à réaliser.
Sur une distribution Ubuntu, cela consiste à éditer le fichier ‘/etc/apparmor.d/local/usr.bin.evince’ et lui ajouter les lignes suivantes :
# Pour les liens Textedit /usr/local/bin/lilypond-invoke-editor Cx -> sanitized_helper,
puis lancer la commande
sudo apparmor_parser -r -T -W /etc/apparmor.d/usr.bin.evince
Evince devrait alors être en mesure d’ouvrir les liens pointer-cliquer. Une telle configuration devrait être fonctionnelle pour d’autres visionneurs.
Activation du pointer-cliquer
La fonctionnalité de « pointer-cliquer » est activée par défaut pour ce qui est des fichiers PDF et SVG.
L’option pointer-cliquer accroît la taille des fichiers de manière significative. Afin de réduire la taille de ces fichiers (ainsi que du PS), il est toujours possible de désactiver le pointer-cliquer en ajoutant
\pointAndClickOff
dans le fichier ‘.ly’. Il peut alors être activé de manière explicite grâce à
\pointAndClickOn
Le pointer-cliquer peut aussi être désactivé au moment de la compilation en ligne de commande :
lilypond -dno-point-and-click file.ly
Note : Lorsqu’un fichier LilyPond est destiné à être redistribué, pensez à désactiver le pointer-cliquer, de telle sorte que les chemins d’accès et autres informations propres à votre système ne se retrouvent pas inclus dans le fichier PDF.
Pointer-cliquer sélectif
Pour certaines applications interactives, il est parfois préférable de limiter la fonctionnalité du pointer-cliquer à quelques éléments seulement. Par exemple, si vous avez l’intention de créer une application lançant l’audio et la vidéo à partir d’une note en particulier, il serait mal venu qu’un clic sur la note vous amène à l’altération ou une liaison qui l’affecterait.
Les événements générateurs de lien peuvent se gérer :
-
En dur dans votre fichier ‘.ly’ :
\pointAndClickTypes #'note-event \relative { c'2\f( f) }ou
#(ly:set-option 'point-and-click 'note-event) \relative { c'2\f( f) } -
En ligne de commande :
lilypond -dpoint-and-click=note-event exemple.ly
Plusieurs types d’événement peuvent être mentionnés :
-
En dur dans votre fichier ‘.ly’ :
\pointAndClickTypes #'(note-event dynamic-event) \relative { c'2\f( f) }ou
#(ly:set-option 'point-and-click '(note-event dynamic-event)) \relative { c'2\f( f) } -
En ligne de commande :
lilypond \ -e"(ly:set-option 'point-and-click '(note-event dynamic-event))" \ exemple.ly