如何在 tikz-cd 中对齐节点并具有相同长度的箭头?

如何在 tikz-cd 中对齐节点并具有相同长度的箭头?

我有一张小型交换图,其中节点的文本长度各不相同。这会导致列之间的箭头长度不同。基本上,我希望列上的每个节点都居中,这样所有箭头的长度都相同。谢谢您的帮助!

\documentclass[12pt]{extarticle}
\usepackage[utf8]{inputenc}
\usepackage{cite, amssymb, amsmath, xcolor, amsfonts, hyperref, ulem, amsthm, enumitem, cleveref, tikz, mathtools,tikz-cd}
\begin{document}
\begin{tikzcd}
A \arrow[d,"\mu_0"] \arrow[r,"\mu_0"] & A\otimes A \arrow[d, 
"\mu_0\otimes\text{Id}"]\\
A\otimes A \arrow[r, "\text{Id}\otimes \mu_0"] & A\otimes A\otimes A
\end{tikzcd}
\end{document}

答案1

基于 的解决方案eqparbox,在通常的框结构中添加标签系统。所有共享相同标签的框都具有相同的宽度(带有此标签的框的自然宽度和最宽的内容)。

无关:您加载的某些软件包已被其他软件包加载,因此我删除了它们。此外,hyperref应作为最后一个软件包加载,只有极少数例外,最值得注意的是cleveref

\documentclass[12pt]{extarticle}
\usepackage[utf8]{inputenc}
\usepackage{cite, mathtools, amssymb, xcolor, ulem, amsthm, enumitem, tikz-cd}
\usepackage{eqparbox}
\newcommand{\eqmathbox}[2][N]{\eqmakebox[#1]{$\displaystyle#2$}}
\usepackage{hyperref, cleveref}

\begin{document}

\begin{tikzcd}
\eqmathbox{A} \arrow[d,"\mu_0"] \arrow[r,"\mu_0"] & \eqmathbox[M]{A\otimes A} \arrow[d,"\mu_0\otimes\mathrm{Id}"]\\
\eqmathbox{A\otimes A} \arrow[r, "\mathrm{Id}\otimes \mu_0"] & \eqmathbox[M]{A\otimes A\otimes A}
\end{tikzcd}

\end{document} 

在此处输入图片描述

答案2

您只需要调整节点的文本宽度。 (在此答案的原始版本中,我忘记将其仅应用于单元格中的节点。 正确的语法是cells={...},而不是nodes={...}将宽度也应用于标签,标签也是节点。)

\documentclass[12pt]{extarticle}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,tikz-cd}
\begin{document}
\begin{tikzcd}[cells={text width={width("$A\otimes A\otimes A$")},align=center},
column sep=4em]
A \arrow[d,"\mu_0"] \arrow[r,"\mu_0"] & A\otimes A \arrow[d, 
"\mu_0\otimes\text{Id}"]\\
A\otimes A \arrow[r, "\text{Id}\otimes \mu_0"] & A\otimes A\otimes A
\end{tikzcd}
\end{document}

在此处输入图片描述

相关内容