答案1
我首先承认语法如下线路噪声,但xy
速度非常快,而且可以获得很好的结果。
\documentclass[border=5mm]{standalone}
\usepackage[arrow]{xy}
\begin{document}
\begin{xy}
(0,20)*+{A}="a";
(20,20)*+{B}="b";
(0, 0)*+{C}="c";
{\ar "a";"b"}?*!/_8pt/{f};
{\ar@{>>} "a";"c"}?*!/^6pt/{g};
{\ar|{\circ} "c";"b"}?*!/^8pt/{h};
\end{xy}
\end{document}
答案2
两种pstricks
解决方案:
\documentclass[border=3pt]{standalone}
\usepackage{pst-node, auto-pst-pdf}
\begin{document}
\psset{arrows=->, arrowinset=0.15, linewidth=0.6pt, nodesep=3pt, labelsep=2pt, rowsep=1.2cm}
$ \begin{psmatrix}
A & B \\%
C
%%%
\ncline{1,1}{1,2}\naput{f} %
\ncline[arrows=->>]{1,1}{2,1}\nbput{g }
\ncline{2,1}{1,2}\nbput{h}\psset{framesep=-2pt}\ncput*{\pscircle(0,0){3pt}}%
\end{psmatrix} $
\qquad
$ \begin{psmatrix}
A & B \\%
C
%%%
\ncline{1,1}{1,2}\naput{f} %
\ncline[arrows=->>]{1,1}{2,1}\nbput{g }
\ncline{2,1}{1,2}\nbput{h}\ncput{\pscircle(0,0){3pt}}%
\end{psmatrix} $
\end{document}
答案3
Sebastiano 的回答很好,但无法复制确切地如上所示,可能是因为他(他自己也承认)很着急。请允许我贡献我的答案(顺便说一句,我绝不会贬低你的答案,Sebastiano,我只是想提供帮助并添加更多细节)。所以这是代码tikzcd
:
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\[
\begin{tikzcd}[column sep=large, row sep=large]
A \ar[d, "g"', twoheadrightarrow] \ar[r, "f"] & B \\
C \ar[ru, description, "h"']
\end{tikzcd}
\]
\end{document}
但不幸的是,tikzcd
没有圆圈箭头已经实现,所以我什么也做不了。Thruston 已经展示了使用xy
包的解决方案,所以我想我只剩下普通的了tikz
。毫无疑问,它比tikzcd
或更难,但也更灵活xy
。这是最终的代码。
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[node distance=2cm, auto]
\node (A) {$A$};
\node(B) [right of=A] {$B$};
\node (C) [below of=A] {$C$};
\draw[->](A) to node {$f$}(B);
\draw[->>](A) to node [left] {$g$}(C);
\draw[->](C) to node [below=0.5ex] {$h$}(B);
\node at (1.0099,-1.002) {$\circ$};
\end{tikzpicture}
\end{document}