
xy-pic
2개 셀과 동일한 방식 으로 구형 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}