使用 TikZ 绘制箭筒图

使用 TikZ 绘制箭筒图

我想知道如何绘制像这样的箭筒图。我知道有 TikZ 或类似的东西,但我不知道绘制它所需的命令或包。

箭筒图

答案1

由于您希望箭头靠近节点,我认为您需要使用装饰。以下是其中一种方法:

在此处输入图片描述

代码如下:

\documentclass[border=5mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,decorations.markings}

\begin{document}

\tikzset{% arrow close to the source: the 0.2 determines where the arrow is drawn
  ->-/.style={decoration={markings, mark=at position 0.2 with {\arrow{stealth}}},
              postaction={decorate}},
}

\begin{tikzpicture}[every node/.style={circle,draw},thick]
  \node(NL) at (0,0){$N$};
  \node(NR) at (2,0){$N$};
  \draw[->-](NL.north east)--(NR.north west);
  \draw[->-](NR.south west)--(NL.south east);
\end{tikzpicture}

\end{document}

答案2

使用 TikZ 版本 3 的答案:

\documentclass[border=5mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}

\pgfarrowsdeclare{:}{:}{}{}

\begin{document}

\begin{tikzpicture}[
    ->-/.style={arrows={:Stealth[reversed,sep=1.5ex]-}},
    every node/.style={circle,draw,outer sep=0},
    thick
  ]
  \node(NL) at (0,0){$N$};
  \node(NR) at (2,0){$N$};
  \draw[->-](NR.north west)--(NL.north east);
  \draw[->-](NL.south east)--(NR.south west);
\end{tikzpicture}

\end{document}

该线\pgfarrowsdeclare{:}{:}{}{}用于创建“无尖”箭头规格(参见这个答案arrows={:Stealth[reversed,sep=1.5ex]-})然后使用以下内容生成特殊箭头:

不放任何提示,然后放一个反向隐形提示,与前一个提示相隔 1.5ex 空间,然后用一条线完成箭头指向目的地

然后将此样式别名化以->-获得更好的可读性和可重用性,类似于@Andrew 的答案。

答案3

有点类似的 PSTricks 解决方案:

\documentclass{article}

\usepackage{xfp}
\usepackage{pstricks-add}

\def\quiver[#1,#2]#3#4{
\begin{figure}
 \centering
  \begin{pspicture}(\fpeval{2*#1+#2},\fpeval{2*#1})
    \rput(#1,#1){#3}
    \rput(\fpeval{#1+#2},#1){#4}
    \cnode(#1,#1){#1}{A}
    \cnode(\fpeval{#1+#2},#1){#1}{B}
   \psset{
     offset = -8pt,
     nodesep = -3pt, % adjust manually
     ArrowInside = ->,
     ArrowInsidePos = 0.25,
     arrowsize = 0.2
   }
    \ncline{A}{B}
    \ncline{B}{A}
  \end{pspicture}
 \caption{A quiver diagram between #1 and #2.} % I have no idea if it's called that...
\end{figure}
}

\begin{document}

% \quiver[<radius>, <separation>]{<left node>}{<right node>}
\quiver[0.5, 3.5]{$N$}{$M$}

\end{document}

输出

您所要做的就是选择圆的半径和它们之间的距离,并选择在圆中写入的内容(作为命令的参数\quiver)。

答案4

另一个 PSTricks:

\documentclass{article}
\usepackage{pstricks-add}

\newcommand*\quiver[3][2cm]{%
  \cnodeput(0,0){A}{\strut#2}\cnodeput(#1,0){B}{\strut#3}%
  \ncline[offset=-1ex,nodesep=-1pt,ArrowInside=->,ArrowInsidePos=0.3,arrowsize=0.2]{A}{B}%
  \ncline[offset=-1ex,nodesep=-1pt,ArrowInside=->,ArrowInsidePos=0.3,arrowsize=0.2]{B}{A}%
  \hspace{#1}}

\begin{document}

\quiver{$N$}{$n$} \par\bigskip
\quiver[3cm]{$N$}{$n$}

\end{document}

在此处输入图片描述

相关内容