我想知道如何绘制像这样的箭筒图。我知道有 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}