tikz-cd 箭头的奇怪行为及描述

tikz-cd 箭头的奇怪行为及描述

当我回答另一个问题,我发现了一个装饰的奇怪行为tikz-cd

如果你观察下面的图片,你会发现所有的三角形的尖端都朝向箭尾,除了箭头上的三角形C <-- D(而description定义是相同的):

在此处输入图片描述

在我的回答中,我用 解决了这个问题xscale=-1,但我想知道这是否是一个错误或者我做错了什么。

\documentclass[a4paper]{article}
\usepackage{amsmath,amssymb}
\usepackage{tikz}
\usetikzlibrary{cd}
\usepackage{stackengine}
\newcommand{\mytri}{\stackinset{c}{}{c}{}{$\vartriangleleft$}{\textcolor{white}{$\blacktriangleleft$}}}
\tikzset{
    triarrow/.style ={"\mytri" {description, inner sep=-1pt}, sloped},
}

\begin{document}
    \begin{center}
        \begin{tikzcd}[column sep=large, row sep=large]
            A \arrow[r, rightarrowtail, triarrow] 
              \arrow[d, rightarrowtail, triarrow] & 
            B \arrow[dr, rightarrowtail, triarrow] \\
            C \arrow[ur, rightarrowtail,  triarrow] &
            D \arrow[l, rightarrowtail,  triarrow]
              \arrow[u, rightarrowtail,  triarrow] & 
            E
        \end{tikzcd} 
    \end{center}
\end{document}

答案1

诀窍是allow upside down与一起使用sloped

正如键名所示,sloped将旋转 a node,使其基线与曲线连接点处的切线平行。通常 TiZ 会在 θ 和 θ+180 之间做出选择,这样读者就不必太用力地扭脖子。另一方面,allow upside down会关闭这个机制。

除此之外,还可以使用node,这是一个纯粹的图形方法

\documentclass[a4paper]{article}
\usepackage{amsmath,amssymb}
\usepackage{tikz}
\usetikzlibrary{cd,decorations.markings}
\tikzset{
    triarrow/.style={
        >->,
        postaction={decorate,-},
        decoration={
            markings,
            mark=at position .5 with {
                \arrowreversed{Triangle[fill=white]}
            }
        }
    }
}

\begin{document}
    \begin{center}
        \begin{tikzcd}[column sep=large, row sep=large]
            A \rar[triarrow] 
              \dar[triarrow] & 
            B \drar[triarrow] \\
            C \urar[triarrow] &
            D \lar[triarrow]
              \uar[triarrow] & 
            E
        \end{tikzcd} 
    \end{center}
\end{document}

相关内容