tikzcd 中的倾斜标签

tikzcd 中的倾斜标签

我正在使用 tikzcd 绘制自然变换图。但是,我不知道为什么输出结果“歪斜”:

\documentclass{article}
\usepackage{mathrsfs}
\usepackage{tikz-cd}
\begin{document}
\[\begin{tikzcd}
\mathscr{O}(X)^{op}
\arrow[r, bend left, "\Lambda A"]
\arrow[r, bend right, swap, "\Lambda A'"]
\arrow[r, phantom, bend left, shift right=0.2ex, ""{name=U}]
\arrow[r, phantom, bend right, shift left=0.2ex, swap, ""{name=D}]
&\textbf{Set}
\arrow[Rightarrow, from=U, to=D, "\Lambda f"]
\end{tikzcd}\]
\end{document}

我得到了以下扭曲的输出: 在此处输入图片描述

现在与类似的代码进行比较:

\documentclass{article}
\usepackage{mathrsfs}
\usepackage{tikz-cd}
\begin{document}
\[\begin{tikzcd}
\mathscr{A}
\arrow[r, bend left, "F"]
\arrow[r, bend right, swap, "G"]
\arrow[r, phantom, bend left, shift right=0.2ex, ""{name=U}]
\arrow[r, phantom, bend right, shift left=0.2ex, swap, ""{name=D}]
&\mathscr{B}
\arrow[Rightarrow, from=U, to=D, "\alpha"]
\end{tikzcd}\]
\end{document}

它给出了一个漂亮的输出:

在此处输入图片描述

有没有什么办法可以解决这个问题?

答案1

问题是 的高度和宽度\mathscr{O}(X)^{op}与 的高度和宽度不同\textbf{Set}

在此处输入图片描述

tikz-cd当这些框的大小不一样时,箭头会不均匀地弯曲,这会影响箭头标签的定位以及U和的放置D

一种方法是使用为不可见的框提供\textbf{Set}与 完全相同的框。\mathscr{O}(X)^{op}\rlap\textbf{Set}\mathscr{O}(X)^{op}\phantom

在此处输入图片描述

我之前添加了一个空格,Set因为我认为这样看起来更好。您可以根据自己的喜好删除或调整。此外,除了使用两个幻影箭头外,您还可以使用name箭头上方或下方的空格,就像我在下面的代码中所做的那样。如果您希望中心箭头更靠近弯曲箭头,您可以使用shorten <=负值shorten >=

\[\begin{tikzcd}
\mathscr{O}(X)^{op}
\arrow[r, bend left, "\Lambda A", ""{name=U, below}]
\arrow[r, bend right, swap, "\Lambda A'", ""{name=D, above}]
&\rlap{\textbf{\ Set}}\phantom{\mathscr{O}(X)^{op}}
\arrow[Rightarrow, from=U, to=D, "\Lambda f"]
\end{tikzcd}\]

答案2

手动调整箭头标签位置:

\documentclass{standalone}%article
\usepackage{mathrsfs}
\usepackage{tikz-cd}

\begin{document}
%\[
\begin{tikzcd}
\mathscr{O}(X)^{op}
    \ar[r, bend  left, pos=0.47, "\Lambda A"]
    \ar[r, bend right, pos=0.47, swap, "\Lambda A'"]
    \ar[r, phantom, bend left, ""{name=U}]
    \ar[r, phantom, bend right, pos=0.47, ""{name=D}]
        &   \textbf{Set}
                \ar[Rightarrow, from=U, to=D, "\Lambda f"]
\end{tikzcd}
%\]
\end{document}

在此处输入图片描述

答案3

我的建议是使用xy带有选项的包(用于交换图)2cell

\documentclass[12pt]{article}
\usepackage{amssymb}
\usepackage[cmtip,all,2cell]{xy}
\UseTwocells
\usepackage{mathrsfs}
\begin{document}
\[\xymatrix@R=3pc@C=3pc{\mathscr{O}(X)^{op}\rtwocell<7>^{\Lambda A}_{\Lambda A'}{\mkern15mu\Lambda f} &\textbf{Set}}\]
\end{document}

在此处输入图片描述

相关内容