Bibliotecas Tikz Arrow: Como posso migrar de arrows para arrows.meta sem ficar irritado?

Bibliotecas Tikz Arrow: Como posso migrar de arrows para arrows.meta sem ficar irritado?

Tenho alguns códigos legados que usam a arrowsbiblioteca e quero reutilizar parte desse código em novos trabalhos com a arrows.metabiblioteca (incluindo, posteriormente, ajustes nas pontas das setas).

Em vez de passar por tudo para consertar >=triangle 45(etc), pensei que poderia definir um novo estilo para passar para a nova biblioteca. Aqui está meu 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}

No entanto, isso falha miseravelmente:

...
(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

Parece que .tip espera mais parâmetros, mas não encontrei nada no manual para esclarecer isso.

O que estou fazendo ou esperando de errado?

Responder1

A anglechave deverá ser especificada no formato angle=<angle>:<dimension>, onde, conforme manual da PGF:

Esta chave define ocomprimentoe alargurada ponta de uma flecha ao mesmo tempo. O comprimento será o cosseno de <angle>, enquanto a largura será o dobro do seno da metade <angle>.

Portanto, no MWE dado acima, teremos

Triangle[angle=45:3pt]

Também é possível especificar um argumento opcional:

Triangle[angle=45:1pt 5]

que de acordo com o manual:

se os fatores opcionais forem fornecidos, eles adicionam um certo múltiplo da largura da linha antes <dimension>que o seno e os cossenos sejam calculados.

\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}

insira a descrição da imagem aqui

A chave angle'não exige que a <dimension>seja especificado:

Define a largura da seta como o dobro da tangente <angle>/2vezes o comprimento da seta. Isso resulta em uma ponta de seta com um ângulo de abertura <angle>na ponta e com o comprimento especificado inalterado.

Todas as citações são do manual PGF, página 188.

informação relacionada