用于绘制二十面体和标记的 TikZ 代码

用于绘制二十面体和标记的 TikZ 代码

我找到了用于绘制二十面体的 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。但是手册中所有其他图表的行为方式都类似,因此可以推断出如何重新标记这些节点。

在内部,所有生成的图表都基于a0a1、 ... 、b0b1符号定义节点名称。更改这些内部节点名称并不容易。但是,您可以轻松更改打印图表中每个内部名称显示的标签。因此,您可以告诉例如该节点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}

结果

相关内容