TikZ のグラフ内のテキスト

TikZ のグラフ内のテキスト

次のコードがあります。

\begin{tikzpicture}
 [auto,
 vertex/.style={circle,draw=black!100,fill=black!100,thick,inner sep=0pt,minimum size=1mm}]
\node (v1) at ( 1,1) [vertex,label=left:$v_1$] {};
\node (v2) at ( 0,0) [vertex,label=left:$v_2$] {};
\node (v3) at ( 2,0) [vertex,label=right:$v_3$] {};
\draw [-] (v1) to (v2);
\draw [-] (v2) to (v3);
\draw [-] (v1) to (v3);
\draw [-] [loop below] (v1) to (v1);
\end{tikzpicture}

これで、3 つの頂点を持つグラフがきれいに描画されます。問題は、エッジ v_1v_2、v_2v_3、v_1v_3、v_1v_1 にそれぞれ e_1、e_2、e_3、e_4 という名前を付けたいことです。これらの名前はエッジの近くに配置する必要があります。さらに、TikZ でこれらのエッジの名前を、互いに邪魔することなく、また位置を指定せずに自動的に配置するようにします。これを実現する最善の方法は何ですか? これには auto が使用されていると思いますが、方法がわかりません。

答え1

このようなもの?

\documentclass[tikz]{standalone}
\usetikzlibrary{automata}
\begin{document}
  \begin{tikzpicture}[auto, vertex/.style={circle,draw=black!100,fill=black!100, thick,
                inner sep=0pt,minimum size=1mm}]
\node (v1) at ( 1,1) [vertex,label=left:$v_1$] {};
\node (v2) at ( 0,0) [vertex,label=left:$v_2$] {};
\node (v3) at ( 2,0) [vertex,label=right:$v_3$] {};
\draw [-] (v1) --node[inner sep=0pt,swap]{$e_1$} (v2);
\draw [-] (v2) --node[inner sep=2pt,swap]{$e_2$} (v3);
\draw [-] (v1) --node[inner sep=0pt]{$e_3$} (v3);
\draw [-] [loop below] (v1) to node[inner sep=0pt]{$e_4$} (v1);
\end{tikzpicture}
\end{document}

ここに画像の説明を入力してください

関連情報