当图片旋转时,图中的自环会改变形状

当图片旋转时,图中的自环会改变形状

我用tkz-graph它来绘制图形。当图片旋转时,自循环会改变形状。这是正常的吗?由于我可能从一开始就重新设计旋转后的图形,所以我更感兴趣的是了解为什么会发生这种行为,或者我是否做错了什么,而不是解决问题。下面是一个例子。

\documentclass{article}
\usepackage{tkz-graph}
\newcommand{\tp}[1]{\begin{tikzpicture}[rotate=#1]
                         \Vertex{a}
                         \Loop(a)
                    \end{tikzpicture}}

\begin{document}     
     \tp{0}

     \tp{90}

     \tp{180}

     \tp{270}
\end{document}

答案1

编辑 它的来源有:

\let\loop\grLoop

grLoop 定义如下:

\newcommand*{\grLoop}[1][]{\tkzGR@loop[#1]}%
\def\tkzGR@loop[#1](#2){%
\setkeys[GR]{loop}{#1}%
\protected@edef\@tempa{%
\noexpand \draw[\cmdGR@loop@color] (#2)%
  edge [EdgeStyle,LoopStyle,\cmdGR@loop@style]%
  node [LabelStyle,\cmdGR@loop@labelstyle]%
  {\cmdGR@loop@label} (#2)}\@tempa;%
}%

所以我们必须检查EdgeStyle,LoopStyle,\cmdGR@loop@style

但在初始化Loopstyle时包含:

\define@choicekey*[GR]{loop}{dir}[\val\nr]{WE,EA,NO,SO,NOWE,NOEA,SOWE,SOEA}{%
\ifcase\nr\relax
\tikzset{LoopStyle/.style = {in=225, out=135, distance=\cmdGR@loop@dist}}%
\or
\tikzset{LoopStyle/.style = {in= 45, out=-45, distance=\cmdGR@loop@dist}}%
\or
\tikzset{LoopStyle/.style = {in=135, out= 45, distance=\cmdGR@loop@dist}}%
\or
\tikzset{LoopStyle/.style = {in=-45, out=-135, distance=\cmdGR@loop@dist}}%
\or
\tikzset{LoopStyle/.style = {in=180, out=90, distance=\cmdGR@loop@dist}}%
\or
\tikzset{LoopStyle/.style = {in=90, out=0, distance=\cmdGR@loop@dist}}%
\or
\tikzset{LoopStyle/.style = {in=-90, out=-180, distance=\cmdGR@loop@dist}}%
\or
\tikzset{LoopStyle/.style = {in=0, out=-90, distance=\cmdGR@loop@dist}}%
\fi%
}

这意味着起点并不在那里初始化(只有角度和距离)

因此,在寻找其他选项时,我发现\cmdGR@loop@style没有其他地方可以提及,而且可能为空。

因此该软件包没有提供任何实际旋转的选项。

如果我尝试用代码循环:

\newcommand{\tp}[1]{\xdef\ea{#1+90}\begin{tikzpicture}[rotate=#1]
                         \Vertex{a}
                         \draw (a) edge [in=0, out=90,distance=40] (a);
                    \end{tikzpicture}}

\Loop我遇到了同样的问题。此问题通过命令重现

如果我可以添加in或如果 latex 通过旋转添加它,那就更好了。也许我们必须修复一个没有有效旋转边缘选项的错误。

旧答案:

那么像这样的事情怎么样:

\documentclass{article}
\usepackage{xcolor}
\usepackage{tkz-graph}
\newcommand{\tp}[1]{\xdef\val{#1}\pgfmathsetmacro\vval{#1+60}\begin{tikzpicture}
                         \Vertex{a}
                         \path[->] (a) edge [out=\val,in=\vval,looseness=9] (a);
                    \end{tikzpicture}}

\begin{document}     
     \tp{0}

     \tp{90}

     \tp{180}

     \tp{270}
\end{document}

我刚刚在这里发现:如何制作边从同一顶点开始和结束的 tkz 图?\Loop命令采用奇怪的方向参数(见dir选项),这可能会破坏行为。如果这对您来说不是问题,我们还可以使用计算进行其他思考。但我想您现在可以看到问题所在了。

相关内容