デフォルト以外のページ番号を持つ記事文書があり、そのページ番号も左右が切り替わります (左右の切り替えのパリティ: 偶数が右側になる場合もあれば、左側になる場合もあります)。
ゴール\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 が不適切です」
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}
関連する質問: