Alguém tem idéias sobre como fazer esse diagrama comutativo parecer mais bonito

Alguém tem idéias sobre como fazer esse diagrama comutativo parecer mais bonito

Olá, estou tentando desenhar uma sequência longa e exata e, principalmente, com os termos aparecendo em três. Infelizmente o que sai parece horrível, alguém tem alguma idéia de como torná-lo mais bonito? Especificamente, as setas diagonais parecem desagradáveis. Existem maneiras de dobrá-las ou fazê-las parecer mais bonitas? Também na terceira linha eu estava colocando '...' para cobrir os termos intermediários, mas isso parece ruim e as setas diagonais não se organizam uniformemente. Quaisquer sugestões seriam muito apreciadas :)

Estou usando xy pic, aqui está meu código:

Nossa sequência exata relativamente longa é dada por

\[ 
\xymatrix{
0 \ar[rr] && H^0(M, \Dd M) \ar[rr] && H^0(M) \ar[rr] && H^0(\Dd M) \ar[dllll]  \\
       && H^1(M, \Dd M) \ar[rr] && H^1(M) \ar[rr] && H^1(\Dd M) \ar[dllll]  \\
       && \cdots \ar[rr] && \cdots \ar[rr] && \cdots \ar[dllll] & \\
       && H^n(M, \Dd M) \ar[rr] && H^n(M) \ar[rr] && 0} \]

E aqui está o que parece

insira a descrição da imagem aqui

(Usei espaçamento duplo entre colunas para preencher o espaço da página)

Responder1

Aqui está uma opção usando o mais moderno e versátiltikz-cd, caso você queira mudar:

\documentclass{article}
\usepackage{tikz-cd}
\usepackage{calc}

\newcommand\Dd{\partial}
\tikzset{
Curved/.style={
  rounded corners,to path={ -- ([xshift=2ex]\tikztostart.east)
    |- (#1) [near end]\tikztonodes
    -| ([xshift=-2ex]\tikztotarget.west)
    -- (\tikztotarget)
    }
  }
}
\newcommand{\plhold}[1]{%
  \makebox[\widthof{$#1$}]{$\vphantom{#1}{\cdots}$}%
}

\begin{document}

\begin{tikzcd}%[column sep=2cm]
0 \ar[r] 
  & H^0(M, \Dd M) \ar[r] 
  & H^0(M) \ar[r]\arrow[d, phantom, ""{coordinate, name=A}] 
  & H^0(\Dd M) \arrow[dll,Curved=A]  
\\
& H^1(M, \Dd M) \ar[r] 
  & H^1(M) \ar[r] \arrow[d, phantom, ""{coordinate, name=B}]
  & H^1(\Dd M) \arrow[dll,Curved=B]  
\\
& \plhold{H^n(M, \Dd M)} \ar[r] 
  & \plhold{H^n(M)} \ar[r]\arrow[d, phantom, ""{coordinate, name=C}] 
  & \plhold{H^1(\Dd M)} \arrow[dll,Curved=C] & 
\\
& H^n(M, \Dd M) \ar[r] 
  & H^n(M) \ar[r] 
  & 0 
\end{tikzcd}

\end{document}

insira a descrição da imagem aqui

Observe que usando column sep=<length>você pode ter um controle melhor sobre a separação das colunas. Deixei isso comentado no meu código de exemplo para mostrar como alterá-lo ao seu gosto.

Eu descaradamente peguei emprestada a \plholdmacro deegreg's answer.

Responder2

Você pode melhorá-lo fazendo com que os pontos ocupem tanto espaço horizontal e vertical quanto os objetos que eles substituem; dobrar as flechas não me atrai.

\documentclass{article}
\usepackage{calc}
\usepackage[all,cmtip]{xy}

\newcommand{\Dd}{\partial}
\newcommand{\plhold}[1]{%
  \makebox[\widthof{$#1$}]{$\vphantom{#1}{\cdots}$}%
}

\begin{document}

\[ 
\xymatrix@C+3em{
0 \ar[r]
  & H^0(M, \Dd M) \ar[r] & H^0(M) \ar[r] & H^0(\Dd M) \ar[dll]  \\
  & H^1(M, \Dd M) \ar[r] & H^1(M) \ar[r] & H^1(\Dd M) \ar[dll]  \\
  & \plhold{H^1(M, \Dd M)} \ar[r] & \plhold{H^1(M)} \ar[r] & \plhold{H^1(\Dd M)} \ar[dll] \\
  & H^n(M, \Dd M) \ar[r] & H^n(M) \ar[r] & 0
}
\]

\end{document}

Observe que você obtém melhor controle da largura agindo na separação das colunas em vez de pular colunas vazias.

insira a descrição da imagem aqui

informação relacionada