有誰知道如何讓這個交換圖看起來更好

有誰知道如何讓這個交換圖看起來更好

您好,我正在嘗試繪製一個長的精確序列,重要的是術語以三為單位出現。不幸的是,結果看起來很糟糕,有人知道如何讓它看起來更好嗎?特別是對角箭頭看起來很噁心,有沒有辦法彎曲它們或讓它們看起來更好?同樣在第三行中,我放置了“...”來覆蓋之間的術語,但這看起來很糟糕,並且對角線箭頭不會均勻地排列自己。任何建議將非常感激:)

我正在使用 xy pic,這是我的程式碼:

我們相對長的精確序列由下式給出

\[ 
\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} \]

這是它的樣子

在此輸入影像描述

(我使用雙列間距來填充頁面空間)

答案1

這是使用更現代和多功能的選項tikz-cd,以防萬一您想切換:

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

在此輸入影像描述

請注意,使用column sep=<length>您可以更好地控制列的分隔。我在範例程式碼中將其註解掉,以向您展示如何根據您的喜好更改它。

我無恥地借用了\plholdegreg's answer

答案2

您可以透過使點佔據與它們所替換的物件一樣多的水平和垂直空間來改進它;彎曲箭頭對我沒有吸引力。

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

請注意,透過作用於列分隔而不是跳過空列,您可以更好地控制寬度。

在此輸入影像描述

相關內容