用注入箭头写出图表

用注入箭头写出图表

我想要写下面的图表。 在此处输入图片描述

我写了下面的代码,但我无法输出从 $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

您不需要在 tikz 中手动创建图表,而是可以看一下 tikz-cd 包:

\documentclass[border=10pt]{standalone}

\usepackage{tikz-cd}

\begin{document}
\begin{tikzcd}
  A \arrow[r, hook] \arrow[d] & B\arrow[d]\arrow[dr,"f"]\\
  C \arrow[r] & D \arrow[r,"f_1"] & E \arrow[r,"f_2"] & F
\end{tikzcd}
\end{document}

在此处输入图片描述

答案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箭头和标签是如何指定的;标签结尾处的单引号"表示标签应该位于箭头的右侧(默认是左侧,与河流的确定方式相同,即面向末端)。

相关内容