xy-pic 中的球狀 3 細胞和更高圖

xy-pic 中的球狀 3 細胞和更高圖

是否有一種很好/標準化的方法來格式化球狀 3 單元格,就像xy-pic我們處理 2 單元格一樣?

對於 2 個單元格,該命令\rtwocell 產生所需的箭頭,並且允許輸入自然數 n 的修改\rncell對於撰寫範疇論論文和實驗室頁。

我找到了一個早在 2004 年就描述瞭如何定義球狀 3-cells,但xy-pic從那時起語法似乎已經發生了顯著變化(或者至少我還太陌生,無法閱讀那裡的代碼並將其翻譯為在我的版本中工作的東西xy-pic)。更了解 LaTeX 的人可以更新這些程式碼以使用現代xy-pic語法嗎?

任何推廣到更高單元格的策略都會很漂亮,但 3 單元格的解決方案仍然受到高度讚賞。另請注意,tikz由於對語法缺乏熟悉,解決方案對我來說有些難以理解,但是,如果沒有xy-pic解決方案(並且沒有好心的撒瑪利亞人願意創建一個解決方案)並且tikz手頭有一個優雅的解決方案,我可以學習一些新的解決方案語法並使用tikz圖表。


下面的程式碼

\xymatrix@R5mm@C10mm{ & \ar@{=>}@/^.7pc/[dd]^\Theta \ar@{=>}@/_.7pc/[dd]_{\;\;\;\Theta'} \\ A \ar@/^2.0pc/[rr]^F \ar@/_2.1pc/[rr]_G & {\substack{\mathscr{M} \\ \rightsquigarrow}} & B \\ & }

產生下圖

進一步概括起來相對簡單(但耗時),但對於較大的圖表來說,這是相當複雜的,並且非常耗時,因此仍然非常感謝更優雅的解決方案。

答案1

tikz-cd這並不難。

它們&用於分隔單元格(\\如果有更多行,則用於分隔行)。

\arrow[rr, bend left=40, "F", ""{name=U}]意思是“畫一個箭頭,向左彎曲40度,標有“F”,中間點為“U”。”

\arrow[Rightarrow, "\Theta", shorten <=2pt, shorten >=2pt, bend left=40, from=U, to=D]意思是“畫一個右箭頭,用 標記\Theta,將箭頭的尖端和尾部縮短一點(2pt),從稱為“U”的點向左彎曲到稱為“D”的點。”

我對球狀圖一無所知,我只是寫了一個如何使用 的範例tikz-cd

編輯:對於特殊情況,純 TikZ 解決方案可能會很方便。

我添加了一個帶有 TikZ 的matrix。如果不加載就使用tikz-cd,則必須加載\usetikzlibrary{matrix}

您可以使用 來引用矩陣單元matrixname-rownumber-columnnumber

\node[above=16pt of mymatr, inner sep=12pt] (UP) {};意思是“將節點定位UP在 上方 16pt 處mymatr,因為該節點有空文本,所以我用 給它指定了高度inner sep=12pt。”

\draw[double distance=2pt, -{Implies}] (UP.south) -- (DOWN.north);意思是“畫一個箭頭,帶有Implies箭頭尖端,兩行箭頭之間的距離為 2pt,位於節點的南點UP和點 的北點之間DOWN。”

\draw ([xshift=-10pt]UP.south) edge[bend right=60, double distance=2pt, -{Implies}] ([xshift=-10pt]DOWN.north);意思是“Implies從 水平移動 -10pt 的點UP.south到 水平移動 -10pt 的點畫一個向右彎曲 60 度的箭頭DOWN.north。”

\documentclass{article}
\usepackage{amsmath,amsfonts, amssymb}
\usepackage{tikz-cd}
\usetikzlibrary{positioning, arrows.meta}

\begin{document}
    \[
        \begin{tikzcd}
            A
            \arrow[rr, bend left=40, "F", ""{name=U}]
            \arrow[rr, bend right=40, "G", swap, ""{name=D}] 
            & 
            M 
            & 
            B 
            \arrow[rr, bend left=40, "A", ""{name=A}]
            \arrow[rr, bend right=40, "B", swap, ""{name=B}]
            & 
            \Rrightarrow
            & 
            \bullet
            \arrow[Rightarrow, "\Theta", shorten <=2pt, shorten >=2pt, bend left=40, from=U, to=D]
            \arrow[Rightarrow, "\Theta'", shorten <=2pt, shorten >=2pt, bend right=40, swap, from=U, to=D]
            \arrow[Rightarrow, "\Phi", shorten <=2pt, shorten >=2pt, bend left=40, from=A, to=B]
            \arrow[Rightarrow, "\Phi'", shorten <=2pt, shorten >=2pt, bend right=40, swap, from=A, to=B]
        \end{tikzcd}    
    \]
    \[
        \begin{tikzpicture}
            \matrix[matrix of math nodes,
                nodes in empty cells]
                (mymatr) {
                \bullet &[20pt] \Rrightarrow &[10pt] \Rrightarrow &[20pt] \bullet\\
                };
            \node[above=16pt of mymatr, inner sep=12pt] (UP) {};
            \node[below=16pt of mymatr, inner sep=12pt] (DOWN) {};
            \draw[->, rounded corners=40pt] (mymatr-1-1) -- (UP.north) -- (mymatr-1-4);
            \draw[->, rounded corners=40pt] (mymatr-1-1) -- (DOWN.south) -- (mymatr-1-4);
            \draw[double distance=2pt, -{Implies}] (UP.south) -- (DOWN.north);
            \draw ([xshift=10pt]UP.south) edge[bend left=60, double distance=2pt, -{Implies}] ([xshift=10pt]DOWN.north);
            \draw ([xshift=-10pt]UP.south) edge[bend right=60, double distance=2pt, -{Implies}] ([xshift=-10pt]DOWN.north);
        \end{tikzpicture}    
    \]
\end{document}

在此輸入影像描述

相關內容