我找到了用于绘制二十面体的 TikZ 代码这里:
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\documentclass[a4paper]{amsart}
\usepackage{graphics, tikz, tkz-berge, tkz-graph}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{scope}[rotate=90]
\grIcosahedral[form=1,RA=3,RB=1.5]
\SetUpEdge[color=white,style={double=black,double distance=2pt}]
\EdgeInGraphLoop{a}{6}
\EdgeFromOneToSel{a}{b}{0}{1,5}
\Edges(a2,b1,b3,b5,a4)
\Edge(a3)(b3)
\Edges(a1,b1,b5,a5)
\Edges(a2,b3,a4)
\end{scope}
\end{tikzpicture}
\end{figure}
\end{document}
输出为:
这很好,但我想将顶点标记为 v_1、v_2、...、v_12,而不是 a 和 b。但是,我不知道如何更改代码以使标签不同。我尝试简单地将代码中的所有 a 替换为 v,但这会出现错误。
答案1
\grIcosahedral
手册中没有记录该宏tkz-berge
。但是手册中所有其他图表的行为方式都类似,因此可以推断出如何重新标记这些节点。
在内部,所有生成的图表都基于a0
、a1
、 ... 、b0
等b1
符号定义节点名称。更改这些内部节点名称并不容易。但是,您可以轻松更改打印图表中每个内部名称显示的标签。因此,您可以告诉例如该节点a0
必须标记为$v_1$
,或任何您喜欢的标签。
以下是具体方法:
\documentclass[a4paper]{amsart}
\usepackage{graphics, tkz-berge}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{scope}[rotate=90]
\SetVertexNoLabel % <--- This avoids that default $a_0$, .. $b_0$ labels show up
\grIcosahedral[form=1,RA=3,RB=1.5]
% Following two lines assign labels to a-like and b-like nodes
% change it as you prefer
\AssignVertexLabel{a}{$v_0$, $v_1$, $v_2$, $v_3$, $v_4$, $v_5$};
\AssignVertexLabel{b}{$v_6$, $v_7$, $v_8$, $v_9$, $v_{10}$, $v_{11}$};
% The remaining code is unchanged
\SetUpEdge[color=white,style={double=black,double distance=2pt}]
\EdgeInGraphLoop{a}{6}
\EdgeFromOneToSel{a}{b}{0}{1,5}
\Edges(a2,b1,b3,b5,a4)
\Edge(a3)(b3)
\Edges(a1,b1,b5,a5)
\Edges(a2,b3,a4)
\end{scope}
\end{tikzpicture}
\end{figure}
\end{document}