Библиотеки Tikz Arrow: как перейти со стрелок на arrows.meta, не раздражаясь?

Библиотеки Tikz Arrow: как перейти со стрелок на arrows.meta, не раздражаясь?

У меня есть устаревший код, использующий 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>, а ширина будет равна удвоенному синусу половины <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длины стрелки. Это приводит к наконечнику стрелки с углом раскрытия на <angle>кончике и с неизменной указанной длиной.

Все цитаты взяты из руководства PGF, стр. 188.

Связанный контент