The simplest way to do this is to prepare the title page as a separate PDF file, say with Scribus or LibreOffice or whatever. Then you can simply say
\usepackage{pdfpages} % <-- this goes in the preamble
\begin{document}
\begin{titlepage}
\includepdf{title}
\end{titlepage}
...
if title.pdf
is the file you prepared. If you load the emptypage package, the blank pages won't have anything on them.
As @Marco mentioned in his comment, "every documentclass" provides the titlepage
environment - you won't find it as part of latex.ltx
. However, it is probably best to view these macros and environments as they are defined in the class files: article.cls
, book.cls
and report.cls
.
However, some discussion may also be warranted.
When looking at the titlepage
environment in these document classes, it merely provides a shell that is used by some other macros/environments. For example, setting the documentclass option titlepage
(or notitlepage
) modifies the way titlepage
is defined. This option also affects the way the abstract
environment is typeset, since it is done inside titlepage
. Also, \maketitle
is typeset inside titlepage
with this option set for the documentclass.
Finally, \maketitle
is a macro that "self-destructs" after you use it, since it's definition includes \global\let\maketitle\relax
towards the end. So, you use it and you lose it. Whereas the usage of the titlepage
environment lives well beyond \maketitle
; hence it's use in other parts of the document as a wrapper. And, the above definitions are similar across the document classes.
In terms of the usage difference between \maketitle
and titlepage
: They shouldn't be mixed.
Edit:
article.cls
(as well as the other book.cls
and report.cls
document classes) initiates loading of many of its basic functionality based on a compatibility condition \if@compatibility
. That is, certain options/macros/environments are only available if \@compatibilitytrue
, or vice versa. If you want a toned-down version of article.cls
, use
\makeatletter\@compatibilitytrue\makeatother
\documentclass{article}
The default is to load article
with \@compatibilityfalse
, are just leaving out the compatibility requirement all together. For a complete discussion on this topic, see What's the use of the @compatibility condition?. This condition also governs the declaration of the titlepage
environment. Assuming that one loads the standard document class(es) as-is, titlepage
is defined as follows:
\newenvironment{titlepage}
{\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse\newpage
\fi
\thispagestyle{empty}%
\setcounter{page}\@ne
}%
{\if@restonecol\twocolumn \else \newpage \fi
\if@twoside\else
\setcounter{page}\@ne
\fi
}
From this it is clear that the (traditional) titlepage
environment does the following
- at
\begin{titlepage}
:
- Conditions on whether the document is in
twocolumn
mode or not. If this is the case (\@twocolumntrue
), then switch to one column mode (\onecolumn
) and set a flag to restore to two column mode \@restonecoltrue
. Otherwise, if already in one column mode, issue \newpage
;
- Clear the page headings
\thispagestyle{empty}
; and
- Set the page counter to one
\setcounter{page}{@ne}
.
- at
\end{titlepage}
:
- Restore two column mode if need be (set at
\begin{titlepage}
), or issue another \newpage
; and
- Reset the page counter to one if not in
twoside
mode \setcounter{page}{@ne}
.
In essence, titlepage
is meant for a single, one column page without headings. You're free to do inside of it what as you please. Perhaps that answers your second question as well.
Best Answer
textpos
package allows one to position elements on a page. The size of the page can be defined with thegeometry
package. See the LaTeX font catalogue for your preferred font.