このページでは、Inkscapeのオブジェクトのストロークの両端や途中に小さな図形(マーク)を表示する「マーカー」機能について紹介します。

- Contents
- はじめに
- マーカーの詳細
- マーカーを設定する
- 設定済みのマーカーを再度設定する
- オリジナルのマーカーを設定する
- オリジナルのマーカーをダイアログから消す
- マーカーごとオブジェクトをコピー
- オリジナルのマーカーを保存するには?
- 組み込みマーカーを編集して再利用
- マーカーの色をストロークに合わせる
(参考:オリジナルのマーカーを作ってみた)
(参考:矢印の色を変える)
(参考:シンボル(図形部品)を描く)
(2023.04.03更新)
はじめに
線の両端に矢印などの小さな絵をくっつける機能はInkscape独自機能というわけではなく、SVG形式の仕様の中で「マーカー」としてサポートされています。Inkscapeでもいろんな矢印や矢印以外の絵が組み込みのマーカーとして提供されているので、ダイアログ上で好きなものを選んで設定することができます。(具体的な設定手順は後述します。)

Illustratorでは同様の機能を単に「矢印」と呼ぶようですね。
マーカーは、シェイプオブジェクトやパスオブジェクトに対して設定すると、そのオブジェクトのストローク上のところどころ(両端と途中)に表示されます。
始点と終点と途中の3種類の場所ごとに別々のマーカーを設定して表示させることもできます。
自分で描いたオブジェクトをマーカーとして登録することもできます。
例によって(笑)マーカーについての解説コンテンツも十分な状況ではないので、ネット上で広い集めた情報に自分で試してみてわかったことを加えてメモするつもりで書いていきます。
マーカーの詳細
マーカーとは何かを厳密に定義するとどうなるのかよく分かりませんが、自分なりに書いてみると、
「パスやシェイプのアウトライン上のノードにあたる位置に表示される、シンボル状のオブジェクト」
ということになると思います。
Inkscapeには「シンボル(図形部品)を描く」で紹介しているようにシンボルと呼ばれる部品オブジェクトをドキュメント内で繰り返し利用する機能がありますが、これとよく似た仕組みで、部品として登録されている「マーカー」をパスやシェイプの属性として設定します。
例えば次のようなパスの場合、セグメントの端にノードがあるので、その位置にマーカーが表示されます。

あるいは次のようにストロークのスタイルが飛び飛びの点線で、ノードの位置に何も描画されていない場合であっても、そこがノードにあたる位置であればマーカーは表示されます。

また、オブジェクトであればマーカーとして表示可能なようで、ビットマップオブジェクトもマーカーとして表示可能です。(これがSVGの規格として正しい動作なのかどうかは未確認)
マーカーの設定対象がシェイプの場合は、パスを設定対象とする場合と違ってストローク上のどの点をノードとしてマーカー表示位置とするのか分かりにくいですが、ノードツールでシェイプを選択したときにハンドルが表示される点をマーカー表示位置としているわけではなく、仮にそのシェイプを(オブジェクトをパスへメニューで)パスに変換したとしたらノードが現れるであろう位置にマーカーが表示されるようです。
例えば星形ツールで多角形を描いて、ノードツールで選択すると、次の例の左のように1つの頂点だけにハンドルが表示されますが、この多角形シェイプにマーカーを設定すると、右の例のように各頂点にマーカーが設定されます。

マーカーを設定する
マーカーはストロークの幅(太さ)や線種(点線など)と同じようにフィル/ストロークダイアログ上で設定します。

マーカーは、始点ノード、終点ノード、それ以外の途中のノードの3種類のそれぞれで設定します。
具体的には3種類のノードそれぞれに今現在設定されているマーカーが描かれている3つのボタンが並んでいて、それをクリックすると、設定するマーカーの候補の表示と、マーカーの大きさなどの変更を行うためのダイアログが表示されます。

一番上の行には、今現在キャンバス上のいずれかのオブジェクトに設定されているマーカーが一覧されています。
それ以外の行には、Inkscapeにあらかじめ組み込まれているマーカー(Stock marker)が一覧されています。
どちらからでも1つ選択して設定したり変更したりすることができます。
サイズを変更することもできます。
ストロークに合わせて拡大/縮小にチェックを入れると、ストロークの幅と同期して拡縮されるマーカーになります。

方向というところに4つのボタンがあり、これを押すとマーカーの向きや角度を直接変更することができます。固定角度も指定できます。なお、4つのボタンのうち左の2つは、始点に設定するマーカーだけを対象に、その方向を他のマーカーと逆向きにするか同じ向きにするかを指定するものです。矢印の場合はたいてい逆向きを指定して、矢印の先が外側を向くようにします。
オフセットを指定すると、マーカーをストロークからどのぐらい離れたところに描くかを変更することができます。

