在开头绘制一条带有实心菱形的路径

在开头绘制一条带有实心菱形的路径

我的问题类似于这个,但我试图在路径的开头画一个简单的黑色填充菱形,就像在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 的arrowsarrows.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}

这给出了输出

输出

相关内容