بسته tikz خیلی قابلیت داره و میتونید تمام این کارها رو با این بسته انجام دهید. برای نمونه، کار شما رو میشه به راحتی با کد زیر انجام داد:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[node distance = 1.5cm and 2cm]
\node(zero) {$0$} ;
\node[right= of zero] (A_p) {$A'$} ;
\node[right= of A_p] (A) {$A$} ;
\node[right= of A] (A_z) {$A''$} ;
\node[right= of A_z] (zero2) {$0$} ;
\node[above = of A_z] (P) {$P$} ;
\draw[->](zero) -- (A_p) ;
\draw[->](A_p) -- node[below]{$i$}(A) ;
\draw[->](A) -- node[below]{$\tau$}(A_z) ;
\draw[->](A_z) -- (zero2) ;
\draw[->,dashed](P) -- (A_p) ;
\draw[->](P) -- node[right]{$i$}(A_z) ;
\end{tikzpicture}
\end{document}
کاری که من انجام دادم اینه که ابتدا یک سری گره (node) تعریف کردم که مکان آنها را نسبت به هم در داخل براکت دادم. بعد هم بین گرهها پیکانهایی رسم کرده ام و در میانه پیکانها دوباره گرههایی تعریف کردم که بر روی آن مشخصات پیکان نوشته شده است. خروجی کد فوق هم به شکل زیر هست:
برای اطلاع بیشتر از نحوه استفاده از بسته tikz به مستندات خیلی خوب آن مراجعه کنید.