“文件堆栈下溢!”是什么意思?

“文件堆栈下溢!”是什么意思?

我收到两次错误:

包 currfile 警告:文件堆栈下溢!在输入行 xxx。

我没有明确地加载currfile,但独立程序似乎可以加载。

\usepackage{standalone}我在一行上加载后收到一次此警告,其中写入了有效的 if 指令( ),并且在该行之后\ifclolor ... \fi再次收到此警告。standalone.sty\RequirePackage{currfile}\ifsa@subpreambles

我不知道这个警告是什么意思,所以我不知道该搜索什么。到目前为止,还没有任何地方处理过此消息。

编辑: 经过一番搜索,我发现它在加载时出现unicode-math,并且standalone

% arara: lualatex
\documentclass{scrreprt}
\usepackage{unicode-math}
\usepackage{standalone}    
\begin{document}
\chapter{Chapter}
Nothing
\end{document}

答案1

此警告是由currfileat-end 钩子引起的,因为它试图恢复不可用的父文件名。如果currfile由另一个包加载而不是在主文件中加载,就会出现这种情况。

currfile需要filehook并为所有文件安装相应的 at-begin 和 at-end 钩子。如果filehook之前尚未加载,则钩子将仅受之后打开的所有文件的影响。但是,如果它已经加载,则执行 at-end 钩子currfile和加载它的包,以及加载该包的包等,而 at-begin 钩子在修补它们之前已经执行currfile。这会导致堆栈下溢。

currfile一种解决方法是在序言中尽早加载,filehook在被任何包或类加载之前。

由于我认为在这种情况下没有真正的方法可以避免堆栈下溢,而且这不是问题,在任何其他情况下都不会发生下溢,所以我现在完全删除了警告。在这种情况下,宏\currfilename总是空的。我现在将它们更改为保存主文件名。我将很快将这些更改发布为新版本。

参见官方错误单了解更多信息。

相关内容