このページでは、Inkscapeのオブジェクトのスタイル(色、 線種、マーカなど)のうち、Inkscapeの標準機能では他のオブジェクトにコピー(流用)できないスタイルについて考えてみたいと思います。

- Contents
- マーカー(矢印など)のコピー
- パターンのコピー
- グラデーションのコピー
(2025.05.25更新)
Inkscapeで描いたオブジェクトには、色/ストロークの線種/ストロークの幅/角の形などの各種属性から成るスタイルが設定可能です。そしてスタイルは「オブジェクトのスタイルを設定する」にまとめたように、新たに描こうとする別のオブジェクトのスタイルとして流用(コピー)したり、すでに描かれているオブジェクトのスタイルとしてコピー&ペーストすることができます。
ところが、どういうわけかスタイルに含まれる一部の属性はコピーできないことがあります。例えば塗りつぶしパターンはスタイルの属性の1つですが、他のオブジェクトにコピペすることはできても新規オブジェクトのスタイルとしてコピーすることができません。
そのような性質のスタイル属性を他のオブジェクトにも流用したいときはどうしたらいいのかを以下に考えていきたいと思います。
マーカー(矢印など)のコピー
パスの先端や途中にマーカーを設定すると矢印などが描けることはInkscapeの(というかSVG形式の)基本機能です。

ところが、ストロークの色や太さと違ってこのマーカーというスタイル属性は新規オブジェクトのスタイルとしてコピーできません。(すでに描かれている別のパスにコピペすることはできます。)
例えばペンツールです。ペンツールのスタイルに矢印のマーカーを設定することがもしできるのであれば、ペンツールを使って新しいパスを描くと最初から矢印になってくれるので、何本も連続して矢印を描きたいときに便利なはずです。

ところが環境設定の画面でペンツールの「新規オブジェクトのスタイル」にマーカーを設定しようとして「最後に使用したスタイル」や「ツール独自のスタイル」を指定しても、無視されて設定してもらえません。

例えば、矢印を設定したオブジェクトを選択してから「選択オブジェクトから取り込み」をクリックすれば新規オブジェクトも矢印になるはずなのに、次のようにペンツールで新規パスを描いてみるとマーカーだけ無視されています。

事情は「最後に使用したスタイル」を指定した場合も同じです。マーカーを変更しても新規オブジェクトのスタイルとして記憶されません。
この動きはどうもバグの可能性があるようです。
ではどうすればいいかというと、普通は新規のパスを描いておいてからそのパスにスタイルのコピペをするという少し面倒な手順になるのですが、ちょっと不思議な手順で解決することがネット上で紹介されています。
まずペンツールの「新規オブジェクトのスタイル」を「最後に使用したスタイル」にしておきます。
そしてマーカーを設定したパスを選択して、「スタイルのペースト」をそのパス自身に実行します。ショートカットキーで言えば「Ctrl+C → Ctrl+Shift+V」を連打します。自分のスタイルを自分にペーストしているだけなので、当然ですが、そのパスの見た目は何も変わりません。おもしろい(?)のはこれだけでマーカーも含めてすべてのスタイル属性がペンツールの新規オブジェクトのスタイルに設定されます。(よくこんな手順に気づいたなあと思います。)
パターンのコピー
オブジェクトを塗りつぶすのに、一色ではなくパターンが使えますが、このパターンも先ほどのマーカーと同じように、新規オブジェクトのスタイルとしてコピーすることができません(スタイルのコピペでは可能です)。新規オブジェクトのスタイルにパターンを設定できれば、統一されたパターンで塗りつぶされたオブジェクトを簡単に描くことができるので便利だと思いますが。

そこで、マーカーと同様に環境設定で「最後に使用したスタイル」を指定しておいて「自分自身へのスタイルのペースト」をやってみます。ところが今度はうまくいきません。確かにパターンを新規オブジェクトのスタイルにすることはできるのですが、コピー元にしたパターンより細かいパターンになってしまいます。

パターンの大きさを除けば、ちゃんと新規オブジェクトのスタイルに設定できているのですが、原因は分かりません。「塗りつぶしパターンがズレる件」に書いたことと関連があるのかもしれません。パターンが細かくなってしまっても、パターンの大きさはハンドルをドラッグすれば変えることができるので何とかなりますが・・・。

それなら最初からスタイルのコピペでやったほうが簡単そうです(そちらの手順ならパターンが勝手に細かくなったりしません)。
グラデーションのコピー
次にグラデーションのコピーですが、これまでのマーカーやパターンと違って、「自分自身へのスタイルのコピペ」で新規オブジェクトのスタイルに設定することもできないし、すでに描かれている他のオブジェクトのスタイルにコピペすることもできません。

というか、少しややこしいんですが、グラデーションの場合はスタイルのコピペや新規オブジェクトのスタイルへの設定が全く動作しないということではなく、動作しているんだけど見た目には動作しているように見えないということらしいです。
新規オブジェクトのスタイルへの設定を行う場合で説明すると、どうもこういうことらし いです。
これまでと同じように、グラデーションを設定したオブジェクトを選択し、「Ctrl-C → Ctrl+Shift+V」で自分自身にスタイルをコピペした後、その隣に新規オブジェクトを描くと次のようになります。

一見するとグラデーションは設定されていないように見えますが、グラデーションパスを表示させると、オブジェクトの上ではない離れたところにグラデーションパスが現れます。(しかもコピー元のグラデーションパスよりも縮んでいる!)

この新規オブジェクトをグラデーションパスの近くに移動すると、(縮んではいるけれど)ちゃんとグラデーションも現れます。グラデーションパスが遠く離れているせいで、新規オブジェクトの色が変化しなくなってしまっているということです。

つまり、新規オブジェクトのスタイルに設定するときに、グラデーションパスの位置(と大きさも)変なところに行ってしまうので、新規オブジェクトを描いてもグラデーションが現れないことになってしまうというわけです。
このちょっと不思議な動作については「グラデーションが消えてしまう件」のほうでも書いています。結局、グラデーションパスが離れたところに行ってしまったり縮んでしまったりするのを防ぐ方法が分かっていないので、グラデーションのコピペや新規オブジェクトのスタイルへの設定は「できない」と考えたほうがよさそうだなというわけです。
Inkscapeの今後のアップデートで何らかの修正が行われるのかもしれません。