
Ich bin neu im Zeichnen in Latex. Wie zeichne ich diese Form (mit dem Text darin)?
In einem Kreis befinden sich Kreise, jeder Kreis hat einen Pfeil (vorzugsweise gebogen) zum nächsten Kreis. Und in jedem kleinen Kreis haben wir $h^*$. Und ich brauche $H$ in der Nähe des „vorderen“ Kreises, $g_1 H g_1^{-1}$ in der Nähe des zweiten und so weiter.
Nach dem fünften Kreis ( $g_4 H g_4^{-1}$) brauche ich einen gebogenen Pfeil zu 3 Punkten, dann einen weiteren gebogenen Pfeil zum ersten Kreis. Es wäre toll, wenn die Zeichnung die Abmessungen eines Drittels eines A4-Blatts hätte. Danke!
Bearbeiten
Die Leute haben nach meinem Probetraining gefragt, also hier ist es:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[fill=none](0,0) circle (3.0);
\draw[fill=none](1,2) circle (0.5);
\draw[fill=none](1,-2) circle (0.5);
\draw[fill=none](2,0) circle (0.5);
\draw[fill=none](-1,2) circle (0.5);
\draw[fill=none](-1,-2) circle (0.5);
\end{tikzpicture}
\end{document}
Nun weiß ich nicht, wie ich diese gebogenen Pfeile und die Punkte zeichnen und wie ich die $h$s und $g_i H g_i^{-1}$s manuell schreiben soll.
Bearbeiten(2)
Leute haben mir beim Design geholfen, aber als ich den Code in ein neues Dokument hochgeladen habe, wurde mir Folgendes angezeigt.
Und ich habe zwei Fragen: Die erste ist, warum mir keine richtige Zeichnung des Codes angezeigt wird. Die zweite ist, warum mein „xcolor“-Paket jetzt einen LaTeX-Fehler hat?
Antwort1
Hier ist ein einfacher Versuch. Die Werte bend left=30
und looseness=0.75
wurden durch Experimente ermittelt (ich habe einen Kreis mit Radius überlagert 2
und ein paar Werte ausprobiert). Sie können dies einfach skalieren, indem Sie [scale=...]
als optionales Argument hinzufügen tikzpicture
, also direkt hinter \begin{tikzpicture}
. Ich hoffe, Sie möchten die drei Punkte auf den letzten Pfeilen nicht genau so, wie Sie es beschrieben haben; ich habe einfach einen gestrichelten verwendet.
\documentclass[convert]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle[radius=4];
\node[draw, circle, label=above:\(H\)] (0) at (90:2) {\(h^*\)};
\foreach \i [remember=\i as \j (initally 0)] in {1,...,4} {
\node[draw, circle, label=90-72*\i:\(g_\i H g_\i^{-1}\)] (\i) at (90-72*\i:2) {\(h^*\)};
\draw[->] (\j) edge [bend left=30, looseness=0.75] (\i);
}
\draw[->] (4) edge [bend left=30, looseness=0.75] (0);
% added three dots
\draw[white, thick] (116:2) arc[start angle=116, end angle=136, radius=2];
\foreach \i in {0,1,2}
\filldraw (121+5*\i:2) circle[radius=0.4pt];
\end{tikzpicture}
\end{document}
Aktualisieren:Obwohl es sich um eine ziemlich pfuschige Lösung handelt, habe ich einfach einen Teil des letzten Pfeils weiß überzeichnet und drei Punkte auf einen imaginären Kreis gesetzt. Der mittlere Punkt liegt auf halbem Weg zwischen den beiden Knoten, und jeder Punkt ist fünf Grad voneinander entfernt.
Antwort2
Eine Variation vonGargantuars nette AntwortVerwenden eines anderen Knotens mit \vdots
anstelle einer gestrichelten Linie:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle[radius=4];
\node[draw, circle, label={above:\(H\)}] (n0) at (90:2) {\(h^*\)};
\foreach \i [count=\j from 0] in {1,...,4} {
\node[draw, circle, label={90-60*\i:\(g_\i H g_\i^{-1}\)}] (n\i)
at (90-60*\i:2) {\(h^*\)};
\draw[->] (n\j) edge [bend left=30, looseness=0.66] (n\i);
}
\node[circle, rotate=-30, text depth=0.5em] (n5) at (150:2) {\(\vdots\)};
\draw[->] (n4) edge [bend left=30, looseness=0.66] (n5);
\draw[->] (n5) edge [bend left=30, looseness=0.66] (n0);
\end{tikzpicture}
\end{document}
Antwort3
Hier ist eine Option mit chains
.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary {chains}
\begin{document}
\begin{tikzpicture}[start chain=placed {at=(150-\tikzchaincount*60:2)}, every join/.style={->, thick, bend left=15}, chain node/.style={on chain, circle, thick, minimum size=8mm, join}]
\draw[thick] circle[radius=4];
\node[chain node, draw, label={90:$H$}] {$h^*$};
\foreach \i in {1,...,4}
\node[chain node, draw, label={90-60*\i:$g_{\i}Hg_{\i}^{-1}$}] {$h^*$};
\node[chain node]{}; \node[chain node]{};
\foreach \j in {-1,0,1} \fill (150+5*\j:1.93)circle[radius=.8pt];
\end{tikzpicture}
\end{document}
Antwort4
Eine Alternative inMetapostmit den Beschriftungen darin wie in der OP-Skizze. Ich habe ein nice_label
Makro definiert, das versucht, die Beschriftungen automatisch zu platzieren.
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
path outer_circle, inner_circle;
outer_circle = reverse fullcircle % so it runs clockwise
rotated 90 % ... from 12 o'clock
scaled 100mm; % .. and takes up 1/3 of an A4 page.
inner_circle = outer_circle scaled 3/4;
numeric n; n = 6;
path c[];
for t=0 upto n:
c[t] = fullcircle scaled 36 shifted point 8/n*t of inner_circle;
endfor
vardef nice_label(expr s, z, p) =
save r, t, a, b;
picture t; t = thelabel(s, z);
interim bboxmargin := 4;
path a; a = z--center p cutafter bbox t;
path b; b = z--center p cutafter p;
numeric r; r = 1 - arclength a / arclength b;
draw t shifted point r of b
enddef;
for t=0 upto n-1:
if t < n - 1:
draw c[t];
label("$h^{\rlap{*}}$", center c[t] + 2 up);
nice_label(
if t=0:
"$H$"
else:
"$g_{" & decimal t & "}Hg_{"&decimal t&"}^{-1}$"
fi, origin, c[t]);
else:
for dt=-1/16, 0, 1/16:
draw point 8/n*t + dt of inner_circle withpen pencircle scaled 1;
endfor
fi
drawarrow subpath 8/n*(t, t+1) of inner_circle
cutbefore c[t] cutafter c[t+1];
endfor
draw outer_circle;
endfig;
\end{mplibcode}
\end{document}
Sie können dies in Overleaf kompilieren, wenn Sie die LaTeX-Engine auf einstellen lualatex
. Sie sollten ein PDF erhalten, das so aussieht:
Wenn Sie n=6;
oben ändern n=7
, erhalten Sie diese Version ...