我刚刚开始学习 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
如果你想要对称的循环(垂直轴),你需要使用“对称”out
和in
角度,在你的情况下
in=30, out=180-30
或者
in=40, out=160
随着风格的变化,every loop
你也会改变loop right
,loop 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
和键out
、in
和的looseness
工作方式决定的(它们将重置to path
为需要目标的通常曲线路径)。