我想知道如何在 中绘制典型的函子图(下图)tikz-cd
。我知道如何绘制交换图,但我不知道如何\mapsto
在垂直箭头之间绘制短箭头以及映射箭头。在此先感谢您的帮助。
编辑(产生错误的代码,即ngerman
包):
\documentclass{amsart}
%Standardpakete
\usepackage{amsmath}
\usepackage[ngerman]{babel}
\usepackage{tikz-cd}
\begin{document}
$$
\begin{tikzcd}
\mathsf{C}^{\mathsf{op}} \arrow[rr, "F"] & & \mathsf{D} \\
c \arrow[dd, "f"'] & \mapsto & Fc \\
& \mapsto & \\
c' & \mapsto & Fc' \arrow[uu, "Ff"']
\end{tikzcd}
$$
\end{document}
答案1
像这样吗?
\documentclass[a4paper,12pt]{article}
\usepackage{newtxtext,newtxmath}
\usepackage{mathtools}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
\mathsf{C}^{\mathsf{op}} \arrow[rr, "F"] & & \mathsf{D} \\
c \arrow[dd, "f"'] & \mapsto & Fc \\
& \mapsto & \\
c' & \mapsto & Fc' \arrow[uu, "Ff"']
\end{tikzcd}
\end{document}
根据用户要求进行附录。我认为问题出在ngerman
Babel 上。你可以修复它,
\usetikzlibrary{babel}
\documentclass{amsart}
%Standardpakete
\usepackage{amsmath}
\usepackage[ngerman]{babel}
\usepackage{tikz-cd}
\usetikzlibrary{babel}
\begin{document}
\[
\begin{tikzcd}
\mathsf{C}^{\mathsf{op}} \arrow[rr, "F"] & & \mathsf{D} \\
c \arrow[dd, "f"'] & \mapsto & Fc \\
& \mapsto & \\
c' & \mapsto & Fc' \arrow[uu, "Ff"']
\end{tikzcd}
\]
\end{document}
答案2
作为替代方案塞巴斯蒂亚诺很棒的答案,可以命名箭头f
并Ff
并在它们之间添加一个箭头,然后shorten
箭头:
\begin{tikzcd}[column sep=large, row sep=tiny]
\mathsf{C}^{\mathsf{op}} \arrow[r, "F"] & \mathsf{D} \\
c \arrow[d, "f"'{name=f}]\arrow[r,mapsto] & Fc \\[5ex]
c'\arrow[r,mapsto] & Fc' \arrow[u, "Ff"'{name=Ff}]
\arrow[mapsto,from=f, to=Ff,shorten=0.7em]
\end{tikzcd}
另一个选择是在图表内部添加一个空的箭头名称,然后像以前一样添加箭头
\begin{tikzcd}[column sep=large, row sep=tiny]
\mathsf{C}^{\mathsf{op}} \arrow[r, "F"] & \mathsf{D} \\
c \arrow[d, "f"', ""{name=f}]\arrow[r,mapsto] & Fc \\[5ex]
c'\arrow[r,mapsto] & Fc' \arrow[u, "Ff"', ""{name=Ff}]
\arrow[mapsto,from=f, to=Ff]
\end{tikzcd}