使用 TikZ 在无向图中实现自循环

使用 TikZ 在无向图中实现自循环

如何创建边缘没有方向的自循环?

\path[every node/.style={font=\sffamily\small}]
(3)   edge[loop] node  {$e_{1}$} (3);

创建我想要的循环但有一个方向。

答案1

由于某种原因,TikZevery loop样式包含一个箭头。因此您只需将其删除即可:

\begin{tikzpicture}[every loop/.style={}]
    \node (3) {(3)};
    \path[every node/.style={font=\sffamily\small}]
        (3)   edge[loop] node  {$e_{1}$} (3);
\end{tikzpicture}

或者使用以下方法全局删除

\tikzset{every loop/.style={}}

在序言中。

答案2

还有另一种可能性。loopevery loop是简单的样式,可以重新定义 loop而不是every loop。如果你有很多循环,并且想要一些特定的选项,那么这很有趣

来自 pgf 的代码

% Loops

\tikzstyle{loop}=                    [to path={
  \pgfextra{\let\tikztotarget=\tikztostart}
  [looseness=8,min distance=5mm,every loop]
  \tikz@to@curve@path
  }]

\tikzstyle{every loop}=              [->,shorten >=1pt]

我的修改

\documentclass{article}
\usepackage{tikz}
\makeatletter
\tikzset{my loop/.style =  {to path={
  \pgfextra{\let\tikztotarget=\tikztostart}
  [looseness=12,min distance=10mm]
  \tikz@to@curve@path},font=\sffamily\small
  }}  
\makeatletter 

 \begin{document}     
\begin{tikzpicture}
    \node (3) {(3)} ;
    \path  (3)   edge[my loop] node[above]  {$e_{1}$} (3);
\end{tikzpicture}

\end{document}  

在此处输入图片描述

相关内容