使用 tikz 制作带标记半边的图形

使用 tikz 制作带标记半边的图形

我正在尝试为文章绘制一些图形(如边和顶点)。我想在所有边上添加一个条形图并将其标记为半边。

\usepackage{tikz}

\begin{tikzpicture}[
          every node/.style={circle, draw, fill=black!50,
                            inner sep=0pt, minimum width=4pt}, thick
        ]
        \node(A) at (0,0){};
        \node(B) at (0.5,1){};
        \node(C) at (1,0){};
        \node(D) at (2,0){};

        \draw[-](A)--(B);
        \draw[-](A)--(C);
        \draw[-](B)--(C);
        \draw[-](C)--(D);
        \draw (D) to [out=-45,in=45,looseness=40] (D);
\end{tikzpicture}

这给了我这个图表:

在此处输入图片描述

这是我想要的结果:

在此处输入图片描述

我怎样才能做到这样的事情?我正在使用 MikTex。

谢谢 :)

答案1

您可以使用decorations.markings

\documentclass[border=3mm,tikz]{standalone}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}[pft/.style n args={3}{postaction={decorate,
    decoration={markings,
    mark=at position 0.25 with {\path (0,#1) node{#2};},
    mark=at position 0.5 with {\draw[thick] (0,-1*#1) -- (0,#1);},
    mark=at position 0.75 with {\path (0,#1) node{#3};}}}},font=\small]     
    \begin{scope}[nodes={circle, draw, fill=black!50,
                            inner sep=0pt, minimum width=4pt}, thick]
        \node(A) at (0,0){};
        \node(B) at (0.5,1){};
        \node(C) at (1,0){};
        \node(D) at (2,0){};
    \end{scope}
        \draw[pft={1ex}{1}{2}](A)-- (B);
        \draw[pft={-1ex}{3}{4}](A)--(C);
        \draw[pft={1ex}{5}{6}](B)--(C);
        \draw[pft={1ex}{7}{8}](C)--(D);
        \draw[pft={-1ex}{9}{10}] (D) to [out=-45,in=45,looseness=40] (D);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容