控制台输出:

控制台输出:

\hbox为什么这个节点会出现欠满的情况tikz?我该如何修复它?

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \node[draw, text width=6cm, align=right] {Some random text};
\end{tikzpicture}
\end{document}

控制台输出:

Underfull \hbox (badness 10000) in paragraph at lines 5--5
 [][][][]\OT1/cmr/m/n/10 Some ran-dom text

align=left使用或 时不会发生这种情况align=center。实际输出看起来不错。

答案1

不幸的是,这是不可避免的。如第 17.4.3 节所述PGF Man­ual

第 225 页: ... 如果您指定了较大的行宽,而节点文本适合一行,并且实际上比指定的要短得多text width,则会导致水平框未满。不幸的是,这是无法避免的... 请注意,您可能会收到令人讨厌的警告,因为完全正常的框是这样的,即当框非常大并且内容不够长以充分填充框时。

要关闭警告,您可以发出\hfill@marmot 在评论中提出的意见。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \node[draw, text width=6cm, align=right] {\hfill Some random text};
\end{tikzpicture}\par
$\uparrow$\par
No underfull \texttt{\textbackslash hbox} badness!\par
\vspace{1ex}
\hrule\par
\vspace{1ex}
\begin{tikzpicture}[scale=3]
  \draw[latex-latex]
    (4,1.2) node[above] {Underfull \texttt{\textbackslash hbox} badness} --
    (4,0) --
    (6.2,0) node[right] {text width};
  \draw
    (4.0,0) --
    (4.3,0) --
    (4.4,0.1087) --
    (4.5,0.1308) --
    (4.6,0.1558) --
    (4.7,0.1845) --
    (4.8,0.2158) --
    (4.9,0.2503) --
    (5.0,0.2884) --
    (5.1,0.3312) --
    (5.2,0.3769) --
    (5.3,0.4266) --
    (5.4,0.4805) --
    (5.5,0.5403) --
    (5.6,0.6032) --
    (5.7,0.6708) --
    (5.8,0.7433) --
    (5.9,1) --
    (6.1,1);
  \foreach \index in {4,4.5,...,6}
    \draw (\index,0.05) -- (\index,-0.05) node[below] {\index\,cm};
  \foreach \index in {0,2000,...,10000}
    \draw (4.05,\index/10000) -- (4-0.05,\index/10000) node[left] {\index};
\end{tikzpicture}
\end{document}

劣势与文本宽度

相关内容