为什么代码
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{backgrounds,fit}
\tikzstyle{internal} = [draw, fill, shape=circle]
\begin{document}
\begin{tikzpicture}[scale=0.6,transform shape,node distance=1.4cm,semithick]
\node[internal] (0) {};
\node[internal] (1) [right of=0] {};
\node[internal] (2) [above right of=1] {};
\node[internal] (3) [above of=2] {};
\node[internal] (4) [below right of=1] {};
\node[internal] (5) [below of=4] {};
\node[internal] (6) [below right of=2] {};
\node[internal] (7) [right of=6] {};
\path (0) edge node[near end] (e1) {} (1)
(2) edge node[near start] (e2) {} (3)
(4) edge node[near start] (e3) {} (5)
(6) edge node[near start] (e4) {} (7);
\begin{pgfonlayer}{background}
\node[draw=blue!60,thick,rounded corners,fit = (e1) (e2) (e4)] {};
\end{pgfonlayer}
\end{tikzpicture}
\end{document}
带输出
有一个坏的盒子(见日志文件在这里),而此代码
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{backgrounds,fit}
\tikzstyle{internal} = [draw, fill, shape=circle]
\begin{document}
\begin{tikzpicture}[scale=0.6,transform shape,node distance=1.4cm,semithick]
\node[internal] (0) {};
\node[internal] (1) [right of=0] {};
\node[internal] (2) [above right of=1] {};
\node[internal] (3) [above of=2] {};
\node[internal] (4) [below right of=1] {};
\node[internal] (5) [below of=4] {};
\node[internal] (6) [below right of=2] {};
\node[internal] (7) [right of=6] {};
\path (0) edge node[near end] (e1) {} (1)
(2) edge node[near start] (e2) {} (3)
(4) edge node[near start] (e3) {} (5)
(6) edge node[near start] (e4) {} (7);
\begin{pgfonlayer}{background}
\node[draw=blue!60,thick,rounded corners,fit = (e1) (e2) (e3)] {};
\end{pgfonlayer}
\end{tikzpicture}
\end{document}
(其中倒数第四行中的“e4”更改为“e3”)输出
没有坏盒子(参见日志文件在这里)?
答案1
问题出乎意料地简单:这是因为键通过设置键同时激活来fit
调整已安装节点的大小。您的节点和相距太远,以至于节点中的文本(好吧,空文本)无法居中,而不会在两侧引入过多的拉伸。当您仅将节点安装在和周围时,拉伸不足以触发警告。text width
text centered
e1
e4
e1
e3
underfull
更简单的 MWE 演示:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\begin{document}
\begin{tikzpicture}[every node/.style={outer sep=0pt}]
\coordinate (A) at (0,0);
\coordinate (B) at (3.1cm,1);
\node [draw, fit=(A) (B)] {};
\end{tikzpicture}
\end{document}
这会产生一个underfull
警告。如果我们将 的位置调整(B)
为(3.0cm,1)
,警告就会消失。更简单的是,如果我们有
\node [
text centered,
text width=3.1cm,
] {};
我们underfull
也收到了警告(fit
根本没有涉及)。更改text width
为3.0cm
可消除警告。
因此,您可以采取以下措施来消除代码中的警告:设置every fit/.append style=text badly centered
。该样式告诉 TikZ 也将文本居中,但要对过度拉伸更加放松。在 CVS 版本中,fit
库默认使用此键,这就是 PolGab 无法重现错误的原因。
实际上,由于您根本没有使用文本,您也可以设置align=left
或align=right
消除警告,但text badly centered
无论如何使用都是一个好主意。