如何僅對文件的某些頁面進行連續編號?

如何僅對文件的某些頁面進行連續編號?

下面的程式碼排版了一個 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}

相關內容