# Redefining \maketitle to put a maximum of information in a page

I'm currently writing LaTeX articles containing all of my lessons content in order to have it on a very few pages instead of the heavy thing the teacher gives us with exercises, demonstrations and so on.

The goal of it is to be really short so I can see it before an oral. I've already tried to improve this with :

\marginparwidth 0pt
\oddsidemargin 0pt
\evensidemargin 0pt
\marginparsep 0pt
\topmargin 0pt
\textwidth 6.5in
\textheight 8.5in


And I specified a small font-size in the document class :

\documentclass[a4paper, 10pt]{article}


This works really well. However, the \maketitle command creates the title very low on the first page and this is kind of awkward.

Is there a workaround for this? And by the way do you have other tips to reduce the space taken by the text while still keeping it legible?

-
This question has been asked before, see tex.stackexchange.com/questions/51494/… – Sveinung Sep 16 '12 at 11:50
It doesn't solve the title problem though. – Skydreamer Sep 16 '12 at 12:03
You could replace all of the commands given in your example with the single instruction \usepackage[margin=1in]{geometry}. Separately, do you even need formal title, author, and date groups in your document? Why not just write \section*{<Title>, <Author>, <Date>}? – Mico Sep 16 '12 at 12:50
@lockstep This is not a duplicate. See the comment to my first comment. The referenced question does not cover redefining the \maketitle. Please reopen it! Instead the referenced answer should be closed as superseded by this one! – Sveinung Sep 17 '12 at 11:17
@Sveinung I already recognized my mistake, edited the title, cast the first reopen vote and announced the problem in chat. Isn't your reputation sufficient to vote for reopening, too? – lockstep Sep 17 '12 at 11:19

Unless you are using something like extsizes the 8pt option won't do anything.

\maketitle is a fairly simple command defined in article class, You could simply go

\vspace*{-2cm}\maketitle


but better would be to redefine it to use a tight layout, an extreme version might be

\makeatletter

\def\maketitle{%
\par\textbf{\@title}%
\par{\@author}%
\par}

\makeatother

-
I added a \huge command in your definition containing the \textbf. That made all the text get bigger. Then I've put it inside the textbf and that worked really well. That's strange though... Thank you ! – Skydreamer Sep 16 '12 at 12:16
my definition didn't have any scoping other than that given by textbf so any declarations would apply after the command. For size changes it is best to include the following paragraph otherwise line spacing is messed up so \par{\huge\bfseries\@title\par}% is probably what you want. – David Carlisle Sep 16 '12 at 13:07

One approach to getting lots onto a page is to use the savetrees package. This reduces margins, makes fonts smaller and so on to get as much as possible onto each page: there are various settings to 'control' how much is done.

-

In addition to a custom title and sections, small margins and small font size, you can also reduce line spacing a little (0.9 or even 0.8 if you can read it) and increase a little the readability using color for titles and two columns option (one column is more difficult to follow with so many small characters per line).

Although no very evident at first glance, the microtype could help for increasing the readability in this conditions, and even increase a little the text density. This is a MWE:

\documentclass[twocolumn,8pt]{article}
\usepackage[    % Much better micro typography
expansion=true,
tracking=true,
kerning=true,
spacing=true,
letterspace=50, % well spaced smallcaps
shrink=40,      % may be 20 or less is good
factor=1000]    % may be less that 1000
{microtype}

\usepackage[margin=1cm,bmargin=1.4cm]{geometry} % little margins
\usepackage{lipsum} % dummy text

\usepackage{setspace}

\usepackage{color}

\makeatletter
\def\@maketitle{   % custom maketitle
{\Large \bfseries \color{red} \@title}
{\scshape Teacher:} \@author ~ at  \@date \par
\smallskip \hrule \bigskip }

% custom section
\renewcommand{\section}{\@startsection
{section}%                   % the name
{1}%                         % the level
{0mm}%                       % the indent
{-0.5\baselineskip}%            % the before skip
{0.5\baselineskip}%          % the after skip
{\bfseries\color{blue}}} % the style

\makeatother

%
\title{Howto obtain very highly condensed texts}
\author{Peter Grumpy}
\date{\today}

\begin{document}
\maketitle
\section{Lore ipsum}
\lipsum[1]
\section{Nam dui ligula}
\lipsum[2-14]

\end{document}


-
A very nice answer. – Sveinung Sep 16 '12 at 15:49
The page number is a bit too low, otherwise a very nice approach. It combines a high density but preserves readability. +1 – Alexander Sep 16 '12 at 16:11
@Alexander, oops! I forgot the page number. I will correct just now with bmargin=1.4cm – Fran Sep 16 '12 at 16:30

A simple, but brute force, approach is to use the scrartcl from the KOMAscript-bundle with a very high DIV-factor, the headings=small-option and and some \vspace{-\baselineskip}. Instead of the \vspace-command, you can redefine the \maketitle-command as David Carlisle recommends.

A MWE with \vspace:

\documentclass[9pt,DIV=23,headings=small]{scrartcl}
\usepackage{lipsum}
\begin{document}
\title{\vspace{-3,5\baselineskip}Compact}
\author{L.\,Ipsum}
\date{\vspace{-.5\baselineskip}\today}
\maketitle
\thispagestyle{empty} % Remove page number
\vspace{-1.5\baselineskip}\lipsum[1-12] % Move the body text up

\end{document}


A MWE with redefined \maketitle and multicol:

\documentclass[9pt,DIV=23,headings=small]{scrartcl}
\usepackage{lipsum}
\usepackage[grid]{multicol}

\makeatletter
\def\maketitle{%
\bgroup\par\centering\textbf{\huge\@title}%
\par{\@author}%
\par\egroup}
\makeatother

\setlength{\premulticols}{.5\baselineskip}

\begin{document}

\title{Compact}
\author{L.\,Ipsum}
\maketitle
\thispagestyle{empty}
\vspace{-\baselineskip}\begin{multicols}{2}
\lipsum[1-12]
\end{multicols}

\end{document}


-