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