Я пытаюсь проиллюстрировать построение графика напряжения графика Петерсена. На практике это означает:
- Внешний цикл будет помечен по часовой стрелке (a,0),...,(a,4) с дугами, ориентированными в этом порядке;
- Внутренний цикл будет помечен по часовой стрелке (b,0),...,(b,4) с дугами (b,0) -> (b,2), (b,1) -> (b,3), (b,2) -> (b,4) и (b,3) -> (b,0); и
- Каждый (a,i) будет присоединен к соответствующему (b,i) (в этом направлении).
Я почти могу добиться этого, используя макрос grpetersen и следующий код:
\begin{tikzpicture}[->,>=triangle 45,rotate=90,scale=1.2,style=thick]
\newcommand{\aset}[2]{$\{#1,#2\}$}
\tikzset{VertexStyle/.style={draw,rectangle}}
\SetVertexNoLabel
\SetVertexMath
\SetUpVertex[MinSize=30pt]
\grPetersen[RA=3,RB=1.5]
% \SetUpEdge{style={->-}}
\AssignVertexLabel{a}{\textsl{(a,0)},\textsl{(a,4)},\textsl{(a,3)},\textsl{(a,2)},\textsl{(a,1)}}
\AssignVertexLabel{b}{\textsl{(b,0)},\textsl{(b,4)},\textsl{(b,3)},\textsl{(b,2)},\textsl{(b,1)}}
\end{tikzpicture}
Однако дуги на внешнем цикле ориентированы в неправильном направлении, и я не вижу, как изменить их, не изменяя другие, правильно ориентированные дуги.
Любые предложения будут высоко ценится.
Это часть tkzgraph/berge - см. Altermundus' "Plotting named graphs". Вот минимальный документ, содержащий указанный выше код.
\documentclass{article}
\usepackage{tkz-graph}
\usepackage{tkz-berge}
\begin{document}
\begin{tikzpicture}[->,>=triangle 45,rotate=90,scale=1.2,style=thick]
\newcommand{\aset}[2]{$\{#1,#2\}$}
\tikzset{VertexStyle/.style={draw,rectangle}}
\SetVertexNoLabel
\SetVertexMath
\SetUpVertex[MinSize=30pt]
\grPetersen[RA=3,RB=1.5]
% \SetUpEdge{style={->-}}
\AssignVertexLabel{a}{\textsl{(a,0)},\textsl{(a,4)},\textsl{(a,3)},\textsl{(a,2)},\textsl{(a,1)}}
\AssignVertexLabel{b}{\textsl{(b,0)},\textsl{(b,4)},\textsl{(b,3)},\textsl{(b,2)},\textsl{(b,1)}}
\end{tikzpicture}
\end{document}
решение1
Вот, возможно, решение. Я изменил свой макрос, который я определил вtkz-berge.styЛучший способ — научитьсяtkz-bergeили учитьсятикздля создания собственных макросов. Вы можете найти некоторые идеи в кодеtkz-bergeно вы также посмотрите на документNamedGraphsчтобы найти некоторые примеры NamedGraphs
Примечание: tkz-berge загружает tkz-graph и tikz
\documentclass{article}
\usepackage{tkz-berge}
\makeatletter
\renewcommand*{\grPetersen}[1][]{%
\begingroup%
\setkeys[GR]{cl}{#1}%
\begin{scope}[<-]
\grCycle[#1]{5}%
\end{scope}
\edef\tkzb@rtemp{\cmdGR@cl@RB}
\edef\tkzb@ptemp{\cmdGR@cl@prefixx}
\grStartwo[#1,RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{2}
\EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{5}
\endgroup%
}
\makeatother
\begin{document}
\begin{tikzpicture}[->,>=triangle 45,rotate=90,scale=1.2,style=thick]
\newcommand{\aset}[2]{$\{#1,#2\}$}
\tikzset{VertexStyle/.style={draw,rectangle}}
\SetVertexNoLabel
\SetVertexMath
\SetUpVertex[MinSize=30pt]
\grPetersen[RA=3,RB=1.5]
\AssignVertexLabel{a}{\textsl{(a,0)},\textsl{(a,4)},\textsl{(a,3)},\textsl{(a,2)},\textsl{(a,1)}}
\AssignVertexLabel{b}{\textsl{(b,0)},\textsl{(b,4)},\textsl{(b,3)},\textsl{(b,2)},\textsl{(b,1)}}
\end{tikzpicture}
\end{document}