Vertically centering a title page
Vertically centering a title page
I'm trying to vertically center a title on a custom-sized page with latex. I've written the following code, but for some reason it doesn't center. Could someone please point me to what's wrong with it?
Thanks!
documentclass{article}
setlength{pdfpagewidth}{88.184mm}
setlength{pdfpageheight}{113.854mm}
usepackage[margin=0.5cm, paperwidth=88.184mm, paperheight=113.854mm]{geometry}
title{[[title]]}
date{[[date]]}
author{[[author]]}
begin{document}
vspace{fill}
maketitle
vspace{fill}
newpage
[[text]]
end{document}
4 Answers
4
There are two small bugs in your code.
First, if you want the vspace to work at the beginning or end of a page, you should use the starred version (vspace*).
vspace
vspace*
This would work, but maketitle is a pretty complicated macro, and if used like in your example, it just puts the title at the second page. You can use the titlepage environment, which gives you much more command over how the title page looks like -- including the spacing. For example, you could use the following code:
maketitle
titlepage
documentclass{article}
setlength{pdfpagewidth}{88.184mm}
setlength{pdfpageheight}{113.854mm}
usepackage[margin=0.5cm, paperwidth=88.184mm, paperheight=113.854mm]{geometry}
begin{document}
begin{titlepage}
vspace*{fill}
begin{center}
{Huge [[title]]}\[0.5cm]
{Large [[author}\[0.4cm]
[[date]]
end{center}
vspace*{fill}
end{titlepage}
[[text]]
end{document}
null % Empty line
nointerlineskip % No skip for prev line
vfill
letsnewpage newpage
letnewpage relax
maketitle
let newpage snewpage
vfill
break % page break
If you want to make everything work even with maketitle put your vspace*{fill} inside the first and the last attribute, exp:
maketitle
vspace*{fill}
title{**vspace*{fill}**[[title]]}
date{[[date]]}
author{[[author]]**vspace*{fill}**[[}
begin{document}
maketitle
newpage
[[text]]
end{document}
As in the answer by finrod, maketitle is a pretty complicated macro, this is why I didn't feel like overwriting it myself (renewcommandmaketitle{...). Nevertheless, copying, pasting and editing lines 170-201 of article.cls documentclass, I could add a new one to customize (newcommandmymaketitle{...) as follows:
maketitle
renewcommandmaketitle{
newcommandmymaketitle{
documentclass{article}
setlength{pdfpagewidth}{88.184mm}
setlength{pdfpageheight}{113.854mm}
usepackage[margin=0.5cm, paperwidth=88.184mm, paperheight=113.854mm]{geometry}
title{Title}
date{Date}
author{Author}
makeatletter
newcommandmymaketitle{%
begin{titlepage}
nullvfilvskip 40p@
begin{center}
{LARGE @title par}
vskip 2.5em
{large lineskip .75em @author par}
vskip 1.5em
{large @date par}
end{center}par
@thanks
vfilnull
end{titlepage}
}
makeatother
begin{document}
mymaketitle
Text
end{document}
The output:

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
This is excellent. I have created approximately 50 documents (which were relatively important) and used this code; worked every time.
– alexy13
Feb 7 '14 at 23:57