Etichette storte in tikzcd
Stavo disegnando un diagramma sulla trasformazione naturale usando tikzcd. Tuttavia, non so perché l'output fosse "storto":
\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}
Ho ottenuto il seguente output distorta:
Ora rispetto a un codice simile:
\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}
E dà un bellissimo risultato:
C'è un modo per risolvere questo problema?
Risposte
Con la modifica manuale delle posizioni delle etichette delle frecce:
\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}
Il problema è che l'altezza e la larghezza di \mathscr{O}(X)^{op}sono diverse dall'altezza e dalla larghezza di \textbf{Set}.
tikz-cdpiega le frecce in modo diseguale quando le caselle non hanno le stesse dimensioni, il che influisce sul posizionamento delle etichette delle frecce e sul posizionamento di Ue D.
Un modo per dare \textbf{Set}la stessa scatola esattamente come \mathscr{O}(X)^{op}è quello \rlapdella \textbf{Set}con un invisibile \mathscr{O}(X)^{op}utilizzando \phantom.
Ho aggiunto uno spazio in precedenza Setperché pensavo fosse migliore in quel modo. Puoi rimuovere o regolare a tuo piacimento. Inoltre, invece di usare le due frecce fantasma, puoi namelo spazio sopra o sotto la freccia, come ho fatto nel codice qui sotto. Se vuoi che la freccia centrale sia più vicina alle frecce curve puoi usare shorten <=e shorten >=con valori negativi.
\[\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}\]