当我回答另一个问题,我发现了一个装饰的奇怪行为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
,使其基线与曲线连接点处的切线平行。通常 Ti钾Z 会在 θ 和 θ+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}