Сбросить счетчик имен вершин в tkz-berge

Сбросить счетчик имен вершин в tkz-berge

У меня есть следующий граф, построенный с помощью tkz-bergeбиблиотеки. В текущих настройках узлы/вершины нумеруются автоматически, начиная с индекса 0. Интересно, как сбросить счетчик, чтобы начать с 1?

\documentclass{article}
\usepackage{xcolor}
\usepackage{tikz}
\usepackage{tkz-berge}
\begin{document}
\begin{tikzpicture}
\begin{tikzpicture}
\GraphInit[vstyle=Normal]
\SetUpVertex[Math,Lpos=-180,LabelOut]
\SetVertexNormal[FillColor=red,OuterSep=0pt]
\grEmptyPath[form=2,x=0,y=0,RA=2,rotation=90,prefix=u,Math]{5}
\SetUpVertex[Lpos=0]
\SetVertexNormal[FillColor=blue]
\grEmptyPath[form=2,x=6,y=0,RA=2,rotation=90,prefix=v,Math]{4}
\Edges(u4,v3,u3,v2,u1)
\Edges(u3,v3,u0,v0,u2,v1)
\end{tikzpicture}
\end{tikzpicture}
\end{document}

Рисунок 1

решение1

Счетчик узлов используется во всем коде для tkz-bergeвычисления позиций и генерации внутренних имен узлов, поэтому при изменении счетчика все ломается. Однако вы можете обновить (т. е. изменить) команду печати узлов нижнего уровня, \write@mathкоторая вызывает \Vertex(определенную пакетом tkz-graph, который загружается tkz-berge) с меткой узла в качестве одного из аргументов. Используя , \pgfmathtruncatemacroвы можете добавить 1 к счетчику узлов, сохранить результат в макросе и напечатать этот макрос в метке вместо самого счетчика. Обратите внимание, что \pgfmathtruncatemacroследует использовать вместо , \pgfmathsetmacroчтобы избежать добавления .0в метку.

МВЭ:

\documentclass{article}
\usepackage{tkz-berge}
\makeatletter
\renewcommand*{\write@math}[3]{%
            \pgfmathtruncatemacro{\printindex}{#3+1}
            \Vertex[x = #1,y = #2,%
                    L = \cmdGR@cl@prefix\grMathSep{\printindex}]{\cmdGR@cl@prefix#3}}
\makeatother
\begin{document}
\begin{tikzpicture}
\GraphInit[vstyle=Normal]
\SetUpVertex[Math,Lpos=-180,LabelOut]
\SetVertexNormal[FillColor=red,OuterSep=0pt]
\grEmptyPath[form=2,x=0,y=0,RA=2,rotation=90,prefix=u,Math]{5}
\SetUpVertex[Lpos=0]
\SetVertexNormal[FillColor=blue]
\grEmptyPath[form=2,x=6,y=0,RA=2,rotation=90,prefix=v,Math]{4}
\Edges(u4,v3,u3,v2,u1)
\Edges(u3,v3,u0,v0,u2,v1)
\end{tikzpicture}
\end{document}

Результат:

введите описание изображения здесь

Связанный контент