如何才能对文档的某些页面进行连续编号?

如何才能对文档的某些页面进行连续编号?

以下代码排版了一份 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}

相关内容