嗨,我正在尝试绘制一个长正合序列,重要的是,其中的项以三个为单位出现。不幸的是,结果看起来很糟糕,有人知道如何让它看起来更漂亮吗?特别是对角箭头看起来很糟糕,有没有办法弯曲它们或让它们看起来更漂亮?此外,在第三行中,我放了“...”来覆盖中间的项,但这看起来很糟糕,而且对角箭头不会均匀排列。任何建议都将不胜感激 :)
我正在使用 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>
可以更好地控制列的分隔。我在示例代码中将其注释掉,以向您展示如何根据自己的喜好进行更改。
我厚颜无耻地借用\plhold
了egreg'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}
请注意,通过操作列分隔而不是跳过空列,您可以更好地控制宽度。