带有 pgfplots 图表的“Overfull \hbox”

带有 pgfplots 图表的“Overfull \hbox”

width=\textwidth当我使用时在轴上设置时出现“Overfull \hbox”错误pgfplots

这是 MWE。显示的确切错误是Overfull \hbox (6.19328pt too wide) in paragraph at lines 22--23

\documentclass[11pt]{book}

\usepackage{pgfplots}
\pgfplotsset{compat=1.9}

\begin{document}
      \centering   % interestingly. removing this increase the error to `23.19328pt too wide`
      \begin{tikzpicture}
        \begin{axis}[
            ylabel={Y label},
            xmin=0, xmax=10,
            xtick={0,1,2,3,4,5,6,7,8,9,10},
            width={\textwidth},
        ]

          \addplot[]
          coordinates {
            (0,21.70)(1,21.71)(8,20.93)(9,20.47)(10,20.40) % Something. Doesn't really matter
          };
          \addlegendentry{Precision}
        \end{axis}
      \end{tikzpicture}
\end{document}

我在这里和网上读了很多答案,但似乎都不起作用。而且由于相对较新,我无法进一步调试。

有任何想法吗?

答案1

添加行

\usepackage[showframe]{geometry}

回到序言来了解发生了什么。

  • 左图是给出的代码。您会看到标签10超出了文本宽度。
  • 右边的图片已删除\centering。由于现在图片开始了一个以缩进开头的新段落,因此图片突出得更多。如果用 替换,则\centering图片\noindent将排版而无缩进 flushleft。

    在此处输入图片描述      在此处输入图片描述

解决方案是更换

width={\textwidth}

经过

width={\dimexpr\textwidth-7pt}

其中7pt对应于 TeX 在溢出 hbox 消息中报告的数量。

在此处输入图片描述

只是为了确保:该行\usepackage[showframe]{geometry}仅用于测试目的,请在最终版本中将其删除。

最后,这是图片的代码(无框架)。

\documentclass[11pt]{book}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\begin{document}
      \noindent
      \begin{tikzpicture}
        \begin{axis}[
            ylabel={Y label},
            xmin=0, xmax=10,
            xtick={0,1,2,3,4,5,6,7,8,9,10},
            width={\dimexpr\textwidth-7pt},
        ]
          \addplot[]
          coordinates {(0,21.70)(1,21.71)(8,20.93)(9,20.47)(10,20.40)};
          \addlegendentry{Precision}
        \end{axis}
      \end{tikzpicture}
\end{document}

自动调整:可以使用包自动进行调整adjustbox。以下代码将“某些 LaTeX 材料”的大小调整为\textwidth

\documentclass{...}
\usepackage{adjustbox}
\begin{document}
...
\begin{adjustbox}{width=\textwidth}
   ... some LaTeX material ...
\end{adjustbox}
...
\end{document}

以下是上述示例的代码。

\documentclass[11pt]{book}
\usepackage{adjustbox}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\begin{document}
    \begin{adjustbox}{width=\textwidth}
      \begin{tikzpicture}
        \begin{axis}[
            ylabel={Y label},
            xmin=0, xmax=10,
            xtick={0,1,2,3,4,5,6,7,8,9,10},
            width={\textwidth},
        ]
          \addplot[]
          coordinates {
            (0,21.70)(1,21.71)(8,20.93)(9,20.47)(10,20.40)
          };
          \addlegendentry{Precision}
        \end{axis}
      \end{tikzpicture}
    \end{adjustbox}
\end{document}

相关内容