Diagramas globulares de 3 células e superiores em xy-pic

Diagramas globulares de 3 células e superiores em xy-pic

Existe uma maneira agradável/padronizada de formatar células globulares de 3 células da xy-picmesma maneira que fazemos com 2 células?

Para 2 células o comando \rtwocell gera as setas necessárias e uma modificação que permite digitar\rncell números naturais n seria incrível para escrever artigos de teoria de categorias enLabPáginas.

Achei umpáginadescrevendo como definir células globulares de 3 células em 2004, mas xy-picparece ter mudado significativamente a sintaxe desde então (ou pelo menos sou muito inexperiente para ler o código lá e traduzi-lo para algo que funcione na minha versão do xy-pic). Alguém com mais conhecimento em LaTeX pode renovar esses códigos para funcionar com xy-picsintaxe moderna?

Qualquer estratégia que generalize para células superiores com setas entre setas entre setas entre... seria linda, mas uma solução para 3 células ainda é muito apreciada. Observe também que tikzas soluções serão um tanto incompreensíveis para mim devido à falta de familiaridade com a sintaxe, no entanto, se não houver xy-picsolução (e nenhum bom samaritano disposto a criar uma) e tikztiver uma solução elegante em mãos, posso aprender algumas coisas novas sintaxe e usar um tikzdiagrama.


O seguinte código

\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 \\ & }

gera o diagrama abaixo

e é relativamente simples (mas demorado) generalizar ainda mais, mas isso é bastante complicado e demorado para diagramas maiores, portanto, uma solução mais elegante ainda seria muito apreciada.

Responder1

Comtikz-cdnão é difícil.

Os &são usados ​​para separar as células (e \\para separar as linhas, se você tiver mais linhas).

\arrow[rr, bend left=40, "F", ""{name=U}]significa "desenhar uma seta, dobrada para a esquerda em 40 graus, com a etiqueta "F" e chamar o ponto médio de "U"."

\arrow[Rightarrow, "\Theta", shorten <=2pt, shorten >=2pt, bend left=40, from=U, to=D]significa "desenhar uma seta para a direita, rotulando-a com \Theta, encurtando um pouco (2pt) a ponta e a cauda da flecha, dobrando para a esquerda do ponto denominado "U" até o ponto denominado "D"."

Não sei nada sobre diagramas globulares, acabei de escrever um exemplo de como usar o tikz-cd.

Editar:para casos peculiares, uma solução TikZ pura pode ser conveniente.

Eu adicionei um com um TikZ matrix. Se você usar sem carregar tikz-cd, terá que carregar \usetikzlibrary{matrix}.

Você pode consultar as células da matriz com matrixname-rownumber-columnnumber.

\node[above=16pt of mymatr, inner sep=12pt] (UP) {};significa "posicionar o nó UP16pt acima de mymatr, como o nó tem um texto vazio, atribuí-lhe uma altura com inner sep=12pt."

\draw[double distance=2pt, -{Implies}] (UP.south) -- (DOWN.north);significa "desenhar uma flecha, com Impliesponta de seta, e com distância de 2pt entre as duas fileiras de setas, entre o ponto sul do nó UPe o ponto norte do ponto DOWN."

\draw ([xshift=-10pt]UP.south) edge[bend right=60, double distance=2pt, -{Implies}] ([xshift=-10pt]DOWN.north);significa "desenhar uma Impliesseta, dobrada para a direita em 60 graus, de um ponto deslocado horizontalmente -10pt de UP.southpara um ponto deslocado horizontalmente -10pt de 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}

insira a descrição da imagem aqui

informação relacionada