\hbox 溢出时崩溃

\hbox 溢出时崩溃

上周,我交了一份作业,其中有一个公式超出了页面的边缘。真尴尬……

我希望通过让 LaTeX 在发现 \hbox 过满时停止编译来防止这种情况再次发生。我尝试设置\tolerance=0,但 LaTeX 似乎很乐意继续编译,仍然打印如下警告:Overfull \hbox (222.96991pt too wide) detected at line 46

我想知道,如何确保包含超出页面范围的方程式的文档无法编译?(如果有所不同,我会使用 XeLaTeX。)

答案1

假设您愿意使用 LuaLaTeX,那么只要\hbox发现溢出,就可以很简单地强制发生不可恢复的错误:

\documentclass{article}

\directlua{
    luatexbase.add_to_callback("hpack_quality",
        function(incident, detail, head, first, last)
            texio.write_nl(
                "term and log",
                incident ..
                " \string\\hbox (badness " .. detail .. ") on lines " ..
                first .."--" .. last .. [[.^^J]]
            )

            if incident == "overfull" then
                tex.nest[0].head = nil --[[ Force a fatal error ]]
            end
        end,
        "overfull_hbox"
    )
}

\begin{document}
    Hello!

    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
\end{document}

一个更好的解决方案是您始终检查日志文件,因为还有许多其他重要的警告需要阅读;尽管如此,这应该可以满足您的要求。

相关内容