How do I make pages which were "intentionally left blank"?
You could redefine \cleardoublepage
. Here's an example:
\documentclass[openright]{scrbook}
\newcommand*{\blankpage}{%
\vspace*{\fill}
{\centering This page would be intentionally left blank if we would not wish to inform about that.\par}
\vspace{\fill}}
\makeatletter
\renewcommand*{\cleardoublepage}{\clearpage\if@twoside \ifodd\c@page\else
\blankpage
\thispagestyle{empty}
\newpage
\if@twocolumn\hbox{}\newpage\fi\fi\fi}
\makeatother
\begin{document}
Text
\chapter{First chapter}
\end{document}
\blankpage
just prints what you like, both vertically and horizontally centered.
memoir
has \cleartooddpage
(and \cleartoevenpage
) which do just this. Paraphrased from the manual:
A likely example for the optional argument is
\cleartooddpage[\vspace*{\fill} THIS PAGE ACCIDENTALLY PRINTED ON \vspace*{\fill}]
which will put ‘THIS PAGE ACCIDENTALLY PRINTED ON’ in the centre of any potential skipped (empty) even numbered page.
I haven't seen an answer that handles correct centering in both horizontal and vertical direction. For analysis the answer of Stefan Kottwitz is taken:
% Set parameters for analyzing/debugging
\showboxdepth=\maxdimen
\showboxbreadth=\maxdimen
\tracingonline=1
\documentclass[openright]{scrbook}
\newcommand*{\blankpage}{%
\vspace*{\fill}
\centering
This page would be intentionally left blank if we would not wish
to inform about that.
\vspace{\fill}%
\showlists
}
\makeatletter
\renewcommand*{\cleardoublepage}{%
\clearpage
\if@twoside
\ifodd\c@page
\else
\blankpage
\thispagestyle{empty}
\newpage
\if@twocolumn
\hbox{}\newpage
\fi
\fi
\fi
}
\makeatother
\begin{document}
Text
\chapter{First chapter}
\end{document}
\showlists
stops the TeX run and displays the current vertical list.
This is written into the .log
file and, if \tracingonline
is set to a positive number, it is also printed on the terminal.
Excerpt from the .log
file:
### vertical mode entered at line 0
### current page:
\write-{}
\glue(\topskip) 11.0
\rule(0.0+0.0)x*
\penalty 10000
\glue 0.0 plus 1.0fill
\glue 0.0
\glue(\parskip) 0.0 plus 1.0
\glue(\baselineskip) 5.99585
\hbox(7.60416+2.12917)x418.25555, glue set - 0.1209
.\glue(\leftskip) 0.0 plus 1.0fil
.\hbox(0.0+0.0)x0.0
.\OT1/cmr/m/n/10.95 T
.\OT1/cmr/m/n/10.95 h
.\OT1/cmr/m/n/10.95 i
.\OT1/cmr/m/n/10.95 s
.\glue 3.65 plus 1.825 minus 1.21666
.\OT1/cmr/m/n/10.95 p
.\OT1/cmr/m/n/10.95 a
.\OT1/cmr/m/n/10.95 g
.\OT1/cmr/m/n/10.95 e
...
.\OT1/cmr/m/n/10.95 t
.\OT1/cmr/m/n/10.95 h
.\OT1/cmr/m/n/10.95 a
.\OT1/cmr/m/n/10.95 t
.\OT1/cmr/m/n/10.95 .
.\glue 4.86665 plus 5.47499 minus 0.40555
.\penalty 10000
.\glue(\parfillskip) 0.0
.\glue(\rightskip) 0.0 plus 1.0fil
\glue 0.0 plus 1.0fill
\glue 0.0
total height 26.72917 plus 1.0 plus 2.0fill
goal height 595.80026
prevdepth 2.12917, prevgraf 1 line
! OK.
Horizontal centering
The \hbox
with the text starts with:
\hbox(7.60416+2.12917)x418.25555, glue set - 0.1209
.\glue(\leftskip) 0.0 plus 1.0fil
.\hbox(0.0+0.0)x0.0
.\OT1/cmr/m/n/10.95 T
That means the left space is 0pt plus 1fil
. \leftskip
is set by \centering and the stretch component
plus 1.0fil
is needed for centering.
The box ends with:
.\OT1/cmr/m/n/10.95 t
.\OT1/cmr/m/n/10.95 .
.\glue 4.86665 plus 5.47499 minus 0.40555
.\penalty 10000
.\glue(\parfillskip) 0.0
.\glue(\rightskip) 0.0 plus 1.0fil
Again the stretch component plus 1.0fil
of \rightskip
comes from \centering
and is needed for centering. But there is a glue after the final dot:
.\glue 4.86665 plus 5.47499 minus 0.40555
That means there is extra white space at the end of the line.
It comes from the space after the final dot before \vspace
:
... that.
\vspace{\fill}
The paragraph has not yet ended, when \vspace
is called. Therefore the space is not added directly, but via \vadjust
. The following paragraph end usually removes the latest whitespace, thus that the latest line or white space before an emtpy line or \par
does not need to be removed. However, the space before \vadjust
is not seen by the paragraph end and appears in the output. This can be fixed by explicitely ending the paragraph:
... that.\par
\vspace{\fill}
Vertical centering
The bottom end looks fine:
\glue 0.0 plus 1.0fill
\glue 0.0
Just the fill component is present. But at the upper part we can find some additional contributions to the vertical space:
\glue(\topskip) 11.0
\rule(0.0+0.0)x*
\penalty 10000
\glue 0.0 plus 1.0fill
\glue 0.0
\glue(\parskip) 0.0 plus 1.0
\glue(\baselineskip) 5.99585
1. Full `\topskip` is inserted at the top of a page because of the following invisible rule, added by the star form `\vspace*`. Setting it to `0pt` locally fixes this.
2. When a new paragraph starts `\parskip` is added that might have larger values than shown here. Because we have just one paragraph here, setting it to zero is the easiest way.
3. The value for `\baselineskip` comes from the line breaking algorithm. The value is calculated from the setting of `\baselineskip` (`13.6pt`) minus the height of the line (`7.6pt`). This can be suppressed by `\nointerlineskip`.
New definition of \blankpage
:
\newcommand*{\blankpage}{%
\begingroup
\setlength{\topskip}{0pt}%
\setlength{\parskip}{0pt}%
\vspace*{\fill}%
\centering
\nointerlineskip % suppresses partial \baselineskip above text
This page would be intentionally left blank if we would not wish
to inform about that.\par
\vspace{\fill}%
\endgroup
% \showlists
}
Excerpt from the .log
file with \showlists
for new \blankpage
:
### vertical mode entered at line 0
### current page:
\write-{}
\glue(\topskip) 0.0
\rule(0.0+0.0)x*
\penalty 10000
\glue 0.0 plus 1.0fill
\glue 0.0
\glue(\parskip) 0.0
\hbox(7.60416+2.12917)x418.25555, glue set 1.30571fil
.\glue(\leftskip) 0.0 plus 1.0fil
.\hbox(0.0+0.0)x0.0
.\OT1/cmr/m/n/10.95 T
.\OT1/cmr/m/n/10.95 h
.\OT1/cmr/m/n/10.95 i
.\OT1/cmr/m/n/10.95 s
.\glue 3.65 plus 1.825 minus 1.21666
.\OT1/cmr/m/n/10.95 p
.\OT1/cmr/m/n/10.95 a
.\OT1/cmr/m/n/10.95 g
.\OT1/cmr/m/n/10.95 e
...
.\OT1/cmr/m/n/10.95 t
.\OT1/cmr/m/n/10.95 h
.\OT1/cmr/m/n/10.95 a
.\OT1/cmr/m/n/10.95 t
.\OT1/cmr/m/n/10.95 .
.\penalty 10000
.\glue(\parfillskip) 0.0
.\glue(\rightskip) 0.0 plus 1.0fil
total height 7.60416 plus 1.0fill
goal height 595.80026
### recent contributions:
\glue 0.0 plus 1.0fill
\glue 0.0
prevdepth 2.12917, prevgraf 1 line
! OK.
Support of twocolumn
With a small modification \blankpage
will also work with twocolumn
, when the text is put in the left column, but should be centered in the whole text area:
\newcommand*{\blankpage}{%
\begingroup
\setlength{\topskip}{0pt}%
\vspace*{\fill}%
\nointerlineskip % suppresses partial \baselineskip above text
\hbox to \linewidth{%
\hbox to \textwidth{%
\hfill
This page would be intentionally left blank if we would not wish
to inform about that.%
\hfill
}%
\hss
}%
\vspace{\fill}%
\endgroup
% \showlists
}