GNU LilyPond – アプリケーション使用方法: 4.1.1 システムを設定する

### 4.1.1 システムを設定する

この機能がアクティブな場合、LilyPond は PDF ファイルや SVG ファイルにハイパーリンクを付け加えます。これらのハイパーリンクは ‘URI ヘルパー’や Web ブラウザに送られ、テキスト エディタを開きカーソルを適切な位置に置きます。

この一連の動作を有効にするには、PDF ビューアが LilyPond で提供される ‘`lilypond-invoke-editor`’ スクリプトを使ってハイパーリンクを追うように設定変更する必要があります。

プログラム ‘`lilypond-invoke-editor`’ は小さな支援プログラムです。これは特別な `textedit` URI に対してエディタを呼び出し、それ以外に対しては Web ブラウザを呼び出します。このプログラムは環境変数 `EDITOR` と `LYEDITOR` を調べて、ユーザの使用しているエディタを呼び出します。`LYEDITOR` は `EDITOR` よりも優先されるため、前者を使用することを推奨します。特に、ターミナル上で常用しているエディタとは別に、LilyPond のポイント アンド クリックのためのエディタを指定したい場合には、前者を使用してください。

エディタによって、行位置と列位置を指定してファイルを開くための引数の記法は異なります。ユーザの便宜のために、LilyPond にはいくつかのエディタに対するコマンドが予め登録されており、それは ‘`scm/editor.scm`’ にリストアップされています。そのため、単にエディタのバイナリ名を変数に登録すれば動作します。例えば:

>     export LYEDITOR=atom

は以下を呼び出します:

>     atom %(file)s:%(line)s:%(column)s

`%(file)s`, `%(line)s`, `%(column)s` はそれぞれファイル名、行、列で置き換えられます。

‘`scm/editor.scm`’ にリストアップされていないエディタを使用するには、`LYEDITOR` に特定の記法でコマンド全体を登録します。以下は Visual Studio Code を使用する場合の例です:

>     export LYEDITOR="code --goto %(file)s:%(line)s:%(column)s"

Note: Emacs を使用している場合、追加の設定が必要となります。‘`~/.emacs`’ ファイルに `(server-start)` という行を追加する必要があります。そうしなければ、PDF 内のオブジェクトをクリックする度に新しい Emacs ウィンドウが開いてしまいます。

#### Xpdf を使用する

UNIX で Xpdf を使用するには、‘`xpdfrc`’ に以下の記述が存在している必要があります。UNIX では、このファイルは ‘`/etc/xpdfrc`’ あるいは ‘`$HOME/.xpdfrc`’ として存在します。

>     urlCommand     "lilypond-invoke-editor %s"

Ubuntu を使用している場合、システムにインストールされている Xpdf は全ての PDF ファイルでクラッシュを引き起こすかもしれません: この状態は数年間続いており、ライブラリの不一致が原因です。代わりに、Debian から現在のバージョンの ‘`xpdf`’ と対応する ‘`libpoppler`’ パッケージをインストールすると良いでしょう。これで動作が確認できたら、Ubuntu がクラッシュするパッケージの‘アップデート’で上書きしないように、

>     sudo apt-mark hold xpdf

を実行すると良いかもしれません。

#### GNOME 2 を使用する

(PDF ビューアが統合されている) GNOME 2 を使用するには、‘`textedit:`’ URI をシステムに登録するために、以下のコマンドを実行します:

    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

そうしたら、

>     gnome-open textedit:///etc/issue:1:0:0

とすることで、ファイルを開くために ‘`lilypond-invoke-editor`’ が実行されるはずです。

#### GNOME 3 を使用する

GNOME 3 では、URI は ‘gconf’ ではなく ‘gvfs’ レイヤによって処理されます。 ‘`/tmp`’ などのローカル ディレクトリに、‘`lilypond-invoke-editor.desktop`’ という名前で、以下の内容を持つファイルを作成してください:

>     [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

そして以下のコマンドを実行してください:

>     xdg-desktop-menu install ./lilypond-invoke-editor.desktop
>     xdg-mime default lilypond-invoke-editor.desktop x-scheme-handler/textedit

そうしたら、

>     gnome-open textedit:///etc/issue:1:0:0

とすることで、ファイルを開くために ‘`lilypond-invoke-editor`’ が実行されるはずです。

#### Evince のための追加の設定

`gnome-open` は動作するが、Evince が権限が無いという理由でポイント＆クリックを拒否する場合、Evince が実行できるアクションを規定する Apparmor プロファイルを変更する必要があるかもしれません。

Ubuntu を使用している場合、‘`/etc/apparmor.d/local/usr.bin.evince`’ を編集し、以下の行を追加します:

>     # For Textedit links
>     /usr/local/bin/lilypond-invoke-editor Cx -> sanitized_helper,

これらを追加したら、

>     sudo apparmor_parser -r -T -W /etc/apparmor.d/usr.bin.evince

を実行することで、Evince がポイント＆クリックのリンクを開くことができるようになるはずです。他のビューアでも同じような設定が有効であるかもしれません。

### ポイント＆クリックを有効にする

ポイント＆クリックの機能は PDF あるいは SVG ファイルを生成する時にデフォルトで有効化されています。

ポイント＆クリックのリンクは出力ファイルを肥大化させます。これらのファイル (と PS ファイル) のサイズを小さくするには、‘`.ly`’ ファイルの中に以下を記述してポイント＆クリックを OFF にします:

>     \pointAndClickOff

以下を用いて、ポイント＆クリックを明示的に ON にすることができます:

>     \pointAndClickOn

‘`.ly`’ ファイルの中でポイント＆クリックを OFF にする代わりにコマンド ライン オプションで OFF にすることができます:

>     lilypond -dno-point-and-click file.ly

Note: 配布する LilyPond ファイルでは常にポイント＆クリックを OFF にして、PDF ファイルにあなたのコンピュータの Path 情報が含まれないようにすべきです。配布する .pdf ファイルに Path 情報が含まれているとセキュリティ リスクとなります。

### 選択的なポイント＆クリック

インタラクティブなアプリケーションでは、ある特定のポイント＆クリック要素だけを含むことが望ましい場合もあります。例えば、誰かがある特定の音符から演奏を開始できるアプリケーションを作りたいと思った場合、音符をクリックした場合にその音符の上にある臨時記号やスラーのポイント＆クリックが開いてしまったのでは不便です。

どのイベントをポイント＆クリックに含めるか指定することで、これを制御できます:

- ‘`.ly`’ ファイルにハード コードする:

  >     \pointAndClickTypes #'note-event
  >     \relative {
  >       c'2\f( f)
  >     }

  あるいは

  >     #(ly:set-option 'point-and-click 'note-event)
  >     \relative {
  >       c'2\f( f)
  >     }

- コマンド ラインで指定する:

  >     lilypond -dpoint-and-click=note-event   example.ly

複数のイベントを含めることができます:

- ‘`.ly`’ ファイルにハード コードする:

  >     \pointAndClickTypes #'(note-event dynamic-event)
  >     \relative {
  >       c'2\f( f)
  >     }

  あるいは

  >     #(ly:set-option 'point-and-click '(note-event dynamic-event))
  >     \relative {
  >       c'2\f( f)
  >     }

- コマンド ラインで指定する:

      lilypond \
        -e"(ly:set-option 'point-and-click '(note-event dynamic-event))" \
        example.ly

#### LilyPond — 使用方法 v2.24.4 (安定版).