有时我会用它\vbadness=10000
来抑制警告
Underfull \vbox (badness ...) has occurred while \output is active...
我\vbadness=10000
把发生警告的页面放在了\vbadness=1000
下一个页面。我对 也做了同样的操作\hbadness
。
我知道这只能从日志中删除警告而不能解决任何问题,但是当我无法修复出现问题的页面时,我只是让警告消失,这样它就不会再困扰我了(我是一名专业排字员,我不允许根据自己的喜好更改文本和/或布局,所以有时这是摆脱警告的最后机会)。
我知道我可以使用\vbadness=10000
after\begin{document}
和\vbadness=1000
before\end{document}
一劳永逸地消除所有这些警告,但我更愿意逐一抑制它们,以防作者要求进行更多更改,而这可能会搞乱布局并导致更多此类警告(这种情况确实会发生)。
为了节省时间,有一个只在需要的地方改变的宏会非常有用\vbadness
。像这样:
The quick brown fox jumps over the lazy dog.
\thispagevbadness
Time's up! Three bucks off!
可以这样做吗?很抱歉没有发布任何尝试,但我不知道从哪里开始做这件事。
答案1
我真的不推荐这样做,但是有两个未满的页面,您可以取消注释或注释页码测试以查看或不查看警告。
\documentclass{article}
\AddToHook{shipout/after}{%
\global\vbadness=1000
% page before the issue
\ifnum\value{page}=1 \global\vbadness=10000 \fi
\ifnum\value{page}=2 \global\vbadness=10000 \fi
}
\flushbottom
\begin{document}
aaa
bbb
\newpage
ccc
ddd
\pagebreak
eee
fff
\pagebreak
ggg
\end{document}
答案2
这可以抑制第二页的不良内容。但是必须进行全局分配,这有点可疑。
\documentclass{book}
\begin{document}
1.\rule{1cm}{0.42\textheight}
\rule{1cm}{0.572\textheight}
2.\rule{1cm}{0.42\textheight}
\AddToHookNext{shipout/before}{%
\global\vbadness=10000 %set
\AddToHookNext{shipout/before}{\global\vbadness=1000}%reset
}
\rule{1cm}{0.572\textheight}
3.\rule{1cm}{0.42\textheight}
\rule{1cm}{0.572\textheight}
4.\rule{1cm}{0.42\textheight}
\rule{1cm}{0.572\textheight}
\end{document}