分页符后未调用 \afterpage

分页符后未调用 \afterpage

在此示例中

\documentclass{article}

\usepackage[a6paper,landscape,margin=1cm,bottom=2cm]{geometry}
\usepackage[english]{babel}
\usepackage{blindtext}

\usepackage{afterpage,refcount,lastpage}
\newcommand{\testafterpage}{%
    \noindent{\Large\ttfamily NEW PAGE!\quad}%
    \afterpage{\testafterpage}%
}
\AtBeginDocument{\testafterpage}

\begin{document}
\blindtext[3]
\end{document}

NEW PAGE!使用该包时,应在每页开头打印以下文字afterpage。但由于某种原因,NEW PAGE!未将其插入文档的第二页:

afterpage 在第二页失败

这是预期的行为吗?总体上可以解决这个问题吗?

我知道各种类似的软件包atbegshi允许在页面输出时添加一些内容,但我不知道这是否也可以用作奇怪行为的替代品afterpage

答案1

\newcommand{\testafterpage}{%
    \noindent{\Large\ttfamily NEW PAGE!\quad}%
    \afterpage{\testafterpage}%
}

绝对不能保证将文本添加到每一页。递归调用将\afterpage在分页符被执行以发送上一页的位置添加,但如果收集了超过一页的文本,那么这里就是错误的位置。

\afterpage是一种极具侵入性且脆弱的机制:它的设计根本不是为了以这种方式在文档中一致使用。

% This package implements a command, |\afterpage|, that causes the
% commands specified in its argument to be expanded after the current
% page is output.\footnote{This is really a pre-release, to see whether
% people like the idea of a command like this. This implementation is
% \emph{not} particularly robust. This implementation does not work in
% two column mode, and can get `confused' by \LaTeX's floating
% environments.}

相关内容