在此示例中
\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!
未将其插入文档的第二页:
这是预期的行为吗?总体上可以解决这个问题吗?
我知道各种类似的软件包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.}