我正在尝试为文章绘制一些图形(如边和顶点)。我想在所有边上添加一个条形图并将其标记为半边。
\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}