如何在箭头之间制作一个不倾斜的箭头?

如何在箭头之间制作一个不倾斜的箭头?

我正在尝试制作一个箭头之间带有箭头的图表。

目前的样子如下:

在此处输入图片描述

使用代码:

\begin{tikzcd}
& a \arrow[ld, "Rei"', no head, ""{name=r1}] \arrow[rd, "Rei", no head, ""{name=r2}] &                                \\
b \arrow["Neu"', no head, loop, distance=2em, in=305, out=235] &
& c \arrow[d, "PosRes", no head] \\
&                                                           & d
& \arrow[no head, from=r1, to=r2, dashed]
\end{tikzcd}

我希望虚线是直线。在我看来,这是因为箭头“指向”最右边“Rei”箭头的标签。我希望它指向它的中心,这样线就是直线。但是,我找不到如何做到这一点。有没有一种通用的方法来指定“箭头之间的箭头”应该指向每个箭头的中心(而不是标签)?如果没有,有什么好的方法可以实现这一点?

答案1

您可以将坐标指定为与 高度相同但低于 的to点。此外,您还可以使用(和,如果需要)来调整长度。类似于。r1r2shorten >shorten <to=r1-|r2, shorten >=0.5em

在此处输入图片描述

\documentclass{article}

\usepackage{tikz-cd}

\begin{document}
\begin{tikzcd}
& a \arrow[ld, "Rei"', no head, ""{name=r1}] \arrow[rd, "Rei", no head, ""{name=r2}] &                                \\
b \arrow["Neu"', no head, loop, distance=2em, in=305, out=235] &
& c \arrow[d, "PosRes", no head] \\
&                                                           & d
& \arrow[no head, from=r1, to=r1-|r2, dashed,shorten >=0.5em]
\end{tikzcd}
\end{document}

答案2

几乎与@gernot 的答案相同(+1,他打败了我一分钟,但我的代码稍微短一点):

\documentclass{standalone}
\usepackage{tikz-cd}

\begin{document}
    \begin{tikzcd}[arrows=-]
    & a \arrow[ld, "\mathrm{Rei}"', ""{name=r1}] 
        \arrow[rd, "\mathrm{Rei}" , ""{name=r2}] 
        &                                \\
b \arrow["\mathrm{Neu}"', loop, distance=2em, in=305, out=235] 
    &
        & c \arrow[d, "\mathrm{PosRes}"] \\
    &   & d
        & \arrow[from=r1, to=r2 |-r1, dashed, shorten >=0.5em]
    \end{tikzcd}
\end{document}

在此处输入图片描述

答案3

我的代码是与标签无关的,也是被遗忘的包可以执行与相同的代码tikz-cd。这是我的 MWE:

\documentclass[a4paper,12pt]{article}
\usepackage{mathtools}
\usepackage[all]{xy}
\begin{document}
\xymatrix@R=3pc@C=4pc{\ar @{} [dr] |{\hspace{2.1cm} -------}
& a \ar@{-}[dl]_{\mathrm{Rei}} \ar@{-}[dr]^{\mathrm{Rei}}& \\
b \ar@{-}@(dl,dr)_{\mathrm{Neu}}& & c \ar@{-}[d]^{\mathrm{Pos\,Res}}\\
 &  & d
}
\end{document}

这条线是正确的……如果你放大,你就会得到直线。

在此处输入图片描述

相关内容