我正在尝试修改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
}
我的方法存在两个问题:
- 即使写了类似的内容,我还是无法修改循环的方向
\LoopM[dir=EA,arrow=->,shows=1,starts=4,stops=10]{I}
。 - 它不允许循环从一个方向平滑地变为另一个方向。有什么线索可以告诉我如何实现这种效果吗?
由以下代码生成:
\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}