[Tex/LaTex] Changing the top margin of one single page with typearea package

biblatexmarginstypearea

I have a bit of an exotic problem. I have a large document and want to extend the vertical margins of one specific page (publication list) in order to fit everything into one page. Extending the bottom is very easy with \enlargethispage. However, I just cannot extend the top margin. I use the typearea package (but no KOMA class) and \areaset for setting up the layout – I really don't want to change that (e.g. to geometry?) by any means possible…

Now the exotic part ist this: Many times I found as a suggestion (i.e. alternative to geometry) to use the changepage package and something like \changepage{}{}{}{}{}{-3cm}{}{}{} (6th parameter being the top margin). The particular page I want to be enlarged (publication list) is generated via biblatex. For some weird reason, the \changepage macro is not working here, i.e. it is apparently ignored. \changepage works however on a test document with \areaset as layout and a \chapter* as heading (similar to what biblatex does)… Here's the essential part of the code including all packages:

\documentclass[pdftex,openright,12pt,a4paper,twoside,notitlepage]{book}
\usepackage[ngerman,english]{babel}
\usepackage{tocloft}
\usepackage[Lenny]{fncychap}
\usepackage{fancyhdr}
\usepackage{typearea}
\usepackage[strict]{changepage}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage[utf8]{inputenc}
\usepackage{siunitx}
\usepackage[font={small,sf},labelfont=bf,margin=0pt]{caption}
\usepackage{csquotes}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[mathscr]{euscript}
\usepackage{textgreek}
\usepackage{upgreek}
\usepackage{nicefrac}
\usepackage{graphicx}
\usepackage{nomencl}
\usepackage[backend=biber,style=...,biblabel=brackets,defernumbers=true]{biblatex}
\usepackage[ocgcolorlinks,unicode]{hyperref}

\areaset[9mm]{15cm}{22cm} % <-- main layout
\addtolength{\topmargin}{15mm}
\setlength{\headheight}{14.5pt}

\defbibheading{publist}[1]{% <-- heading setup for biblatex environment
\chapter*{#1}%
\markboth{#1}{#1}%
\vspace*{-1.5cm}}% <-- additionally reduce spacing between "chapter" title and text

\defbibenvironment{publist} %  <-- environment setup for biblatex
{\list{}{\setlength{\leftmargin}{0pt}}}
{\endlist}
{\item}

\begin{document}

... % lots of frontmatter stuff
\cleardoublepage

\begin{refsection}
\nocite{...} % <-- prepare citations for publication list
\phantomsection  % correct jump mark for hyperref
\addcontentsline{toc}{chapter}{List of publications}
\changepage{}{}{}{}{}{-3cm}{}{}{} % <-- this is ignored!
\printbibliography[env=publist,heading=publist,title={...},sorting=none] % <-- bibliography with previously defined header/environment
\enlargethispage{4\baselineskip} % <-- this works fine
\vspace*{\stretch{1}}
\includegraphics{...} % <-- some logo at the page bottom
\end{refsection}
\clearpage

So, how can I shift only this particular page with the "special" bibliography up without screwing up everything?

Best Answer

Maybe you can use something like that

\usepackage{typearea}
\AfterSettingArea{\setlength{\headheight}{14.5pt}}
\areaset[9mm]{15cm}{22cm} % <-- main layout
\addtolength{\topmargin}{15mm}% (297-220):3x2-36.3=15
...
\cleardoublepage
\storeareas\StandardArea% <- store the main layout
\areaset[9mm]{15cm}{24cm}% <- change the layout
\addtolength{\topmargin}{1.7mm}% (297-240):3x2-36.3=1.7
...
\clearpage
\StandardArea% <- restore main layout

enter image description here enter image description here

Code:

\documentclass[pdftex,openright,12pt,a4paper,twoside,notitlepage]{book}
\usepackage[utf8]{inputenc}
\usepackage[ngerman,english]{babel}
\usepackage[Lenny]{fncychap}
\usepackage{fancyhdr}\pagestyle{fancy}
\usepackage{graphicx}

\usepackage[backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}% example bib file

\defbibheading{publist}[1]{% <-- heading setup for biblatex environment
\chapter*{#1}%
\markboth{#1}{#1}%
\vspace*{-1.5cm}}% <-- additionally reduce spacing between "chapter" title and text

\defbibenvironment{publist} %  <-- environment setup for biblatex
{\list{}{\setlength{\leftmargin}{0pt}}}
{\endlist}
{\item}

\usepackage{typearea}
\AfterSettingArea{\setlength{\headheight}{14.5pt}}
\areaset[9mm]{15cm}{22cm} % <-- main layout
\addtolength{\topmargin}{15mm}% (297-220):3x2-36.3=15


\usepackage{showframe}% to show the pagelayout
\usepackage{mwe}% dummy text and example image

\usepackage[ocgcolorlinks,unicode]{hyperref}

\begin{document}
\tableofcontents
\blinddocument

\cleardoublepage
\storeareas\StandardArea% <- store the main layout
\areaset[9mm]{15cm}{24cm}% <- change the layout
\addtolength{\topmargin}{1.7mm}% (297-240):3x2-36.3=1.7
\begin{refsection}
\nocite{westfahl:space}% only example
\phantomsection  % correct jump mark for hyperref
\addcontentsline{toc}{chapter}{List of publications}
\printbibliography[env=publist,heading=publist,title={...},sorting=none] % <-- bibliography with previously defined header/environment
\enlargethispage{2\baselineskip} % <-- this works fine
\vspace*{\stretch{1}}
\includegraphics[width=2cm]{example-image} % <-- some logo at the page bottom
\end{refsection}

\clearpage
\StandardArea% <- restore main layout
\blinddocument
\end{document}