Label miring di tikzcd

Oct 09 2020

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

2 Zarko Oct 09 2020 at 11:52

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}

2 SandyG Dec 14 2020 at 04:26

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}\]