3

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?

  • 1
    Would be easier to help if you gave us compilable code we can use to reproduce. – cfr Mar 24 '15 at 0:51
4

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}
  • 1
    That's exactly what I was looking for, thanks a lot! I didn't know you could use \areaset outside the preamble (also the tricks to store and restore the layout). However, it produces a typearea warning, saying that it's a "dirty hack" and shouldn't be used by anyone ;)... I'm fine with that, since anything else seems ok - but is there also a "clean" way? – Novgorod Mar 24 '15 at 16:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.