以下 MWE 给出此错误:
! Improper \prevdepth.
\newpage ...everypar {}\fi \par \ifdim \prevdepth
>\z@ \vskip -\ifdim \prevd...
l.5 \end{document}
如果我插入一个空白行,\end{document}
编译时不会出错。这是为什么?这是预期的行为吗?
梅威瑟:
\documentclass{article}
\usepackage{xgalley}
\begin{document}
Why is a blank line required below this?
\end{document}
相关文件版本:
xgalley.sty 2017/11/14 L3 Experimental galley
xparse.sty 2017/11/14 L3 Experimental document command parser
expl3.sty 2017/11/14 L3 programming layer (loader)
expl3-code.tex 2017/11/14 L3 programming layer
l3pdfmode.def 2017/03/18 v L3 Experimental driver: PDF mode
xtemplate.sty 2017/11/14 L3 Experimental prototype document functions
l3galley.sty 2017/11/14 L3 Experimental galley code
答案1
出现此问题的原因是在 LaTe2e 宏中添加了一些代码\newpage
('新页 上一页深度修复\prevdepth
')。这为添加了测试\newpage
:这发生在\par
标记之后。xgalley
加载时,标记的含义被修改为在插入原语之前扩展以下材料。这几乎总是可以的,但在这里我们遇到了麻烦,因为我们无法在不插入原语\par
的情况下扩展测试。解决方案是通过添加 来停止扩展:\ifdim\prevdepth
par
\relax
\documentclass{article}
\usepackage{xgalley}
\usepackage{etoolbox}
\patchcmd{\newpage}{\par}{\par\relax}{}{\FAILED}
\begin{document}
Why is a blank line required below this?
\end{document}