平行四边形上的箭头

平行四边形上的箭头

从网站上获得此代码,尝试了几个小时才采用它,我想要做的就是将平行四边形中间的箭头更改为大多数数学教科书中看到的普通箭头>>但可能稍大一些,我的 MWE 如下。

\documentclass{scrreprt}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\tikzset{%
    ->-/.style={decoration={markings, mark=at position 1.5 with {\arrow{>}}},
        postaction={decorate}},
    ->>-/.style={decoration={markings, mark=at position 1.0 with {\arrow{>>}}},
        postaction={decorate}},
}  
\begin{document}

\begin{tikzpicture}[meme/.pic={ \fill[red ] (150:6pt) to[bend right=10] (0:3pt) to[bend right=10] (-150:6pt)--cycle;
    }]
    \path
    (0,0) coordinate (A) 
    (2,3) coordinate (B)
    (8,3) coordinate (C)
    (6,0) coordinate (D);
    
    \node [left] at (0,0) {D};
    \node [left] at (2,3) {A};
    \node [right] at (8,3) {B};
    \node [right] at (6,0) {C};
    
    \draw [thick] (2,3) -- (6,0);
    
    
    
    \draw[sloped] (A)
    --(B) pic[pos=.5]{meme}
    --(C) pic[pos=.46]{meme} pic[pos=.54]{meme}
    --(D) pic[pos=.5]{meme}
    --cycle pic[pos=.46]{meme} pic[pos=.54]{meme};
    
\end{tikzpicture} 

\end{document}

答案1

我从中汲取灵感快速谷歌搜索

arrow更喜欢使用图片而不是使用decorations.markings库。其代码的第一行移动绘图,以便整个构造的中间是我们想要的位置(否则尖端将不对称)。

这些图片通过样式放置,edge node这样我们就不必写出每张图片的规范。

该示例显示了将这种箭头加倍的两种方法:

  1. 使用只需在第一个箭头后面添加第二个箭头的样式>>->>-
  2. 使用双箭头提示的规范(因为我想要->-这些条之间的连接)。>sep

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{arrows.meta, quotes}
\tikzset{
  reversed/.style={xscale=-1},
  pics/arrow/.style={/tikz/sloped, /tikz/allow upside down, code=%
    \pgfarrowtotallength{#1}\tikzset{xshift/.expanded=.5*\csname pgf@x\endcsname}%
    \pgfarrowdraw{#1}}, pics/arrow/.default=>}
\begin{document}
\tikz[
  line join=round,
  Arr/.tip={Straight Barb[angle'=60, scale=2]},
  ||/.tip={Bar[sep] . Bar},
  > = Arr,
  ->-/.style={edge node={pic[#1]{arrow}}},
  ->>-/.style={edge node={pic[#1]{arrow=>>}}},
] \draw[thick, draw=purple]
                       (0, 0) coordinate["$D$" left]  (D)
     to[->>-]          (2, 3) coordinate["$A$" left]  (A)
     to[->-]           (8, 3) coordinate["$B$" right] (B)
     to[->>-=reversed] (6, 0) coordinate["$C$" right] (C)
     to[->- =reversed] cycle
     coordinate["$E$"] (E) at (intersection of D--B and A--C)
     [behind path, every edge/.append style={black, thin}, arrows={[slant=.2]}]
     (A) edge[>=||, ->-=near start, ->-=near end] (C)
     (B) edge[>=|,  ->-=near start, ->-=near end] (D);
\end{document}

输出

在此处输入图片描述

答案2

更新:风格meme来自这个答案是为了以简单的方式创建用户灵活的箭头而制作的。

适应你的问题,只需稍微改变一下meme(你可以把它放在\tikzset

meme/.pic={ 
\draw (150:8pt) --(0,0)-- (-150:8pt);
}

在此处输入图片描述

\documentclass{scrreprt}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[meme/.pic={ 
\draw (150:8pt) --(0,0)-- (-150:8pt);
}]
\path
(0,0) coordinate (D) node[below left]{$D$} 
(2,3) coordinate (A) node[above left]{$A$}
(6,0) coordinate (C) node[below right]{$C$}
(A)+(C) coordinate (B) node[above right]{$B$};
        
\draw[gray] (A)--(C) (B)--(D);
        
\draw[thick] 
(A)--(B) pic[pos=.5,sloped,red]{meme}
(D)--(C) pic[pos=.5,sloped,red]{meme}
(D)--(A) pic[pos=.47,sloped,blue]{meme}
         pic[pos=.53,sloped,blue]{meme}
(C)--(B) pic[pos=.47,sloped,blue]{meme}
         pic[pos=.53,sloped,blue]{meme}
;
\end{tikzpicture} 
\end{document}

是不是觉得这个简单又灵活呢?


老的:请注意,acoordinatenode没有内容的 a。也许你想要的是Straight Barb来自arrows.meta图书馆的箭头(请参阅PGF手册)。

其中,和Straight Barb[angle=30:8pt]的含义分别为尖端角度和尖端长度。308pt

在此处输入图片描述

\documentclass{scrreprt}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[>={Straight Barb[angle=30:8pt]}]
\path
(0,0) coordinate (D) node[below left]{$D$} 
(2,3) coordinate (A) node[above left]{$A$}
(6,0) coordinate (C) node[below right]{$C$}
(A)+(C) coordinate (B) node[above right]{$B$};
        
\draw[blue] (2,3) -- (6,0);

\draw[->] (A)--(B);
\draw[->] (D)--(C);
\draw[->] (D)--(A);
\draw[->] (C)--(B);
        
\end{tikzpicture} 
\end{document}

相关内容