使用 tikz 绘制双箭头

使用 tikz 绘制双箭头

我想画一个像下面这样的双箭头: 在此处输入图片描述

我应该如何使用 tikz 来做这件事?

我尝试了下面的代码,但它并不像预期的那样:

\documentclass[convert]{standalone}

\usepackage{tikz}
\usetikzlibrary{fit,shapes.arrows}
\definecolor{fillcolor}{HTML}{DDE776}
\begin{document}
\begin{tikzpicture}
    \tikzset{arr/.style={single arrow, draw=black, very thick, fill=fillcolor,
    minimum width = 10pt, single arrow head extend=30pt,
    inner xsep=0pt,
    }}
    \coordinate (a) at (0,0);
    \coordinate (b) at (2,2);
    \node[arr,fit=(a) (b)] {}; 
\end{tikzpicture}
\end{document}

输出: 在此处输入图片描述

答案1

这个新答案的灵感来自 Jasper Habicht 对另一个问题的回答。在前两行代码中输入点 A 和 B 的四个坐标。代码对从点 A 到点 B 的双箭头的斜率进行所有微积分。

代码:

\documentclass[border=10mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows, calc}

\tikzset{
    MyLongArrow/.style args={#1 -- #2}{
        insert path={let \p1=($(#1)-(#2)$) in}, 
        single arrow, draw=black, minimum width=15mm, minimum height={veclen(\x1,\y1)}, inner sep=0mm, single arrow head extend=1mm, double arrow head extend=1mm
    }
}

\begin{document}
    \begin{tikzpicture}
        \newcommand{\xs}{-1} % x coord of point A
        \newcommand{\ys}{-2} % y coord  coordof point A
        \newcommand{\xe}{10} % x coord of point B
        \newcommand{\ye}{3} % y of point B
        \newcommand{\ang}{atan((\ye-\ys)/(\xe-\xs))} % slope of segment AB
        \coordinate (a) at (\xs,\ys); % point A 
        \coordinate (b) at (\xe,\ye); % point B
        \draw[gray!20] (a) grid (b);
        \path (a) -- (b) node[midway, MyLongArrow={a -- b},fill=cyan!20,double arrow,rotate=\ang] {From point A to point B};    
    \end{tikzpicture}
\end{document}

点 A(-1,-2) 和 B(10,3) 的输出:

在此处输入图片描述

网格仅用于控制,您可以注释相关行。如果您不想要双箭头内的文本,请按如下方式更改代码的最后一行:

\path (a) -- (b) node[midway, MyLongArrow={a -- b},fill=cyan!20,double arrow,rotate=\ang] {};

答案2

像这样:

在此处输入图片描述

代码:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
%\usetikzlibrary{fit,shapes.arrows}
\definecolor{fillcolor}{HTML}{DDE776}

\begin{document}
    \begin{tikzpicture}
        \fill[fill=fillcolor,rotate=45,yscale=.5,xscale=.5] (-3,-3)--(-5,0)--(-3,3)--(-3,1)--(3,1)--(3,3)--(5,0)--(3,-3)--(3,-1)--(-3,-1)--cycle;
        \node[rotate=45,cyan] at (0,0) {\Huge freccia}; 
    \end{tikzpicture}   
\end{document}

您可以创建一个新命令来定义通用双箭头(具有相同基点)并添加以下参数:颜色、旋转角度、x 比例、y 比例、内部文本……

编辑:例如,你可以有这个双箭头

在此处输入图片描述

对之前提出的代码进行了一些微小的更改:

\begin{tikzpicture}
        \fill[fill=fillcolor,rotate=120,yscale=.5] (-3,-3)--(-5,0)--(-3,3)--(-3,1)--(3,1)--(3,3)--(5,0)--(3,-3)--(3,-1)--(-3,-1)--cycle;
        \node[rotate=120,red] at (0,0) {\Huge freccia}; 
    \end{tikzpicture}

或者这个

在此处输入图片描述

使用以下代码:

\begin{tikzpicture}
        \fill[draw,line width=2pt,fill=fillcolor,rotate=-30,yscale=.5] (-3,-3)--(-5,0)--(-3,3)--(-3,1)--(3,1)--(3,3)--(5,0)--(3,-3)--(3,-1)--(-3,-1)--cycle;
        \node[rotate=-30,red] at (0,0) {\Huge freccia}; 
    \end{tikzpicture}

相关内容