Tenho alguns códigos legados que usam a arrows
biblioteca e quero reutilizar parte desse código em novos trabalhos com a arrows.meta
biblioteca (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 angle
chave 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}
A chave angle'
não exige que a <dimension>
seja especificado:
Define a largura da seta como o dobro da tangente
<angle>/2
vezes 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.