我写了下面的代码,但我无法输出从 $A$ 到 $B$ 的单射映射。我怎样才能做到这一点并能写出漂亮的图表?
\documentclass[tikz,border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}[node distance=1.5cm and 3cm, auto]
\node (A) {A};
\node (B) [right=of A] {B};
\node (C) [below=of A] {C};
\node (D) [below=of B] {D};
\node (E) [right=of D] {E};
\node (F) [right=of E] {F};
\draw[->] (A) -- (B) node[midway,above] {$\hookrightarrow$};
\draw[->] (A) -- (C);
\draw[->] (B) -- (D);
\draw[->] (C) -- (D);
\draw[->] (D) -- (E) node[midway,above] {$f_1$};
\draw[->] (E) -- (F) node[midway,above] {$f_2$};
\draw[->] (B) -- (E) node[midway,sloped,above] {$f$};
\end{tikzpicture}
\end{document}
输出:
答案1
答案2
改用tikz-cd
:
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}[row sep=large]
A \arrow[r, hook] \arrow[d] &
B \arrow[d] \arrow[dr,"f"]
\\
C \arrow[r] & D \arrow[r,"f_2"'] & E \arrow[r] & F
\end{tikzcd}
\end{document}
我对斜箭头有些不满,换个锚点效果会更好。你可以先用简单的方法起草图表,最后再留出一些时间进行微调。
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}[row sep=large]
A \arrow[r, hook] \arrow[d] &
B \arrow[d] \arrow[dr,start anchor=base east,"f"]
\\
C \arrow[r] & D \arrow[r,"f_2"'] & E \arrow[r] & F
\end{tikzcd}
\end{document}
注意hook
箭头和标签是如何指定的;标签结尾处的单引号"
表示标签应该位于箭头的右侧(默认是左侧,与河流的确定方式相同,即面向末端)。