xy 包中的水平错位标签

xy 包中的水平错位标签

我已经回答过这个问题, 带有变换画布的交换图中的长箭头 使用这个 MWE:

\documentclass[a4paper,12pt]{article}
\usepackage[cmtip,all]{xy}
\labelmargin-{1pt}
\begin{document}
\xymatrix@R=1.5cm@C=2cm{
 A \ar@<.5ex>[r]^{f} \ar@<.5ex>[d]^{g}& \ar@<.5ex>[l]^{h} B\ar@<.5ex>[dl]\\
 C \ar@<.5ex>[u]^{r} \ar@<.5ex>[ur] & 
 }
\end{document}

在此处输入图片描述

为什么r标签g不能像垂直标签那样水平对齐?

答案1

我会在任一标签中使用`\mathstrut,因此对齐方式与所使用的字母无关,都是相同的。

\documentclass[a4paper,12pt]{article}
\usepackage[cmtip,all]{xy}

\begin{document}

\xymatrix@R=1.5cm@C=2cm{
 A \ar@<.5ex>[r]^{f} \ar@<.5ex>[d]^{\mathstrut g}& \ar@<.5ex>[l]^{h} B\ar@<.5ex>[dl]\\
 C \ar@<.5ex>[u]^{\mathstrut r} \ar@<.5ex>[ur] &
 }

\end{document}

图片

相同之处tikz-cd

\documentclass[a4paper,12pt]{article}
\usepackage{tikz-cd}

\begin{document}

\begin{tikzcd}[sep=huge]
 A \arrow[r,shift left=0.5ex,"f"] \arrow[d,shift left=0.5ex,"\mathstrut g"] &
 B \arrow[l,shift left=0.5ex,"h"] \arrow[dl,shift left=0.5ex] \\
 C \arrow[u,shift left=0.5ex,"\mathstrut r"] \arrow[ur,shift left=0.5ex] 
 \end{tikzcd}

\end{document}

在此处输入图片描述

答案2

根据非常好的用户 @barbara beeton 的建议,我添加了您的解决方案(通过您的评论):

1.使用\vphantom

\documentclass[a4paper,12pt]{article}
\usepackage[cmtip,all]{xy}
\labelmargin-{1pt}
\begin{document}
\xymatrix@R=1.5cm@C=2cm{
 A \ar@<.5ex>[r]^{f} \ar@<.5ex>[d]^{g}& \ar@<.5ex>[l]^{h} B\ar@<.5ex>[dl]\\
 C \ar@<.5ex>[u]^{r\vphantom{g}} \ar@<.5ex>[ur] & 
 }
\end{document}

在此处输入图片描述

2.或使用\smash[b]{g}

\documentclass[a4paper,12pt]{article}
\usepackage{mathtools}

\usepackage[cmtip,all]{xy}
\labelmargin-{1pt}
\begin{document}
\xymatrix@R=1.5cm@C=2cm{
 A \ar@<.5ex>[r]^{f} \ar@<.5ex>[d]^{\smash[b]{g}}& \ar@<.5ex>[l]^{h} B\ar@<.5ex>[dl]\\
 C \ar@<.5ex>[u]^{r} \ar@<.5ex>[ur] & 
 }
\end{document}

在此处输入图片描述

相关内容