当使用 pdflatex 编译下面的 MWE 时,我收到警告Underfull \hbox (badness 10000) in paragraph at lines 26--27
和Underfull \hbox (badness 10000) in paragraph at lines 36--37
。
我尝试通过\hfill
在子图之间使用来避免这种情况,但没有效果。
\documentclass{scrbook}
\usepackage[utf8]{inputenx}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{epstopdf}
\usepackage{subcaption}
\usepackage{gnuplottex}
\usepackage{xparse}
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\convertlen}{ O{cm} m }
{
\dim_to_unit:nn { #2 } { 1 #1 } cm
}
\ExplSyntaxOff
\begin{document}
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{.45\textwidth}
\begin{gnuplot}[terminal = cairolatex, terminaloptions = {size \convertlen{\textwidth},\convertlen{.3\textheight}}]
plot sin(x)
\end{gnuplot}
\caption{A subfigure}
\label{fig:1a}
\end{subfigure}%
\hfill
\begin{subfigure}[b]{.45\textwidth}
\begin{gnuplot}[terminal = cairolatex, terminaloptions = {size \convertlen{\textwidth},\convertlen{.3\textheight}}]
plot sin(x)
\end{gnuplot}
\caption{Another subfigure}
\label{fig:1b}
\end{subfigure}
\caption{A figure}\label{fig:1}
\end{figure}
\end{document}
答案1
如果你添加
\showboxdepth3
\showboxbreadth10
\tracingonline1
要查看哪个盒子未满,你会看到
\hbox(178.66272+0.0)x188.21371
.\hbox(0.0+0.0)x0.0
.\hbox(178.66272+0.0)x187.69623
..\special{ps: currentpoint currentpoint translate 1 1 scale neg exch neg exch
t\ETC.}
..\hbox(178.66272+0.0)x0.0, glue set - 187.69623fil
...\hbox(178.66272+0.0)x187.69623 []
...\glue 0.0 plus 1.0fil minus 1.0fil
..\special{ps: currentpoint currentpoint translate 1 1 div 1 1 div scale neg ex
c\ETC.}
.\glue(\rightskip) 0.0
因此,该线试图达到 188.21371pt,但带有绘图的框是 187.69623pt,该线上唯一的胶水是\rightskip
,即零,因此框未充满。
这有点奇怪,因为一行段落通常位于\parfillskip
末尾,但在 gnuplot 的逐字处理中,这行段落已被删除。
不需要调试到底\parfillskip
发生了什么,一个更简单的修复方法是使其\rightskip
非零,如果你取消注释,%\centering
警告就会消失。
(我更新了 的名字\dim_to_decimal_in_unit:nn
)
\documentclass{scrbook}
\usepackage[utf8]{inputenx}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{epstopdf}
\usepackage{subcaption}
\usepackage{gnuplottex}
\usepackage{xparse}
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\convertlen}{ O{cm} m }
{
\dim_to_decimal_in_unit:nn { #2 } { 1 #1 } cm
}
\ExplSyntaxOff
%\showoutput
\showboxdepth3
\showboxbreadth10
\tracingonline1
\begin{document}
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{.45\textwidth}
%\centering
\begin{gnuplot}[terminal = cairolatex, terminaloptions = {size \convertlen{\textwidth},\convertlen{.3\textheight}}]
plot sin(x)
\end{gnuplot}
\caption{A subfigure}
\label{fig:1a}
\end{subfigure}%
\hfill
\begin{subfigure}[b]{.45\textwidth}
\centering
\begin{gnuplot}[terminal = cairolatex, terminaloptions = {size \convertlen{\textwidth},\convertlen{.3\textheight}}]
plot sin(x)
\end{gnuplot}
\caption{Another subfigure}
\label{fig:1b}
\end{subfigure}
\caption{A figure}\label{fig:1}
\end{figure}
\end{document}