Definir geometria em todas as páginas (medianiz correta) em números de páginas mistos e não padrão em documentos frente e verso

Definir geometria em todas as páginas (medianiz correta) em números de páginas mistos e não padrão em documentos frente e verso

Eu tenho um documento de artigo com números de página não padrão que também mudam de lado (alterando a paridade de lado: às vezes até está à direita, às vezes à esquerda).
Meta: obtenha a paginação correta (alternando a geometria esquerda/direita) independentemente do número da página ( \count0/ \thepage), em vez disso, baseie-se na contagem de páginas. De modo que, por exemplo, para um documento que consiste apenas em números pares de páginas, a paginação ainda muda.


Consegui obter acesso à contagem real de páginas por diferentes meios:

  • zref-abspage:\theabspage
  • zref-abspage:\zref@extract{abspage}{abspage}
  • \thetotalpages.

Tentei definir um \newgeometry{...}para cada página usando as seguintes abordagens:

  • bopook:\AtBeginPage{...
  • \AddToHook{shipout}{...ou shipout/beforeoushipout/after
  • todas as páginas:\AddEverypageHook{...
  • afterpage: \afterpage{...(para definir o layout das próximas páginas)
\ifthenelse{\isodd{\theabspage}}{
    \newgeometry{left=8cm,right=3cm,top=3cm,bottom=3cm}
}{
    \newgeometry{left=3cm,right=8cm,top=3cm,bottom=3cm}
}

Minhas abordagens terminaram em:

  • Ao carregar, bophookrecebi erros como "Sequência de controle indefinida. \end{titlepage}"
  • \AddToHook{shipout...}& \afterpage=> nenhum formato foi aplicado
  • \AddEverypageHook=> Erro "\prevprofundidade imprópria. \pagenumbering"

MWE:

\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}

Perguntas relacionadas:

informação relacionada