Setas triplas em tikz e tikz-cd

Setas triplas em tikz e tikz-cd

Eu tenho uma macro para desenhar diagramas bastante complicados no tikz que faz uso de pgfkeys para ser o mais flexível possível nas setas, rótulos e seus estilos. Eu permito todos os comandos da bibliotecacd. O que eu precisaria é de um parâmetro/opção, como Rrightarrowo dosoupacote, que posso passar como pgfkey que pode desenhar setas triplas (ou até quádruplas), exatamente como posso passar os parâmetros leftarrow, Rightarrow, equal, squiggly, ...

Os seguintes tópicosLinhas triplas em tikzeEixo de flecha fantasiado em tikzcontém algum código bonito indo nessa direção, mas não consigo comprimi-los em uma opção de estilo de seta tikz-cd. Acho que entendi o código do (segunda resposta do) segundo link, onde, para fornecer uma seta 3 ou uma seta 4, duas setas diferentes são sobrepostas. Como as setas da minha macro estão fixas, não posso usar esta solução. Acho que o código do primeiro link poderia ser usado para fornecer uma solução satisfatória, mas: ainda não conheço muito tikz (sempre usei o tikzcd), nos comentários parecem sugerir que adicionar uma ponta de seta para uma linha tripla é difícil. Tentei brincar um pouco com o código, modificando o que acho que deveria ser arriscado, mas não consegui produzir nada de concreto.

Responder1

Você pode fazer conforme sugerido nos links mostrados. Um ponto um pouco sutil é que a seta não é respeitada automaticamente, então você precisa encurtar quadrupleum pouco o caminho da linha dupla na seta. (É claro que você pode fazer ajustes finos, double distanceetc.) Setas onduladas podem ser obtidas com decorações como coil, por favor, deixe-me saber se quiser que eu adicione um exemplo.

\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\tikzset{Rightarrow/.style={double equal sign distance,>={Implies},->},
triple/.style={-,preaction={draw,Rightarrow}},
quadruple/.style={preaction={draw,Rightarrow,shorten >=0pt},shorten >=1pt,-,double,double
distance=0.2pt}}
\begin{tikzcd}
    a \arrow[r,triple] &    b  \arrow[r,quadruple] 
    & c\\
\end{tikzcd}
\end{document}

insira a descrição da imagem aqui

Responder2

Agora existe um lindo pacote,tikz-nfoldpor Jonathan Schulz, fornecendo uma solução simples para este problema. Você pode especificar o estilo de seta TikZ scaling nfold=3(ou simplesmente nfold=3se deseja uma largura de seta fixa) para desenhar uma seta tripla e da mesma forma para setas mais altas.

Na minha experiência, isso produz setas esteticamente mais agradáveis ​​do que outras soluções e é compatível com vários outros estilos TikZ comuns em diagramas comutativos.

Exemplo:

\documentclass{article}

\usepackage{tikz-cd}
\usetikzlibrary{nfold}

\begin{document}

\begin{tikzcd}
    A \arrow[r, Rightarrow, scaling nfold=3] & B \\
    C \arrow[r, Rightarrow, nfold=3] & D
\end{tikzcd}

\end{document}

Produz:

duas setas triplas

informação relacionada