キャンバス上で編集ボタンを押すと、マーカーの上にハンドルが現れて、それをドラッグすることでマーカーの大きさ、角度、オフセットをキャンバス上で変更することもできるようになります。
設定済みのマーカーを再度設定する
ダイアログの一番上の行には、いずれかのノードにすでに設定されているものが一覧されていますが、他のノードに設定するマーカーをこの中から選ぶこともできます。すでにサイズや角度を変更してあるマーカーの場合は、その変更後のマーカーが共有されて、複数のパス/シェイプに設定されることになります。
共有されたマーカーの属性を設定した後から変更する(例えばさらに角度を変更する)と、共有している全パス/シェイプの上のマーカーの見た目が一斉に変更されます。
オリジナルのマーカーを設定する
オリジナルのマーカー(Custom marker)を設定することもできます。
自分で描いたオブジェクトを選択して、メニューでオブジェクト > オブジェクトをマーカーにを操作すると、そのオブジェクトがマーカーに変換されてダイアログの一番上の行に表示されるので、別のパスやシェイプのマーカーに設定することができるようになります。
(参考:オリジナルのマーカーを作ってみた)
オリジナルのマーカーは、グラデーション、パターン、シンボル(これらをまとめてリソースと呼びます)と同じように、ドキュメント内に埋め込まれて、その同じドキュメント内のオブジェクト間で利用できるようになります。
(参考:塗りつぶし用の部品の詳細(色、パターン、グラデーション))
オリジナルのマーカーをダイアログから消す
ダイアログの一番上に表示されているマーカーが不要な場合(どのオブジェクトにも設定していない場合)にダイアログ上から消すには、メニューでファイル > ドキュメントを整理を操作します。するとドキュメント内にマーカーデータとして含まれているもののうち、どのオブジェクトにも設定されていないマーカーのデータを削除してくれ、ダイアログからも消えます。
なお、組み込みマーカーの場合は、どのオブジェクトにも設定されていないものになった時点で自動的にダイアログの一番上から消えます。
マーカーごとオブジェクトをコピー
マーカーが設定されているオブジェクトをペーストしたり複製したりすると、それに設定されているマーカーも複製されて、ダイアログ上にも複製元のマーカーと複製後のマーカーとの両方が表示されます。
複製後のマーカーはもちろん複製前のマーカーとは別々に大きさや角度などを変更することができます。
オリジナルのマーカーを保存するには?
オリジナルのマーカーを保存しておいて、別のドキュメントの編集時に再利用するための専用の機能はないようです。
組み込みマーカーのデータはInkscapeのインストール先の、ある特別なSVGファイルに格納されているので、そこにオリジナルのマーカーのデータも(例えばテキストエディタなどで)追加するという方法もあり、ネット上ではこの方法を提示している解説コンテンツもあります。ただ、インストールされたファイルを直接編集してしまうのは抵抗があるし、編集権限がなかったりしていろいろイレギュラーなことをしなければなりません。
シンボルの追加やフォントの追加のような方法があればよかったのですが、どうやら無いようです。
なお、自前のシンボルセットの追加(わかりやすい方法)としてまとめておいた方法と同じような方法で、オリジナルマーカーを格納したSVGファイルを編集中のドキュメントにインポートすることで再利用する方法はあります。
組み込みマーカーを編集して再利用
組み込みマーカーをいじって、形や色を変えたりしてから、オリジナルのマーカーとして再利用する方法です。
なんでもいいいので、パスを描いて、編集対象にしたいマーカーを設定し、設定後のパスを選択して、メニューでパス > ストロークをパスに変換を操作すると、設定対象のパスとは別に設定したマーカーの部分をパスに変換して取り出すことができます。
例えば次のように矢印マーカーを設定してパスに変換すると、矢印の先の部分だけパスとして取り出すことができます。(パスに変換した直後は元のパスとグループ化されている状態なので、適宜グループ解除などが必要です)

パスとして取り出せれば、あとは好きなように編集して、オリジナルのマーカーとして登録して利用することができます。
(参考:矢印の色を変える)
マーカーの色をストロークに合わせる
環境設定ダイアログ上に、マーカーの色とストロークの色を同期させるかどうかを切り替えるチェックマークがあるのですが、これが思ったように動きません。

ストックマーカー(組み込みマーカー)について、ストロークとマーカーの色を揃えないようにする(別々の色を設定する)ことができるように見えますが、やってみるとそうなりません。
オリジナルのマーカー(カスタムマーカー)をストロークの色と揃えることもできません。(環境設定のこのチェックマークの意味を誤解しているのかもしれませんが)
後者については、SVGファイルに格納したマーカーのデータ(markerエレメント)を直接いじって、「fill:context-stroke;」という属性を記述すれば、組み込みマーカーと同じようにストロークの色が自動的に設定されるようになります。(参考:オリジナルのマーカーを作ってみた)
なお、メニューでエクステンション > パスの変形 > マーカーの色から実行できるエクステンションでマーカーの色を変えることもできますが、このエクステンションについては細かい解説コンテンツを見つけられていません。そもそもSVGのバージョン1.2の実装が進むまでの一時的なエクステンションだそうなので、あまり深く追求するものではないのかもしれません。
このあたりの事情については、今後もフォローしておかないといけないかもしれません。