Label miring di tikzcd
Saya menggambar diagram tentang transformasi alam menggunakan tikzcd. Namun, saya tidak tahu mengapa keluarannya "miring":
\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}
Saya mendapatkan hasil miring berikut:
Sekarang jika dibandingkan dengan kode serupa:
\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}
Dan itu memberikan hasil yang indah:
Apakah ada cara untuk memperbaikinya?
Jawaban
Dengan tweak manual posisi label panah:
\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}
Masalahnya adalah tinggi dan lebar \mathscr{O}(X)^{op}berbeda dengan tinggi dan lebar \textbf{Set}.
tikz-cdmembengkokkan panah secara tidak sama saat kotak-kotak itu tidak berukuran sama, yang memengaruhi pemosisian label panah dan penempatan Udan D.
Salah satu cara untuk memberikan \textbf{Set}kotak yang sama persis \mathscr{O}(X)^{op}dengan \rlapyang \textbf{Set}dengan \mathscr{O}(X)^{op}penggunaan tak terlihat \phantom.
Saya menambahkan spasi sebelumnya Setkarena menurut saya tampilannya lebih baik. Anda dapat menghapus atau menyesuaikan dengan keinginan Anda. Selain itu, alih-alih menggunakan dua panah bayangan, Anda dapat namemenggunakan spasi di atas atau di bawah panah, seperti yang saya lakukan pada kode di bawah. Jika Anda ingin panah tengah lebih dekat dengan panah melengkung, Anda dapat menggunakan shorten <=dan shorten >=dengan nilai negatif.
\[\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}\]