![当你制作大量图表时使用 tikz 的有效方法](https://linux22.com/image/320892/%E5%BD%93%E4%BD%A0%E5%88%B6%E4%BD%9C%E5%A4%A7%E9%87%8F%E5%9B%BE%E8%A1%A8%E6%97%B6%E4%BD%BF%E7%94%A8%20tikz%20%E7%9A%84%E6%9C%89%E6%95%88%E6%96%B9%E6%B3%95.png)
答案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)
}
快速构建一对态射。