答案1
我建议你使用tikz-cd
。此包基于 TikZ 构建,专门用于绘制交换图。它非常通用,提供了很多自定义可能性,并且语法非常简洁方便;此外,您可以使用各种箭头(您拥有通常在这些图中发现的所有标准箭头),并且可以在需要时使用 TikZ 的所有功能。
以下是您问题中的图表的简单演示:
\documentclass{article}
\usepackage{tikz-cd}
\usepackage{amsmath}
\usepackage{mleftright}
\DeclareMathOperator{\Ker}{ker}
\newcommand\TwoMor[2]{
\mleft(\begin{smallmatrix}#1 \\ #2\end{smallmatrix}\mright)
}
\begin{document}
\begin{tikzcd}[row sep=2cm,column sep=1.5cm]
X
\ar[dr,dotted,"w"]
\ar[ddr,"v",swap]
\ar[drr,"u"]
& & &
\\
&
\Ker\TwoMor{f}{g}
\ar[r,dotted,"b'"]
\ar[d,dotted,"a'",swap]
\ar[dr,rightarrowtail,"k"]
&
B
\ar[d,rightarrowtail,"b"]
\\
&
A
\ar[r,"a",swap]
&
C
\ar[r,"f"]
\ar[d,"g",swap]
\ar[dr,"\TwoMor{f}{g}"]
&
D
\\
& &
E
&
D\times E
\ar[u,"p_{D}",swap]
\ar[l,"p_{E}"]
\end{tikzcd}
\end{document}
正如您在问题中所建议的那样,我不会为图表本身定义命令,而是宁愿为图表中经常使用的元素定义命令;为了举例说明,我定义了\TwoMor
:
\newcommand\TwoMor[2]{
\mleft(\begin{smallmatrix}#1 \\ #2\end{smallmatrix}\mright)
}
快速构建一对态射。