![使用 Tikz 包时防止出现椭圆形循环](https://linux22.com/image/276890/%E4%BD%BF%E7%94%A8%20Tikz%20%E5%8C%85%E6%97%B6%E9%98%B2%E6%AD%A2%E5%87%BA%E7%8E%B0%E6%A4%AD%E5%9C%86%E5%BD%A2%E5%BE%AA%E7%8E%AF.png)
我刚刚开始学习 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
为需要目标的通常曲线路径)。