我想画一个箭头(A)在两个箭头之间(乙和C)在 tikz-cd 中,这样A直接接触两者乙和C,如下图所示。
下面的代码看起来像是对该图的合理尝试,但它是不对称的:中间箭头没有触及下面的箭头。
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
\bullet && \bullet
\arrow[""{name=0}, from=1-1, to=1-3, bend left]
\arrow[""{name=1}, from=1-1, to=1-3, bend right]
\arrow[from=0, to=1]
\end{tikzcd}
\begin{tikzcd}
\bullet && \bullet
\arrow[""{name=0}, from=1-1, to=1-3, bend left]
\arrow[""{name=1}, from=1-1, to=1-3, bend right]
\arrow[from=1, to=0]
\end{tikzcd}
\end{document}
结果如下:
(为了进行比较,下面这个例子中的中间箭头指向相反的方向。这表明问题在于下面的箭头,而不是目标箭头。)
为什么会发生这种情况?我该如何解决?
请注意,我确实不是想要简单地将shorten
中间箭头的长度设为负数:解决方案必须适用于任何一对箭头,我不想猜测要将中间箭头缩短多少。(此外,在某些情况下,我想对称地缩短中间箭头,如果一个方向必须进行额外的调整,这会很尴尬。)
答案1
这是由于下方箭头上方的标签文本为空造成的。""{name=1}
用""{name=1, below}
排版替换箭头下方的标签文本,即可解决您的问题。
tikzcd
请参阅手册第 2.3 节中的最后两个示例箭头的绝对位置。
完整示例:
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
\bullet && \bullet
\arrow[""{name=0}, from=1-1, to=1-3, bend left]
\arrow[""{name=1, below}, from=1-1, to=1-3, bend right]
\arrow[from=0, to=1]
\end{tikzcd}
\begin{tikzcd}
\bullet && \bullet
\arrow[""{name=0}, from=1-1, to=1-3, bend left]
\arrow[""{name=1, below}, from=1-1, to=1-3, bend right]
\arrow[from=1, to=0]
\end{tikzcd}
\end{document}