LaTeX 如何判断水平盒子是否未满?这里,尽管空格很长,但没有警告

LaTeX 如何判断水平盒子是否未满?这里,尽管空格很长,但没有警告

使用以下代码和LuaTeX:

\documentclass[oneside]{book}
\usepackage[left=1.5in,right=1in,top=1in,bottom=1in]{geometry}
\usepackage{unicode-math}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{nicefrac}
\defaultfontfeatures{Ligatures=TeX}
\emergencystretch=0pt
\tolerance=7000
\pretolerance=1500
\relpenalty=9500
\binoppenalty=9500
\setmathfont[Path=\string~/texmf/,Extension=.otf]{xits-math}
\setmainfont{Latin Modern Roman}
\setlength{\parindent}{0pt}
\begin{document}

By Taylor's theorem, for any $\mathfrak{a}>0$, there is a least $\tilde{\mathfrak{m}}(\mathfrak{a})>0$ s.t. $|t|<\mathfrak{a}\implies\left|\nu_{\theta,j}'(t)-e^{-\nicefrac{i\pi}{4}}\cos\theta\sqrt{k_j}-it\sin\theta\right|\le \tilde{\mathfrak{m}}(\mathfrak{a})t^2$.

\end{document}

我生成了这张图片:

在此处输入图片描述

如您所见,空格非常大。让我感到困惑的是,LaTeX 没有给出任何警告。通常,当我有这样的间距(甚至间距比这好得多)时,我会发现水平盒子未满警告,但这一次,LaTeX 没有发出任何警告。我的问题是:为什么 LaTeX 没有给我“水平盒子未满”警告?我在同一文档的其他行中收到了水平盒子未满警告。

有没有办法指定当发生这种情况时我想要警告?

答案1

您可以按照以下方法自行调试此类情况。如果您\tracingparagraphs=1在此段前添加并运行xelatex,您会在日志文件中看到以下输出:

@firstpass
[]\TU/LatinModernRoman(0)/m/n/10 By Taylor’s theorem, for any $[] [] []$, there is a least $[][][][] [] []$ s.t. $[][][] [] []  []
@\penalty via @@0 b=986 p=9500 d=91252016
@@1: line 1.0 t=91252016 -> @@0
  [] [] [][][][][][]$. 
@\par via @@1 b=0 p=-10000 d=10100
@@2: line 2.2- t=91262116 -> @@1

如果使用 运行它lualatex,输出会有些不同,但相关数字是相同的:

@firstpass
[]\TU/LatinModernRoman(0)/m/n/10 By Tay-lor’s the-o-rem, for any $\TU/XITSMath(0)/m/n/10 

答案2

第一行的 badness 是 986。TeX 仅在 badness 超过 1000 时才报告坏的水平盒子,\hbadness默认情况下为 1000。将其降低到 986 以下,您将在日志中看到未满的盒子。

设置\hbadness=900我得到

Underfull \hbox (badness 986) in paragraph at lines 31--32
[]\TU/LatinModernRoman(0)/m/n/10 By Tay-lor’s the-o-rem, for any $\TU/XITSMat
h(0)/m/n/10 

相关内容