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}