
次のコードは 12 ページのドキュメントをタイプセットします。テキストは 1 ページおきにのみ表示され、2 つのテキスト ページの間には空白ページがあります。
\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 ページおきにテキストがタイプセットされます。グループが終了すると、テキストと番号は通常の動作に戻ります。
答え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}