O código
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[font=\footnotesize, very thick]
\def\r{3}
\foreach \a/\n in {-2/{p-2}, -1/{p-1}, 0/0, 1/1, 2/2, 3/3, 4/4}
\node[anchor=base] (\a) at (90+36*\a:\r) {$\circ$};
\node (-3) at (90+36*-3:\r) {};
\node (5) at (90+36*5:\r) {};
\foreach \a/\name [remember=\a as \lasta (initially -3)]
in {-2/{p-3}, -1/{p-2}, 0/{p-1}, 1/0, 2/1, 3/2, 4/3, 5/4}
{
\draw[->, shorten >=5pt, shorten <=5pt]
(\lasta)
arc[radius=\r, start angle=90+36*(\lasta), end angle=90+36*(\a)]
(\a);
\node at (90+36*\lasta+18:\r+0.5) {$\alpha_{\name}$};
}
\foreach \a in { 1, ..., 14 }
{
\node at (90+36*5+5*\a:\r) {$\cdot$};
}
\end{tikzpicture}
\end{document}
produz a seguinte imagem
Acho a colocação dos rótulos nas setas bastante perturbadora. Eu tentei algumas coisas, mas elas sempre terminavam em posições bastante assimétricas.
Existe uma maneira de fazer com que eles se comportem bem?
Claro, o significado correto debemaqui está aberto à interpretação, mas gostaria que pelo menos os alfas aparecessem a distâncias mais consistentes das setas, por exemplo.
PS. Estou colocando os rótulos manualmente e não como nós ao longo do arco porque assim eles parecem melhores, mas espero que seja uma má escolha...
Responder1
Eu estabeleceria a âncora para o ponto.
\documentclass[border=25pt]{standalone}
\usepackage{tikz}
\newcommand\aesub[1]{\makebox[0pt][l]{\raisebox{0pt}[\height][0pt]{\scriptsize$#1$}}}
\begin{document}
\begin{tikzpicture}[font=\footnotesize, very thick]
\def\r{3}
\foreach \a/\n in {-2/{p-2}, -1/{p-1}, 0/0, 1/1, 2/2, 3/3, 4/4}
\node[anchor=base] (\a) at (90+36*\a:\r) {$\circ$};
\node (-3) at (90+36*-3:\r) {};
\node (5) at (90+36*5:\r) {};
\foreach \a/\name [remember=\a as \lasta (initially -3)]
in {-2/{p-3}, -1/{p-2}, 0/{p-1}, 1/0, 2/1, 3/2, 4/3, 5/4}
{
\draw[->, shorten >=5pt, shorten <=5pt]
(\lasta)
arc[radius=\r, start angle=90+36*(\lasta), end angle=90+36*(\a)]
(\a);
%% to avoid writing the same thing multiple times
\pgfmathsetmacro\aeangle{90+36*\lasta+18}
%% to see the node
\node[circle,inner sep=0.5pt,fill] at (\aeangle:\r+0.5) {};
\node[anchor=(\aeangle+180),outer sep=0pt,inner sep=0pt] at (\aeangle:\r+0.5) {$\alpha_{\aesub{\name}}$};
%% old style for comparison purposes
%% \node[anchor=(\aeangle+180),outer sep=0pt,inner sep=0pt] at (\aeangle:\r+0.5) {$\alpha_{\name}$};
}
\foreach \a in { 1, ..., 14 }
{
\node at (90+36*5+5*\a:\r) {$\cdot$};
}
\end{tikzpicture}
\end{document}
Tornei os nós visíveis para que você possa ver melhor o posicionamento. Apenas comente essa linha. Além disso, adicionei um comando que transforma os subscritos em caixas de largura zero, altura natural e profundidade zero: a altura natural é deixada lá para que o subscrito seja colocado corretamente (ou seja, não muito alto). Isso tem o resultado um pouco indesejável de que a caixa delimitadora não está bem definida. Mas caso contrário, esta solução define a âncora em $\alpha$ e não em $\alpha_{...}$ inteiro. Se você encontrar a configuração do nome completo do rótulo, não use a \aesub
macro.
Responder2
Isso parece mais esteticamente agradável?
\documentclass{article}
\usepackage{tikz}
\newlength{\tempwidth}
\begin{document}
\begin{tikzpicture}[font=\footnotesize, very thick]
\def\r{3}
\foreach \a/\n in {-2/{p-2}, -1/{p-1}, 0/0, 1/1, 2/2, 3/3, 4/4}
\node[anchor=base] (\a) at (90+36*\a:\r) {$\circ$};
\node (-3) at (90+36*-3:\r) {};
\node (5) at (90+36*5:\r) {};
\foreach \a/\name [remember=\a as \lasta (initially -3)]
in {-2/{p-3}, -1/{p-2}, 0/{p-1}, 1/0, 2/1, 3/2, 4/3, 5/4}
{
\draw[->, shorten >=5pt, shorten <=5pt]
(\lasta)
arc[radius=\r, start angle=90+36*(\lasta), end angle=90+36*(\a)]
(\a);
\pgfextra{\settowidth{\tempwidth}{$\alpha_{\name}$}
\pgfmathparse{0.5+0.005\tempwidth*cos(90+36*\lasta+18)}% fudge factor 0.005
\global\let\temp=\pgfmathresult}
\node at (90+36*\lasta+18:\r+\temp) {$\alpha_{\name}$};
}
\foreach \a in { 1, ..., 14 }
{
\node at (90+36*5+5*\a:\r) {$\cdot$};
}
\end{tikzpicture}
\end{document}
Aqui os alfas são simétricos (os subscritos são ignorados).
\documentclass{standalone}
\usepackage{tikz}
\newlength{\tempwidth}
\begin{document}
\begin{tikzpicture}[font=\footnotesize, very thick]
\def\r{3}
\foreach \a/\n in {-2/{p-2}, -1/{p-1}, 0/0, 1/1, 2/2, 3/3, 4/4}
\node[anchor=base] (\a) at (90+36*\a:\r) {$\circ$};
\node (-3) at (90+36*-3:\r) {};
\node (5) at (90+36*5:\r) {};
\foreach \a/\name [remember=\a as \lasta (initially -3)]
in {-2/{p-3}, -1/{p-2}, 0/{p-1}, 1/0, 2/1, 3/2, 4/3, 5/4}
{
\draw[->, shorten >=5pt, shorten <=5pt]
(\lasta)
arc[radius=\r, start angle=90+36*(\lasta), end angle=90+36*(\a)]
(\a);
\node at (90+36*\lasta+18:\r+0.5) {$\alpha_{\rlap{$\scriptstyle\name$}}$};
}
\foreach \a in { 1, ..., 14 }
{
\node at (90+36*5+5*\a:\r) {$\cdot$};
}
\node at (3.5,0) {\phantom{$alpha_{p-3}$}};% push right border
\end{tikzpicture}
\end{document}