
Следующий код верстает 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}