Here is an abridged example which switches between two custom page sizes with corresponding layouts (margins), which can compile with pdflatex
- for more details, see my answer in Problem with setting correct custom page size with 'geometry' in xelatex:
\documentclass{article}
% reminder: US letter: 596pt x 795pt
\newlength{\pagewidthA}
\newlength{\pageheightA}
\setlength{\pagewidthA}{300bp}
\setlength{\pageheightA}{400bp}
\newlength{\pagewidthB}
\newlength{\pageheightB}
\setlength{\pagewidthB}{400bp}
\setlength{\pageheightB}{500bp}
% stockwidth and stockheight - from memoir,
% here just for cheating `layouts` warnings
\newlength{\stockwidth}
\newlength{\stockheight}
\usepackage{geometry}
% this command will take effect into L1 layout just after \begin{document}
% but the L1 geometry will otherwise be ignored
\geometry{twoside,inner=50bp,outer=30bp,top=50bp,bottom=50bp}
\usepackage{tikz,enumitem}
\usepackage{fix-cm}
\usepackage{layouts}
\usepackage{etoolbox}
\patchcmd{\drawpage}{\ifdrawparameters}{\iftrue}%
{\typeout{^^J*******\string\drawpage fixed*******^^J}}%
{\typeout{^^J*******\string\drawpage not fixed*******^^J}}
\usepackage{lipsum}
\makeatletter
\newcommand{\printpagevalues}{%
% from geometry.sty:
* paper: \ifx\Gm@paper\@undefined<default>\else\Gm@paper\fi \\%
* layout: \ifGm@layout<custom>\else<same size as paper>\fi \\%
\@ifundefined{ifGm@layout}{}{%
\ifGm@layout
* layout(width,height): (\the\Gm@layoutwidth,\the\Gm@layoutheight) \\%
\fi
* layoutoffset:(h,v)=(\the\Gm@layouthoffset,\the\Gm@layoutvoffset) \\%
}%
\pagevalues % from package layouts
}
\makeatother
\newcommand{\generatePageLayouts}{%
\newgeometry{layoutwidth=\pagewidthA,layoutheight=\pageheightA,left=1mm,right=5mm,bottom=1mm,top=1mm}
\savegeometry{LayoutPageA}
\newgeometry{layoutwidth=\pagewidthB,layoutheight=\pageheightB,twoside,inner=2.5cm,outer=0.5cm,top=1.5cm,bottom=1.5cm}
\savegeometry{LayoutPageB}
}
\newcommand{\switchToLayoutPageA}{%
% switch page size first:
\pdfpagewidth=\pagewidthA \pdfpageheight=\pageheightA % for PDF output
\paperwidth=\pagewidthA \paperheight=\pageheightA % for TikZ
\stockwidth=\pagewidthA \stockheight=\pageheightA % hyperref (memoir)?!
\loadgeometry{LayoutPageA} % note; \loadgeometry may reset paperwidth/h!
}
\newcommand{\switchToLayoutPageB}{%
% switch page size first:
\pdfpagewidth=\pagewidthB \pdfpageheight=\pageheightB % for PDF output
\paperwidth=\pagewidthB \paperheight=\pageheightB % for TikZ
\stockwidth=\pagewidthB \stockheight=\pageheightB % hyperref (memoir)?!
\loadgeometry{LayoutPageB} % note; \loadgeometry may reset paperwidth/h!
}
\begin{document}
% here geometry layout L1 is instantiated;
% without anything else, paper size defaults to US letter!
% \restoregeometry command restores L1!!
\fontsize{8}{9}\selectfont % this nowork in preamble!
% generate page layouts first based on layoutwidth as page size;
% don't switch actual page sizes yet:
\generatePageLayouts{}
%%% start with content
% start with LayoutPageA (includes switching page size)
\switchToLayoutPageA{}
\pagestyle{empty} % no page numbers here
\\
\the\paperwidth
\lipsum[1]
\printpagevalues{}
\clearpage
% switch to LayoutPageB (includes switching page size)
\switchToLayoutPageB{}
% start page numbering here ("this will reset the page number"):
\pagenumbering{arabic}
% make page numbers visible
\pagestyle{plain}
\the\paperwidth
\lipsum[1]
Trying
some
text
\printpagevalues{}
\end{document}