可能重复:
TIKZ 中的双箭头?
\begin{tikzpicture}
[->,>=stealth',shorten >=1pt,auto,node distance=1.5cm,semithick,font=\tiny]
\tikzstyle{every state}=
[fill=none,draw=black,text=black, text centered, text width=0.5cm]
\node[state] (A) {G};
\node[state] (B) [right of=A] {B};
\path (A) edge node {} (B);
\path (B) edge node {} (A);
\end{tikzpicture}
这是我当前的代码,但 A 和 B 之间出现一个双箭头,有什么想法可以将其变成两个不同的箭头吗?
答案1
您可以使用[yshift=<distance>]
来偏移箭头。这仅在您指定节点锚点时才有效(例如([yshift=1ex]A.center)
)。
这是带有移位箭头的示例。请注意,我删除了您用 创建的空节点node {}
,它们对于绘制箭头来说不是必需的:
\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{automata,arrows}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=1.5cm,semithick,font=\tiny]
\tikzstyle{every state}=[fill=none,draw=black,text=black, text centered, text width=0.5cm]
\node[state] (A) {G};
\node[state] (B) [right of=A] {B};
\path ([yshift=1ex]A.east) edge ([yshift=1ex]B.west);
\path ([yshift=-1ex]B.west) edge ([yshift=-1ex]A.east);
\end{tikzpicture}
\end{document}
如果希望箭头从边缘开始,可以使用锚点A.<angle>
,锚点指定节点边缘上的点,即A.0
右侧边缘、A.90
顶部边缘等等。\draw (...) -- (...);
在这种情况下,我还会使用绘制箭头的语法,因为它更紧凑,而且这里不需要边缘符号。
\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{automata,arrows}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=1.5cm,semithick,font=\tiny]
\tikzstyle{every state}=[fill=none,draw=black,text=black, text centered, text width=0.5cm]
\node[state] (A) {G};
\node[state] (B) [right of=A] {B};
\draw (A.-25) -- (B.205);
\draw (B.-205) -- (A.25);
\end{tikzpicture}
\end{document}
答案2
在这种情况下,如果圆形节点大小相等,<node name>.<angle>
我想您也可以使用语法。这或多或少消除了 wh1t3 在其评论中提到的问题。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{automata,arrows}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=1.5cm,semithick,font=\tiny]
\tikzstyle{every state}=[fill=none,draw=black,text=black, text centered, text width=0.5cm]
\node[state] (A) {G};
\node[state] (B) [right of=A] {B};
\path (A.10) edge (B.170);
\path (B.190) edge (A.-10);
\end{tikzpicture}