
Ich weiß, dass es eine Möglichkeit gibt, mit „graphs.standard“ und „subgraph k_n“ ein Diagramm mit fünf Knoten zu erhalten, das wie ein vollständiger Stern aussieht, wie im beigefügten Bild.
Aber gibt es eine Möglichkeit, LaTeX mitzuteilen, dass ich nur bestimmte Kanten davon haben möchte? Ich möchte auf einer Beamer-Folie Adjazenzlisten und Matrizen erklären und brauche davon nur einige.
Muss ich den gesamten Graphen selbst zeichnen oder kann ich LaTeX mitteilen, welche Kanten ich möchte?
Antwort1
Hier ist ein Makro \incomplete
, das die Arbeit für Sie erledigt. Die Syntax lautet
\incomplete[<radius>]{<num vertices>}{<edge list>}
Die beiden obigen Beispiele wurden mit \incomplete{5}{1/2,1/3,1/4,1/5,2/4,2/5}
und erstellt.\incomplete{6}{1/2,2/3,3/4,4/5,5/6,6/1,2/4}
<radius>
ist optional. Der Standardwert ist 1.5cm
. <edgelist>
ist eine durch Kommas getrennte Liste mit jedem Eintrag der Form vertex1/vertex2
. <edgelist>
kann leer sein, z. B. \incomplete{5}{}
.
Hier ist der Code:
\documentclass{article}
\usepackage{tikz}
\tikzset{vertex/.style={draw, circle, inner sep=1mm}}
\newcommand{\incomplete}[3][1.5cm]{\begin{tikzpicture}
\foreach \n in {1,...,#2}{\node[vertex]at({90-360/#2*(\n-1)}:#1)(\n){\n};}
\foreach \v/\w in {#3}{\draw(\v)--(\w);}
\end{tikzpicture}}
\begin{document}
\incomplete{5}{1/2,1/3,1/4,1/5,2/4,2/5}\hspace{2cm}\incomplete{6}{1/2,2/3,3/4,4/5,5/6,6/1,2/4}
\end{document}
Antwort2
Indem Sie angeben, dass der Grapheinfachkann man die Kanten eines Graphmakros ändern und sie mit der speziellen -!-
Kantenspezifikation sogar entfernen:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{graphs.standard}
\begin{document}
\begin{tikzpicture}
\graph[nodes={circle,draw},simple] {
subgraph K_n [n=5,clockwise];
2 -!- 3 -!- 4 -!- 5 -!- 3;
};
\end{tikzpicture}
\end{document}