答案1
这很容易做到tikzcd
。
\documentclass[border=20]{standalone}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
X_1\arrow[rr, "f_{12}"]\arrow[dr, "f_{13}"]\arrow[dd, "h_1", swap] & & X_2 \arrow[dr, "f_{24}"]\arrow[dd, "h_2", near end] & \\
& X_3 \arrow[rr, "f_{34}", crossing over, near start] & & X_4 \arrow[dd, "h_4"] \\
Y_1 \arrow[rr, "g_{12}", near end]\arrow[dr, "g_{13}"] & & Y_2\arrow[dr, "g_{24}"] & \\
& Y_3\arrow[rr, "g_{34}"] \arrow[from=uu, "h_3", crossing over, near start, swap] & & Y_4.
\end{tikzcd}
\end{document}
本质上这是一个节点矩阵(其中一些节点为空,& &
中间没有任何内容)。然后使用\arrow
命令添加箭头。它有许多可选参数,这里使用的参数是
rr
,,dd
等dr
代表“右右”、“下下”、“右下”等。请注意,需要两个方向,因为每个标记节点之间都有一个空白节点。- 一些标签
""
swap
将标签放在箭头的另一侧near start
或者near end
将标签放在箭头的起点或终点附近(默认是中间)crossing over
这个箭头在另一个箭头的上方交叉,请注意,箭头的绘制顺序对于这个箭头来说很重要,这就是为什么我们需要下一个命令from=
默认从当前节点沿给定方向绘制箭头。这会从方向向当前节点绘制箭头(即反向)。这很有用,因为它允许您在顺序很重要时延迟/向前绘制箭头。