我遇到了一个问题,对于直接求和,我希望箭头向下,从第一个被加数开始,而不是从中间开始。没问题,我可以 xshift 箭头。但是下一行的目标怎么办。我的即兴解决方案是一个手工制作的幻影盒(只是......)。
\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{tikz}
\usepackage{tikz-cd}
\newcommand*{\ZZ}{\mathbb{Z}}
\begin{document}
\[
\begin{tikzcd}[row sep=small]
{}\rar\arrow[equal]{d} & H_3(V)\oplus H_3(C)\rar \arrow[equal,xshift=-4.5ex]{d}& {}\rar \arrow[equal]{d}{\sim}& {}\arrow[equal]{d}{\sim}\\
0 & 0..............& \ZZ & \ZZ\\
{}\rar& H_2(V)\oplus H_2(C)\rar \arrow[equal,xshift=-4.5ex]{d}& {}\rar \arrow[equal]{d}& {}\arrow[equal]{d}{\sim} \\
{} & 0.............. & 0& \ZZ\oplus \ZZ\\
{}\rar& H_1(V)\oplus H_1(C)\rar \arrow[equal,xshift=-4.5ex]{d}{\sim}& {}\rar& {} \\
& \ZZ.............. & 0 & {}\\
\end{tikzcd}
\]
\end{document}
另一个问题是如何使第二行开始的第一个箭头更短(从更右边开始)。
答案1
有些眼睛计算偏移,但它在这里:
\documentclass{article}
\usepackage{amsmath,amssymb,calc}
\usepackage{tikz-cd}
\newcommand*{\ZZ}{\mathbb{Z}}
\newcommand{\alignfirst}[3]{%
\makebox[\widthof{$#2\oplus#3$}][l]{%
\makebox[\widthof{$#2$}]{$#1$}%
}%
}
\begin{document}
\[
\begin{tikzcd}[row sep=small]
{}\rar\arrow[equal]{d} &
H_3(V)\oplus H_3(C)\rar \arrow[equal,xshift=-2.05em]{d} &
{}\rar \arrow[equal]{d}{\sim} &
{}\arrow[equal]{d}{\sim}
\\
0 & \alignfirst{0}{H_3(V)}{H_3(C)} & \ZZ & \ZZ
\\
{\qquad}\rar& H_2(V)\oplus H_2(C)\rar \arrow[equal,xshift=-2.05em]{d} &
{}\rar \arrow[equal]{d} &
{}\arrow[equal]{d}{\sim}
\\
{} & \alignfirst{0}{H_2(V)}{H_2(C)} & 0 & \ZZ\oplus \ZZ
\\
{\qquad}\rar& H_1(V)\oplus H_1(C)\rar \arrow[equal,xshift=-2.05em]{d}{\sim} &
{}\rar \arrow[equal]{d} & {}
\\
{\qquad} & \alignfirst{\ZZ}{H_1(V)}{H_1(C)} & 0 & {}\\
\end{tikzcd}
\]
\end{document}