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