我有以下代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix,arrows}
\begin{document}
\[
\begin{tikzpicture}
\matrix (m) [matrix of math nodes,row sep=3em,column sep=1em,minimum width=2em]{
A & & G \\
& S & \\
};
\path[-stealth]
(m-1-1) edge node [above] {$f$} (m-1-3)
(m-1-1) edge [bend right] node [left] {$p\;$} (m-2-2)
(m-1-3) edge node [right] {$\;q$} (m-2-2)
(m-2-2) edge node [right] {$\epsilon$} (m-1-1);
\path[-stealth]
([yshift=5pt]m-1-1) edge node [right] {$g$} ([yshift=5pt]m-1-3);
\end{tikzpicture}
\]
\end{document}
我敢说你编译它。然后你会得到一个恶心的输出。我想要的是让两个箭头一个在另一个上面(就像 corolary 1.3.1.5,第 70 页,在http://math.umn.edu/~kwlan/articles/cpt-PEL-type-thesis-revision.pdf)。
有人能帮忙吗?如果解决方案没有对我编码图表的方式进行太多修改,我会很高兴,因为这是我一直使用的方式(使用矩阵),但乞丐不能挑三拣四,所以。
答案1
这里尝试使用.east
和.west
锚点来修复它:
笔记:
- 不确定您为什么使用数学模式——我已在下面的 MWE 中删除了它。
代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix,arrows}
\begin{document}
\begin{tikzpicture}
\matrix (m) [matrix of math nodes,row sep=3em,column sep=1em,minimum width=2em]{
A & & G \\
& S & \\
};
\path[-stealth]
(m-1-1.east) edge node [above,yshift=1.0ex] {$f$} (m-1-3.west)
(m-1-1) edge [bend right] node [left] {$p\;$} (m-2-2)
(m-1-3) edge node [right] {$\;q$} (m-2-2)
(m-2-2) edge node [right] {$\epsilon$} (m-1-1);
\path[-stealth]
([yshift=5pt]m-1-1.east) edge node [below,,yshift=-1.0ex] {$g$} ([yshift=5pt]m-1-3.west);
\end{tikzpicture}
\end{document}
答案2
这很容易tikz-cd
:
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\[
\begin{tikzcd}[column sep=1.5em]
A \arrow[yshift=.85ex]{rr}{f}
\arrow[yshift=-.45ex,swap]{rr}{g}
\arrow[yshift=-.4ex,bend right,swap]{dr}{p}
&&
G \arrow{dl}{q} \\
&
S \arrow[swap]{ul}{\epsilon}
\end{tikzcd}
\]
\end{document}
答案3
这是 Peter 代码的变体,但没有矩阵,并且对一些箭头的位置进行了一些调整。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}
\path node (A) {$A$}
(0:4cm) node (G) {$G$}
(-60:4cm) node (S) {$S$};
\path[-stealth]
(A) edge [bend right] node [left] {$p\;$} (S)
(G) edge node [right] {$\;q$} (S)
(S) edge node [right] {$\epsilon$} (A)
([yshift=-2.5pt]A.east) edge node [above,yshift= 1.0ex] {$f$} ([yshift=-2.5pt]G.west)
([yshift= 2.5pt]G.west) edge node [below,yshift=-1.0ex] {$g$} ([yshift= 2.5pt]A.east);
\end{tikzpicture}
\end{document}