真ん中に矢印が付いた線を描きたいのですが、decoration.markings ライブラリと、\arrow
そこでのみ使用できるコマンドを見つけました。
しかし、コマンドに使用できるオプションと矢印の先に関する情報はほとんど見つかりませんでした\arrow
。
試行錯誤の結果、線の真ん中にシンプルな矢印を描くことができました。
\tikzset{kb/.style={postaction={decorate,decoration={markings,mark=at position .5 with {\arrow{angle 90};}}}}}
しかし、矢印の先端のスタイルを変更するにはどうすればよいでしょうか。つまり、矢印の先端の周りに円を付けたり、矢印の先端を 2 つ続けて表示したりするにはどうすればよいでしょうか。
答え1
それで、あなたの質問は、装飾として使用するために新しい種類の矢印の先端をどのように定義するかということですか?
\draw[->]
新しい矢印チップの定義は、コマンドの一部として、または装飾内のコマンドの一部として使用する場所とは無関係です\arrow
。マニュアルで新しい矢印の種類の定義について説明している部分は、784ページ。
一般的に、矢印の任意の形状を定義するのは、低レベルのpgf*
コマンドを使用する必要があるため困難です。さらに、矢印にスタイルを適用してスケーラブルにしたい場合は、メタ矢印について学習する必要があります (785 ページ)。
ただし、質問では、既存の矢印の先端を組み合わせたものであるため、簡単に作成できる 2 つの特定の例が示されました。
円で囲まれた矢印の先端が 1 つあります。 によって、既存の
latex
矢印と既存のo
(円) 矢印の先端を組み合わせることができます\pgfarrowsdeclarecombine
。このコマンドは、デフォルトでは矢印の先端を 1 つずつ配置しますが、2 つめの矢印の先端を移動するオフセットを指定できます。この場合、試行錯誤して、 が-5pt
目的の結果を生み出すことがわかりました。2 つの矢印の先が次々に表示されます。コマンドは
\pgfarrowsdeclaredouble
まさにこのために設計されています。
次のコードを見てください。
\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing,decorations.markings,arrows}
\pgfarrowsdeclarecombine[-5pt]{circled}{circled}{latex}{latex}{o}{o}
\pgfarrowsdeclaredouble{doubled}{doubled}{stealth}{stealth}
\tikzset{
kb1/.style={postaction={decorate,
decoration={markings,mark=at position .5 with {\arrow{circled};}}}
},
kb2/.style={postaction={decorate,
decoration={markings,mark=at position .5 with {\arrow{doubled};}}}
},
}
\begin{document}
\begin{tikzpicture}%
\draw[kb1] (0,0) -- + (2,0);
\draw[kb2] (0,.5) -- + (2,0);
\end{tikzpicture}
\end{document}
これにより、次のようになります。
アップデート
OP はコメントで、矢印の種類が の場合angle 90
、円が小さすぎると指摘しました。
修正するのは少し難しく、ハックっぽいです。
標準の矢印はカスタマイズできません。カスタマイズするには、「メタ矢印」を使用する必要があります。この種類の矢印には、最新バージョンの pgf/tikz とパッケージ が必要です。このパッケージでは、arrows.meta
矢印の先端の新しい名前が定義されています。たとえば、「中空の円」矢印はCircle[open]
ではなく という名前でo
、Straight Barb
矢印は を置き換えますangle 90
。最新のpgfmanualの202ページ。
しかし、「複合矢印」のさまざまな部分に異なるオプションを渡すことが可能かどうかはわかりません。「角度 90」と「円」に異なるサイズを与える必要がありますが、その方法がわかりません。
しかし、私はハックを見つけました。新しいメタ矢印を円にのみ使用し、古いものをarrow 90
先端に残しておくと、渡すオプションは\arrow
複合矢印の「メタ」部分にのみ使用され、この方法では円部分のみがサイズ変更されます。
このアイデアを使用すると:
\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing,decorations.markings,arrows,arrows.meta}
\pgfarrowsdeclarecombine[-2mm]{circled}{circled}{angle 90}{angle 90}{Circle[open]}{Circle[open]}
\pgfarrowsdeclaredouble{doubled}{doubled}{angle 90}{angle 90}
\tikzset{
kb1/.style={postaction={decorate,
decoration={markings,mark=at position .5 with {\arrow{circled[width=3mm,length=3mm]};}}}
},
kb2/.style={postaction={decorate,
decoration={markings,mark=at position .5 with {\arrow{doubled};}}}
},
}
\begin{document}
\begin{tikzpicture}%
\draw[kb1] (0,0) -- + (2,0);
\draw[kb2] (0,.5) -- + (2,0);
\end{tikzpicture}
\end{document}
結果: