以下代码排版了一份 12 页的文档;文本仅出现在每隔一页上,并且两个文本页之间有一个空白页:
\documentclass{article}
\usepackage{atbegshi}
\usepackage{lipsum}
\makeatletter
\AtBeginShipout{%
\ifodd\c@page
\begingroup
\AtBeginShipoutOriginalShipout\box\AtBeginShipoutBox
\global\AtBegShi@Discardedtrue
\mbox{}\thispagestyle{empty}\clearpage
\endgroup
\else
\fi%
}
\makeatother
\begin{document}
\lipsum[1-30]
\end{document}
现在我想按顺序对包含文本的页面进行编号;使用上面的代码,包含文本的页面编号为 1、3、5、... 但我希望它们编号为 1、2、3、... 我做了一些尝试,但都没有产生所需的结果。我如何实现连续编号?
这个想法是将其包装成一个命令,该命令将允许改变组内文本流的行为:当调用时,该命令将导致文本在每个其他页面中排版,但保持带有文本的页面的连续编号;一旦组结束,文本和编号必须恢复到其正常行为。
答案1
这对我来说似乎有效。诀窍是使用不同的计数器来计算发货数量而不是页数。
\documentclass{article}
\usepackage{changepage}
\usepackage{etoolbox}
\usepackage{atbegshi}
\usepackage{lipsum}
\newcounter{mypage}
\makeatletter
\AtBeginShipoutInit{\setcounter{mypage}{0}}
\AtBeginShipout{
\ifnumodd{\value{mypage}}{
\AtBeginShipoutOriginalShipout\box\AtBeginShipoutBox
\addtocounter{page}{-1}
}{
\mbox{}\thispagestyle{empty}\clearpage
}
\addtocounter{mypage}{1}
}
\makeatother
\begin{document}
First page \pageref{test}
Last page \pageref{test2}
\label{test}
\lipsum[1-30]
\label{test2}
\end{document}