xy-pic의 구형 3셀 이상의 다이어그램

xy-pic의 구형 3셀 이상의 다이어그램

xy-pic2개 셀과 동일한 방식 으로 구형 3개 셀의 형식을 지정하는 훌륭하고 표준화된 방법이 있습니까 ?

2셀의 경우 명령은 \rtwocell 필요한 화살표를 생성하며 \rncell자연수 n을 입력할 수 있는 수정은 범주 이론 논문을 작성하는 데 매우 유용할 것입니다.엔랩페이지.

나는 찾았다페이지2004년에 구형 3-셀을 정의하는 방법을 설명했지만 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}]"F"라는 레이블을 사용하여 왼쪽으로 40도 구부러진 화살표를 그리고 중간 지점을 "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" 화살표 끝이 있고 화살표의 두 행 사이, 노드의 남쪽 지점 UP과 지점의 북쪽 지점 사이에 2pt 거리를 두고 화살표를 그립니다 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}

여기에 이미지 설명을 입력하세요

관련 정보