ป้ายเบ้ใน tikzcd

Oct 09 2020

ฉันกำลังวาดแผนภาพเกี่ยวกับการเปลี่ยนแปลงตามธรรมชาติโดยใช้ 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}

และให้ผลลัพธ์ที่สวยงาม:

มีวิธีแก้ไขปัญหานี้หรือไม่?

คำตอบ

2 Zarko Oct 09 2020 at 11:52

ด้วยการปรับแต่งตำแหน่งป้ายลูกศรด้วยตนเอง:

\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

ปัญหาก็คือความสูงและความกว้างของความแตกต่างจากความสูงและความกว้างของ\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}\]