使用 Tikz 包时防止出现椭圆形循环

使用 Tikz 包时防止出现椭圆形循环

我刚刚开始学习 LaTex,特别是图形,这是我的(简化)代码:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{automata,positioning}
\begin{document}
\tikzset{every loop/.style={in=30,out=160,looseness=5}}

\begin{tikzpicture}[shorten >=1pt,node distance=2cm,on grid,auto,bend angle=80] 
   \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum
                            size=6mm]

   \node[state,initial] (s_0)   {$s_0$};

    \path[->]
    (s_0) edge [loop above] node {x} ();

\end{tikzpicture}
\end{document}

正如您所见,这些环有点椭圆形:

当前版本当前版本包括行

我希望蓝线的长度相等(第二张图)。

我发现了一个这里的解决方案非常令人印象深刻,但我不需要弧内的文本。所以我的问题是:有没有更简单的技巧?

答案1

如果你想要对称的循环(垂直轴),你需要使用“对称”outin角度,在你的情况下

in=30, out=180-30

或者

in=40, out=160

随着风格的变化,every loop你也会改变loop rightloop left然后loop below看起来会像这样loop above

仅更改loop above样式,您要么需要覆盖它:

\tikzset{
  loop above/.style={% original: above, out=105, in=75, loop
    above, in=30, out=150, loop,
    every loop/.append style={looseness=5}}}

或者将所需的选项作为附录附加到every loop样式中:

\tikzset{loop above/.append style={every loop/.append style={out=150, in=30, looseness=5}}}

这是由于键loop和键outin和的looseness工作方式决定的(它们将重置to path为需要目标的通常曲线路径)。

相关内容