我看到有人用这个脚本来生成大箭头,但我觉得这很棘手。而且我希望箭头没有被填满。有什么好主意吗?
\draw[
-triangle 45,
line width=1.0mm,
postaction={draw, line width=0.25cm, shorten >=0.8cm, -}
] (2,-2) -- (2.5,-2);
就像是
------\
------/
答案1
代码首先绘制一条相对较短的线,长度为 0.5 毫米,线宽为 1.0 毫米,如下所示
(线宽是计算箭头大小的一部分。这是获得大箭头的常用技巧。)
实际的线位于箭头尖端下方,箭头尖端很大,完全隐藏了线,通过设置opacity=.5
我们可以看到它(请记住箭头本身包含一条线和一个填充区域,填充区域和线会形成一个较暗的三角形)。
完成后,再次使用相同的路径(postaction
),但使用不同的设置:
- 线宽为 2.5 毫米(而非 1 毫米),
- 没有箭头(
-
),并且 - 该
>
部件(在这种情况下,末端位于)(2.5,-2)
缩短了 8 毫米。
该draw
模式在“正常操作”中使用,因为它明确地与一起使用\draw
,但postaction
不会继承此设置,而只继承路径本身。
这将产生
postaction
如果我们用另一种颜色绘制(或再次使用),则可以最好地看到由于 而产生的实际附加线opacity
;通过draw=green
我们可以看到它实际上与箭头重叠:
观察如果我删除该shorten >
选项(或将其设置为0pt
)会发生什么:
现在,实际末端位于箭头尖端,并shorten >=0.8cm
向左设置 8 毫米。但由于我们的线只有 5 毫米长,我们实际上得到的是一条长度为 -3 毫米的反向线。它postaction
不再知道我们的箭头,无法像通常那样自动缩短线。
奇怪!这可能不是绘制大箭头的最有效方法。对于这种类型的箭头,我们可以使用库single arrow
的形状shapes.arrows
。
您的更新意味着(呵呵!)一种完全不同的方法:
\tikz\draw[line width=1mm,-implies,double, double distance=1mm] (0,0) -- (1,0);
产生
描述double distance
以通常的线宽绘制的双线之间的距离(默认值:thin
= .4pt
,此处1mm
)。
实际情况:
2 * 'line width' + 'inner distance'
绘制一条线宽为的线inner distance
在其上绘制一条线宽为的线- (箭头实际上也缩短了线,但那是完全不同的章节,见上文)
我们可以补充opacity=.5
强调一下:
代码
箭头和后续操作都不会更新边界框,这就是我不得不使用相对较粗的边框的原因6pt
。这通常不会在普通的 TikZ 图片中造成任何问题。
\documentclass[tikz,border=6pt]{standalone}
\usetikzlibrary{arrows}
\tikzset{every picture/.append style={opacity=.5}}
\begin{document}
\tikz\draw[
-triangle 45,
line width=1.0mm,
postaction={draw=green, line width=0.25cm, shorten >=0.0cm, -}
] (2,-2) -- (2.5,-2);
\tikz\draw[line width=1mm,-implies,double, double distance=1mm] (0,0) -- (1,0);
\end{document}