У меня есть документ статьи с нестандартными номерами страниц, которые также меняются сторонами (переключение четности сторон: иногда четная сторона находится справа, иногда слева).
Цель: получить правильную пагинацию (переключение левой/правой геометрии) независимо от номера страницы ( \count0
/ \thepage
), вместо этого основываться на количестве страниц. Так, например, для документа, состоящего только из четных номеров страниц, пагинация все равно переключается.
Мне удалось получить доступ к фактическому количеству страниц разными способами:
- zref-abspage:
\theabspage
- zref-abspage:
\zref@extract{abspage}{abspage}
\thetotalpages
.
Я попробовал установить \newgeometry{...}
для каждой страницы, используя следующие подходы:
- бохук:
\AtBeginPage{...
\AddToHook{shipout}{...
илиshipout/before
илиshipout/after
- каждая страница:
\AddEverypageHook{...
- afterpage:
\afterpage{...
(для установки макета следующих страниц)
\ifthenelse{\isodd{\theabspage}}{
\newgeometry{left=8cm,right=3cm,top=3cm,bottom=3cm}
}{
\newgeometry{left=3cm,right=8cm,top=3cm,bottom=3cm}
}
Мои попытки закончились:
- Сразу после загрузки
bophook
у меня появились ошибки типа «Неопределенная управляющая последовательность. \end{titlepage}» \AddToHook{shipout...}
&\afterpage
=> формат не был применен\AddEverypageHook
=> Ошибка "Неправильная \prevdepth. \pagenumbering"
МВЭ:
\documentclass[twoside]{article}
\usepackage[pdfpagelayout=TwoPageRight]{hyperref}
\usepackage{fancyhdr,lipsum,geometry,ifthen}
\pagestyle{fancy}
\fancyfoot[C]{\thepage}
\newcommand\blankpage{ % source: https://tex.stackexchange.com/a/331068
\clearpage
\begingroup
\null
\thispagestyle{empty}
\addtocounter{page}{-1}
\hypersetup{pageanchor=false}
\clearpage
\endgroup
}
\usepackage{zref-abspage}
\makeatletter
\renewcommand{\cleardoublepage}{
\clearpage
\zref@refused{abspage}
\ifthenelse{\isodd{\zref@extract{abspage}{abspage}}}{
\blankpage
}{
\blankpage
\blankpage
}
}
\makeatother
% trying to make gutter compatible with custom page numbers:
\newgeometry{left=8cm,right=3cm,top=3cm,bottom=3cm}
%\usepackage{bophook}\AtBeginPage{
\AddToHook{shipout/after}{ % or shipout/before or shipout/after
%\usepackage{everypage} \AddEverypageHook{
%\usepackage{afterpage}\afterpage{6
\ifthenelse{\thetotalpages>1}{% Avoid applying new geometry on the title page
\ifthenelse{\isodd{\theabspage}}{
\newgeometry{left=8cm,right=3cm,top=3cm,bottom=3cm}
}{
\newgeometry{left=3cm,right=8cm,top=3cm,bottom=3cm}
}
}{}
}
\begin{document}
\begin{titlepage}
my title page
\end{titlepage}
\pagenumbering{roman}
\lipsum[1-8]
\cleardoublepage
\clearpage
\pagenumbering{arabic}
\addtocounter{page}{1}
\lipsum[1-8]
\cleardoublepage
\pagenumbering{roman}
\lipsum[1-10]
\end{document}
связанные вопросы: