Extreme paper space saving, very small margins, how to lower the page number
I'd suggest using the package savetrees loaded with the [extreme]
option which its purpose is exactly the scenario you are describing by minimizing all the margins to the extreme, fitting as much text as possible on a page. More than that you'd print out of the paper. Its sample page, specifically the last page showcase the results that can be obtained.
The geometry
package can do what you want, if you let it do the whole job of page layout instead of just part of it.
I'm not sure exactly what physical margins your adjustments to \textwidth
etc wind up producing, but these geometry
settings produce something that looks roughly like your screenshot, except for better placement of the page number:
\documentclass[12pt,oneside]{book}
\usepackage[a4paper,margin=1cm,nohead,foot=0.5cm]{geometry}
\pagestyle{plain}
\begin{document}
Together with this font configuration...
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{microtype}
... this page layout fits the Project Gutenberg text of Moby-Dick onto 329 physical pages. With newtxtext
instead of lmodern
it shrinks to 310 pages. (These page counts include the ETYMOLOGY and EXTRACTS prefaces, but no table of contents nor any of the Project Gutenberg boilerplate. Also, I went to the trouble of creating TeX markup for chapters. It would be shorter still without that.)
Short answer:
Get info about the length \footskip
. ;-)
Long answer:
I don't recommand modifying \hoffset
and \voffset
for setting the margins.
According to the TeXBook, chapter 23, the purpose of these parameters is:
If you want your output to be positioned differently when it is ultimately printed, you can offset it by giving nonzero values to
\hoffset
and\voffset
. For example,
\hoffset=.5in
\voffset=1.5in
will move the output half an inch to the right of its normal position, and 1.5 inches down. You should be careful not to offset the output so much that it falls off the edge of the physical medium on which it is being printed, unless you know that such out-of-bounds activity won't cause trouble.
If I got this right, the layout of pages (i.e., the width of text etc) should not depend on \hoffset
and/or \voffset
as these dimension-parameters are to provide a possibility for shifting the entire page when it is already typeset according to the layout for typesetting pages.
As far as I know, \hoffset
and \voffset
usually have the value 0pt and you change these values to shift entire pages horizontally/vertically by the values to which these parameters are set.
Changing \hoffset
and \voffset
should, e.g., not affect the width of text typeset by LaTeX.
Imagine someone puts a stamp on a piece of paper. The stamp is exactly the same size as the paper.
The stamp is the text that LaTeX has typeset. \voffset
and \hoffset
determine how much the top left corner of the stamp is offset up/down and/or right/left relative to the top left corner of the paper.
The package layout might be of interest to you.
It defines the command \layout
which produces a drawing where you get a visible impression of all page-layout-parameters.
The output of the command \layout
looks like this:
For the horizontal alignment, LaTeX provides one parameter for the left margin of right-hand-pages.
As right-hand-pages usually have page-numbers whose parity is odd, this parameter is called \oddsidemargin
.
For the horizontal alignment, LaTeX provides one parameter for the left margin of left-hand-pages.
As left-hand-pages usually have page-numbers whose parity is even, this parameter is called \evensidemargin
.
The distinguishing between right-hand-pages and left-hand-pages only applies with "twoside"-documents.
With "oneside"-documents every page is treated as if it was a right-hand-page. Thus with "oneside"-documents only the parameter \oddsidemargin
is applied.
After playing with the package layout, I created a template where you can specify for right-hand-pages the margins at the left, the right, the bottom and at the top.
In case the document is a "twoside"-document, the template will calculate the margins for left-hand-pages automatically so that
left margin of right-hand-page=right margin of left-hand-page
and
right margin of right-hand-page=left margin of left-hand-page.
I assume you wish a minimalist approach without page-headers.
When playing around with the example below, while applying the article-class's option "twoside", make sure to set the view-mode of your pdf-viewing-program to "facing pages(first page centered)" or the like.
\documentclass[a4paper,twoside]{article}%
%------------------------------------------------------
% These packages are needed for detecting the engine -
% detecting the engine is needed for finding out if
% adjusting \(pdf)pagewidth and \(pdf)pageheight is
% needed with things like the landscape-option:
%------------------------------------------------------
\usepackage{iftex, ifpdf}
%------------------------------------------------------
\ifXeTeX
\pdfpagewidth=\paperwidth
\pdfpageheight=\paperheight
\else
\ifLuaTeX
\pagewidth=\paperwidth
\pageheight=\paperheight
\else
\ifPDFTeX
\pdfpagewidth=\paperwidth
\pdfpageheight=\paperheight
\fi
\fi
\fi
%------------------------------------------------------
\pagestyle{plain}%
\newlength\myleftoddmargin
\newlength\myrightoddmargin
\newlength\mytopmargin
\newlength\mybottommargin
\newlength\myverticalgapbetweenbottommarginandpagenumber
%-----------------------------------------------------------------
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
% !!! Specify the margins here: !!!
%!!!! !!!
\setlength\myrightoddmargin{1.5cm}%
\setlength\myleftoddmargin{.75cm}%
% \csname if@twoside\endcsname
% \setlength\myleftoddmargin{.5\myrightoddmargin}%
% \else
% \setlength\myleftoddmargin{\myrightoddmargin}%
% \fi
\setlength\mytopmargin{1.5cm}%
\setlength\mybottommargin{1.5cm}%
\setlength\myverticalgapbetweenbottommarginandpagenumber{.5\mybottommargin}%
%!!! That should do the trick. !!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%-----------------------------------------------------------------
\setlength\hoffset{0pt}% or whatever horizontal offset you need.
% Usually the value is 0 by default.
\setlength\voffset{0pt}% or whatever vertical offset you need.
% Usually the value is 0 by default.
\setlength\oddsidemargin{\myleftoddmargin}%
\addtolength\oddsidemargin{-1in}%
\setlength\evensidemargin{\myrightoddmargin}%
\addtolength\evensidemargin{-1in}%
\setlength\marginparwidth{.7\myrightoddmargin}%
\setlength\marginparsep{.15\myrightoddmargin}%
\setlength\textwidth{\paperwidth}%
\addtolength\textwidth{-\myleftoddmargin}%
\addtolength\textwidth{-\myrightoddmargin}%
%-----------------------------------------------------------------
\newlength\standardletterheight
\newlength\standardletterdepth
\settoheight\standardletterheight{%
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890%
}%
\settodepth\standardletterdepth{%
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890%
}%
\setlength\topmargin{\mytopmargin}%
\addtolength\topmargin{-1in}%
% This is the height of boxes of headings:
\setlength\headheight{0ex}%
% This is the distance between the bottom of a heading-box
% and the first line of text - Also \topskip-glue is added to
% ensure that baselines of first lines of text of pages all are
% in the same height:
\setlength\headsep{0ex}%
% In case of having page-headings, you probably don't need
% to play around with\topskip.
\setlength\topskip{\standardletterheight}%
\setlength\textheight{\paperheight}%
\addtolength\textheight{-\mytopmargin}%
\addtolength\textheight{-\mybottommargin}%
\addtolength\textheight{-\standardletterdepth}%
\setlength\footskip{\myverticalgapbetweenbottommarginandpagenumber}%
\addtolength\footskip{\standardletterdepth}%
\addtolength\footskip{.5\standardletterheight}%
\begin{document}
\hbox to\textwidth{Xg\xleaders\hbox{Xg}\hfill Xg}%
\nointerlineskip
\null\xleaders\hbox to\textwidth{Xg\xleaders\hbox{Xg}\hfill Xg}\vfill
\nointerlineskip
\hbox to\textwidth{Xg\xleaders\hbox{Xg}\hfill Xg}%
\nointerlineskip
\newpage
\hbox to\textwidth{Xg\xleaders\hbox{Xg}\hfill Xg}%
\nointerlineskip
\null\xleaders\hbox to\textwidth{Xg\xleaders\hbox{Xg}\hfill Xg}\vfill
\nointerlineskip
\hbox to\textwidth{Xg\xleaders\hbox{Xg}\hfill Xg}%
\nointerlineskip
\newpage
\hbox to\textwidth{Xg\xleaders\hbox{Xg}\hfill Xg}%
\nointerlineskip
\null\xleaders\hbox to\textwidth{Xg\xleaders\hbox{Xg}\hfill Xg}\vfill
\nointerlineskip
\hbox to\textwidth{Xg\xleaders\hbox{Xg}\hfill Xg}%
\nointerlineskip
\end{document}