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