![在每页开头更改页面布局](https://linux22.com/image/301779/%E5%9C%A8%E6%AF%8F%E9%A1%B5%E5%BC%80%E5%A4%B4%E6%9B%B4%E6%94%B9%E9%A1%B5%E9%9D%A2%E5%B8%83%E5%B1%80.png)
我希望奇偶页的页面布局截然不同。为了解决这个问题,我尝试使用atbegshi
和geometry
包。但结果很奇怪:\newgeometry
执行页面布局框架(geometry
选项)后发生了变化,但文档文本仍处于原始布局中。使用everyshi
包的结果相同。
使用\newgeometry
witheverypage
包也会产生奇怪的结果:文本布局的位置发生了变化,但文本布局大小保持原样;框架没有改变。
代码示例:
\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}