为什么这个 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)这意味着您的图像比文本宽度更宽,因此相对于边距似乎没有居中。要使图像变小,您可以添加scale=0.9选项\begin{tikzpicture}

您还应该用 替换该\tikzstyle命令, \tikzset{every state/.append style={fill=blue!20,draw=blue!50,very thick,text=black,minimum size=1cm}} 因为前者已被弃用。

相关内容