大宽箭头,怎么办?

大宽箭头,怎么办?

我看到有人用这个脚本来生成大箭头,但我觉得这很棘手。而且我希望箭头没有被填满。有什么好主意吗?

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

相关内容