
Soy nuevo en el dibujo en látex, ¿cómo dibujo esta forma (con el texto dentro)?
Hay círculos en un círculo, cada círculo tiene una flecha (preferiblemente curva) hacia el siguiente círculo. Y dentro de cada círculo pequeño tenemos $h^*$. Y necesito $H$ cerca del círculo 'frontal', $g_1 H g_1^{-1}$ cerca del segundo, y así sucesivamente.
Después del quinto círculo ($g_4 H g_4^{-1}$) necesito una flecha curva para 3 puntos, luego otra flecha curva para el primer círculo. Sería genial si el dibujo tuviera las dimensiones de un tercio de una hoja A4. ¡Gracias!
Editar
La gente pidió mi prueba y aquí está:
\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}
Ahora, no sé cómo dibujar esas flechas curvas, los puntos y cómo escribir manualmente los $h$ y los $g_i H g_i^{-1}$.
Editar(2)
La gente me ha ayudado con el diseño, pero cuando subí el código a un nuevo documento, me mostró lo siguiente.
Y tengo 2 preguntas: La primera es ¿por qué no me muestra un dibujo adecuado del código? La segunda es ¿por qué mi paquete "xcolor" ahora tiene un error de LaTeX?
Respuesta1
He aquí un intento básico. Los valores bend left=30
y looseness=0.75
se obtienen mediante experimentación (superpuse un círculo de radio 2
y probé algunos valores). Simplemente puede escalar esto agregando [scale=...]
un argumento opcional a tikzpicture
, es decir, directamente detrás de \begin{tikzpicture}
. Espero que no quieras los tres puntos en las últimas flechas exactamente como los describiste; Solo usé uno discontinuo.
\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}
Actualizar:Aunque es una solución bastante complicada, simplemente sobredibujé una parte de la última flecha en blanco y coloqué tres puntos en un círculo imaginado. El punto del medio está a medio camino entre los dos nodos y cada punto está a cinco grados de distancia.
Respuesta2
una variación deLa buena respuesta de Gargantuarusando otro nodo con \vdots
en lugar de una línea discontinua:
\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}
Respuesta3
Aquí hay una opción usando 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}
Respuesta4
Una alternativa enMetapostcon las etiquetas dentro como en el boceto OP. He definido una nice_label
macro que intenta colocar las etiquetas automáticamente.
\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}
Puede compilar esto en el dorso si configura el motor LaTeX en lualatex
. Deberías obtener un PDF similar a este:
Si cambia n=6;
cerca de la parte superior, n=7
obtendrá esta versión...