我的问题类似于这个,但我试图在路径的开头画一个简单的黑色填充菱形,就像在UML 聚合符号。这是一个最小的工作示例:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows, chains, decorations.markings,intersections,calc}
\begin{document}
\begin{tikzpicture}
\node (a) at (0,0) {a};
\node (b) at (2,0) {b};
\path (a.east) to node [near start, yshift=1em] {} (b.west);
\draw [<-,>=diamond] (a.east) -- (b.west);
\end{tikzpicture}
\end{document}
但这会产生一条带有菱形的路径,该路径前面有一个箭头,我该如何摆脱这个箭头?
例如<>---->
变成<>----
更新:
我觉得这种行为是tikzset
由这问题,我的代码中仍然有这个问题。删除它后,我得到了想要的行为。所以我改变了我的问题:是什么原因导致箭头必须出现或消失,我如何在两个版本之间切换?
更新 2: 我用 MWE 更新了问题,并更改了解释以避免一些混淆。MWE 实际上产生了我原始问题的预期结果,我无法重现我在取消的文本中描述的问题。考虑到所有的混淆,我认为实际问题是这样的:
如何生成以下每个 UML 变体以进行聚合看这里:
<>----
(这是我的 MWE 制作的)<>--->
(右端箭头)<>---*
(右端圆圈)
答案1
您可以使用TikZ 的arrows
和arrows.meta
库。请参阅 TikZ 手册中的第 16 节。使用此方法,您还可以自定义箭头的长度、宽度等。
\documentclass[tikz,border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,arrows.meta}
\begin{document}
\begin{tikzpicture}
\node (a) at (0,0) {a};
\node (b) at (2,0) {b};
\draw [{Diamond}-] (a.east) -- (b.west);
\begin{scope}[yshift=-1cm]
\node (a) at (0,0) {a};
\node (b) at (2,0) {b};
\draw [{Diamond}-{Stealth}] (a.east) -- (b.west);
\end{scope}
\begin{scope}[yshift=-2cm]
\node (a) at (0,0) {a};
\node (b) at (2,0) {b};
\draw [{Diamond}-{Circle}] (a.east) -- (b.west);
\end{scope}
\end{tikzpicture}
\end{document}
这给出了输出