在 tikz 中绘制五角金字塔的边缘

在 tikz 中绘制五角金字塔的边缘

我想在 v_2、...、v_6 之间以及从 v_1 到所有其他点(金字塔)之间画线。这是我的成果:

\documentclass{article}
\usepackage{graphics, tikz, tkz-berge}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[scale=1,transform shape]
  \tikzstyle{LabelStyle}=[fill=white,sloped]
  \Vertex[x=0,y=0]{$v_2$}
  \Vertex[x=3,y=0]{$v_3$}
  \Vertex[x=4,y=1.5]{$v_4$}
  \Vertex[x=1.5,y=2.5]{$v_5$}
  \Vertex[x=-1,y=1.5]{$v_6$}
  \Vertex[x=1.5,y=4.5]{$v_1$}
\end{tikzpicture}
\caption{Graph}
\end{figure}
\end{document}

它生成以下图表:

图形 这几乎没问题,但我似乎无法添加边。我尝试添加\Edge[]($v_1$)($v_2$)到代码中,但出现错误“段落在解析完成之前结束”。显然问题与有关,$v_i$因为如果我删除美元符号,代码就会运行。

答案1

(根据评论中的帖子,如何使用 tkz-berge 图形绘制包重用顶点名称?引用内部包含数学类型的顶点来创建边

您应该将标签与节点名称分开。最小补丁:

\documentclass{article}
\usepackage{graphics, tikz, tkz-berge}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[scale=1,transform shape]
  \tikzstyle{LabelStyle}=[fill=white,sloped]
  \Vertex[x=0,y=0,L=$v_2$]{v2}
  \Vertex[x=3,y=0,L=$v_3$]{v3}
  \Vertex[x=4,y=1.5,L=$v_4$]{v4}
  \Vertex[x=1.5,y=2.5,L=$v_5$]{v5}
  \Vertex[x=-1,y=1.5,L=$v_6$]{v6}
  \Vertex[x=1.5,y=4.5,L=$v_1$]{v1}
  \Edge[](v1)(v2)
  \Edge[](v4)(v5)
  %etc.
\end{tikzpicture}
\caption{Graph}
\end{figure}
\end{document}

答案2

另一个选择是在定义顶点位置时不使用标签,而是稍后使用 来分配所有标签\AssignVertexLabel。但请注意,此宏要求节点从 0 开始编号,而不是从 1 开始(但您可以从 为它们分配标签$_1$)。

这是 MWE:

\documentclass{article}
\usepackage{graphics, tikz, tkz-berge}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[scale=1,transform shape]
  \tikzstyle{LabelStyle}=[fill=white,sloped]
  \SetVertexNoLabel
  \Vertex[x=0,y=0]{v1}
  \Vertex[x=3,y=0]{v2}
  \Vertex[x=4,y=1.5]{v3}
  \Vertex[x=1.5,y=2.5]{v4}
  \Vertex[x=-1,y=1.5]{v5}
  \Vertex[x=1.5,y=4.5]{v0}
  \AssignVertexLabel{v}{$v_1$,$v_2$,$v_3$,$v_4$,$v_5$,$v_6$}
  \Edges(v5,v4,v0);\Edges(v4,v3)
  \SetUpEdge[color=white,style={double=black,double distance=2pt}]
  \Edges(v0,v3,v2,v1,v5,v0)
  \Edges(v1,v0,v2)
\end{tikzpicture}
\caption{Graph}
\end{figure}
\end{document}

制作:

结果

相关内容