我用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
选项),这可能会破坏行为。如果这对您来说不是问题,我们还可以使用计算进行其他思考。但我想您现在可以看到问题所在了。