在每页开头更改页面布局

在每页开头更改页面布局

我希望奇偶页的页面布局截然不同。为了解决这个问题,我尝试使用atbegshigeometry包。但结果很奇怪:\newgeometry执行页面布局框架(geometry选项)后发生了变化,但文档文本仍处于原始布局中。使用everyshi包的结果相同。

使用\newgeometrywitheverypage包也会产生奇怪的结果:文本布局的位置发生了变化,但文本布局大小保持原样;框架没有改变。

代码示例:

\documentclass[a5paper]{article}

\usepackage[showframe]{geometry}
\usepackage{atbegshi}

\AtBeginShipout{\newgeometry{noheadfoot,nomarginpar,top=1cm,bottom=1cm,inner=1cm,outer=1cm}}

\begin{document}
    \par AAAA
    \vfill
    \par BBB
    \newpage
    \par CCC
    \vfill
    \par DDD
\end{document}

结果: 奇怪的页面布局

如何解决这个问题呢?

答案1

这是一个例子。虽然这很不寻常,但它可能会解决你的问题。

\oddgeometryeven{}{}\newgeometry{}在每页开头放置一个。第一个参数用于奇数页,第二个参数用于偶数页。

\documentclass{article}

\usepackage{geometry}

\makeatletter
\let\@@outputpage\@outputpage
\def\@outputpage{\expandafter\@thisgeometry\@@outputpage}
\def\oddgeometryeven#1#2{%
    \gdef\@thisgeometry{%
    \ifodd\thepage
        \newgeometry{#1}%
    \else
        \newgeometry{#2}%
    \fi}
}
\makeatother

\oddgeometryeven{left=5mm}{top=5mm}

\begin{document}

Page 1 (left=5mm)

\newpage

Page 2 (top=5mm)

\newpage

Page 3 (left=5mm)

\newpage

Page 4 (top=5mm)

\end{document}

相关内容