ป้ายเบ้ใน 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}
และให้ผลลัพธ์ที่สวยงาม:
มีวิธีแก้ไขปัญหานี้หรือไม่?
คำตอบ
ด้วยการปรับแต่งตำแหน่งป้ายลูกศรด้วยตนเอง:
\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}
ปัญหาก็คือความสูงและความกว้างของความแตกต่างจากความสูงและความกว้างของ\mathscr{O}(X)^{op}\textbf{Set}
tikz-cdลูกศรโค้งอย่างไม่มีที่เปรียบเมื่อกล่องที่ไม่ได้ขนาดเดียวกันซึ่งมีผลต่อการวางตำแหน่งของป้ายลูกศรและการจัดวางของและUD
วิธีการหนึ่งที่จะให้\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}\]