我正在使用 XY-pic 绘制一个带有双曲线箭头的简单图形(xyguide 中练习 5 的简单版本)。看来,当条目的长度不同时,曲线箭头会变得不对称。以下示例显示了这个问题:在第一行中,曲线箭头是对称的(因为条目的长度相同);在第二行中,曲线箭头是不对称的。
\documentclass{article}
\usepackage[all]{xy}
\begin{document}
\xymatrix{%
X\ar@/^/@{->}[rr]&&X\ar@/^/@{->}[ll]\\
XXXXX\ar@/^/@{->}[rr]&&X\ar@/^/@{->}[ll]
}
\end{document}
有没有办法使弯曲的箭头对称?
答案1
答案2
这不是一个 Xy-pic 答案,而是一个tikz-cd
表明解决这个问题相当容易的答案。
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}[column sep=huge]
X \arrow[r,bend left=12] & X \arrow[l,bend left=12]
\\
XXXXX
\arrow[
r,
bend left=12,
start anchor={[yshift=.5ex]east},
end anchor={[yshift=.5ex]west},
]
&
X
\arrow[
l,
bend left=12,
start anchor={[yshift=-.5ex]west},
end anchor={[yshift=-.5ex]east},
]
\end{tikzcd}
\end{document}
答案3
以下是我的想法:
\xymatrix{%
X\ar@/^/@{->}@<.5ex>[]+R;[rr]+L&&X\ar@/^/@{->}@<.5ex>[]+L;[ll]+R \\
XXXXX\ar@/^/@{->}@<.5ex>[]+R;[rr]+L&&X\ar@/^/@{->}@<.5ex>[]+L;[ll]+R
}
关键是将每个锚点锚定在源节点和目标节点(或)的右侧( []+R;
)或左侧( ) 。然后,为了防止两个箭头击中完全相同的点,将它们稍微偏移一点()。[]+L;
[rr]+L
[ll]+R
@<.5ex>