我有一些使用该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 页。