在 tkz-graph 中移动循环

在 tkz-graph 中移动循环

我正在尝试修改graphiso.sty 包来显示有向图之间的态射。这意味着它应该允许用箭头显示边,我可以这样做。问题是我现在想包含循环,并使这些循环平稳移动。到目前为止,我添加了以下内容graphiso.sty

\define@cmdkey [GR] {MLe} {dist}{}
\define@cmdkey [GR] {MLe} {dir}{}
\define@cmdkey [GR] {MLe} {shows}{}
\define@cmdkey [GR] {MLe} {starts}{}
\define@cmdkey [GR] {MLe} {stops}{}
\define@cmdkey [GR] {MLe} {arrow}{}
\presetkeys    [GR] {MLe} {dist      = 3cm,
                       dir       = WE,
                       shows     = 1,
                       starts    = 1,
                       stops     = 10,
                       arrow     = -}{} 
\newcommand{\LoopM}[2][]{%
 \begingroup
  \setkeys[GR]{MLe}{#1}%
  \pgfmathsetmacro{\last@still}{\cmdGR@MLe@starts-1}
  \foreach\x in {\cmdGR@MLe@shows,...,\last@still}{%
    \only<\x>{\Loop[dist {\cmdGR@MLe@dist},dir {\cmdGR@MLe@dir},style={thick,\cmdGR@MLe@arrow}](#2)}
  }
  \foreach\x in {\cmdGR@MLe@starts,...,\cmdGR@MLe@stops}{%
    \only<\x>{\Loop[dist {\cmdGR@MLe@dist},dir {\cmdGR@MLe@dir},style={thick,\cmdGR@MLe@arrow}](#2)}
  }
  \endgroup
}

我的方法存在两个问题:

  1. 即使写了类似的内容,我还是无法修改循环的方向\LoopM[dir=EA,arrow=->,shows=1,starts=4,stops=10]{I}
  2. 它不允许循环从一个方向平滑地变为另一个方向。有什么线索可以告诉我如何实现这种效果吗?

编辑:这是我迄今为止得到的一个例子: 在此处输入图片描述

由以下代码生成:

 \documentclass{beamer}  
 \usepackage{tikz}  
 \usepackage{graphiso}
 \begin{document}  
 \begin{frame}{Homomorfismo de grafos}  
    \begin{figure}[h]  
        \begin{tikzpicture}[stop jumping]  
        \VertexM[xa=0,ya=0,xb=0,yb=3,shows=1,starts=4,stops=10]{I}  
        \VertexM[xa=0,ya=3,xb=3,yb=3,shows=1,starts=4,stops=10]{J}  
        \EdgeM[arrow=->,shows=1,starts=4,stops=10]{I}{J}  
        \LoopM[dir=EA,arrow=->,shows=1,starts=4,stops=10]{I}  
        \EdgeM[arrow=->,shows=1,starts=4,stops=10]{J}{I}  
    \end{tikzpicture}  
    \end{figure}  
 \end{frame}
 \end{document}

相关内容