ライブラリを使用するレガシー コードがいくつかありarrows
、そのコードの一部をarrows.meta
ライブラリを使用した新しい作業で再利用したいと考えています (後で矢印の先端を微調整することも含まれます)。
すべてを修正するよりも>=triangle 45
、新しいライブラリに渡す新しいスタイルを定義できるのではないかと考えました。これが私の MWE です:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
% Failed attempt at providing legacy arrowheads:
\tikzset{triangle 45/.tip={Triangle[angle=45]}}
\begin{document}
% Legacy tikzpicture:
\begin{tikzpicture}[>=triangle 45]
\draw[->] (0,0) -> (2,0);
\end{tikzpicture}
\end{document}
しかし、それは惨めに失敗します。
...
(d:/TeXlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.meta.code.tex
))
Runaway argument?
45 +0 +0 +0 \pgf@stop \expandafter \pgfarrowsaddtooptions \expandafter \ETC.
! File ended while scanning use of \pgfarrowsfourparameters@.
<inserted text>
\par
<*> test.tex
.tip にはさらに多くのパラメータが必要なようですが、マニュアルにはこれを明確にするものが見つかりませんでした。
私が何を間違ってやっているのか、何を期待しているのか?
答え1
キーangle
は の形式で指定する必要がありますangle=<angle>:<dimension>
。PGF マニュアルによれば、次のようになります。
このキーは、長さそしてその幅同時に矢印の先端の長さは のコサインになり
<angle>
、幅は の半分のサインの 2 倍になります<angle>
。
したがって、上記のMWEでは、
Triangle[angle=45:3pt]
オプションの引数を指定することもできます。
Triangle[angle=45:1pt 5]
マニュアルによると、
<dimension>
オプションの係数が指定されている場合は、正弦と余弦が計算される前に、線幅の特定の倍数が追加されます。
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
% Failed attempt at providing legacy arrowheads:
\tikzset{triangle 45/.tip={Triangle[angle=45:3pt]}}
\begin{document}
% Legacy tikzpicture:
\begin{tikzpicture}[>=triangle 45]
\draw[->] (0,0) -> (2,0);
\draw[-{Triangle[angle=45:1pt 5]}] (0,-.2) -> (2,-.2);
\end{tikzpicture}
\end{document}
キーを指定するangle'
必要はありません。<dimension>
矢印の幅を、
<angle>/2
矢印の長さのタンジェントの 2 倍に設定します。これにより、矢印の<angle>
先端の開口角度が になり、指定された長さは変更されません。
引用はすべて PGF マニュアルの 188 ページからのものです。