![\hbox 溢出时崩溃](https://linux22.com/image/424162/%5Chbox%20%E6%BA%A2%E5%87%BA%E6%97%B6%E5%B4%A9%E6%BA%83.png)
上周,我交了一份作业,其中有一个公式超出了页面的边缘。真尴尬……
我希望通过让 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}
一个更好的解决方案是您始终检查日志文件,因为还有许多其他重要的警告需要阅读;尽管如此,这应该可以满足您的要求。