![在 tikz 中绘制五角金字塔的边缘](https://linux22.com/image/292392/%E5%9C%A8%20tikz%20%E4%B8%AD%E7%BB%98%E5%88%B6%E4%BA%94%E8%A7%92%E9%87%91%E5%AD%97%E5%A1%94%E7%9A%84%E8%BE%B9%E7%BC%98.png)
我想在 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}
制作: