Почему эта tikzpicture не отображается по центру?

Почему эта tikzpicture не отображается по центру?

При создании диаграммы конечного автомата с помощью tikz я заметил, что она, похоже, не по центру. Этот результат кажется мне нелогичным из-за способа создания диаграммы, с использованием конструкции foreach со всеми узлами, имеющими одинаковый радиус и различные углы. Я также поместил один узел в координату (0,0), но он, похоже, не по центру. Ниже я привожу рабочий пример, демонстрирующий проблему. Я уверен, что должно быть логическое объяснение, которое я каким-то образом упускаю, и, возможно, кто-то здесь сможет объяснить, что происходит

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{cmbright}
\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,automata,positioning,calc}

\begin{document}

Indented text

\noindent Unindented text

\begin{figure}[h]
  \centering
\begin{tikzpicture}[-Stealth,shorten >=1pt,semithick]
                    \tikzstyle{every state}=[fill=blue!20,draw=blue!50,very thick,text=black,minimum size=1cm]
  \def \n {8}
  \def \radius {6cm}
  \node[state] (c) at (0,0) {};
  \foreach \s/\stext in {1/1,2/2\_1,3/3,4/4,5/5,6/6,7/7,8/8}
  {
    \node[state] (\s) at ({-360/\n * (\s - 1)+90}:\radius) {\stext};
  }
\end{tikzpicture}
\end{figure}

\end{document}

введите описание изображения здесь

решение1

Если я скомпилирую ваш код, я получу следующее предупреждение: Overfull \hbox (26.08575pt too wide)это означает, что ваше изображение шире, чем textwidth, и поэтому оно не отцентрировано относительно полей. Чтобы уменьшить изображение, вы можете добавить опцию scale=0.9в \begin{tikzpicture}.

Вам также следует заменить \tikzstyleкоманду на , \tikzset{every state/.append style={fill=blue!20,draw=blue!50,very thick,text=black,minimum size=1cm}} поскольку предыдущая устарела.

Связанный контент