# -*- makefile -*-
#
# booklet.mak - making booklets from Texinfo.
#
# Copyright 2013 John Darrington.
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# This makefile can be used to generate booklets from Texinfo sources.
# It reduces each page to A5 size and renders two pages per sheet onto
# A4 landscape. The pages are ordered into a "quire" or "gathering".
# This means that you can print the result on a standard laser printer,
# fold in half and using simple stapler bind the result into a
# booklet.
# Targets are <foo>-{a4,a5}-book.{dvi,ps,pdf} where <foo>.texi is the texinfo
# source file.
# It is suitable for Texinfo documents up to approx. 70 pages.
# The *-a4-book targets produce A4 half area reduced pages. The *-a5-book
# targets produce A5 full sized pages. The *a5-book option will therefore
# have larger text, but will have a higher page count. It may also have
# problems if the document has @display or @example environments with
# long lines.
# Example of use:
# 1. make -f Makebook manual-a4-book.ps
# 2. Print the result on a double sided laser printer. Alternatively
# if your laser printer does not support double sided printing, print the ODD
# numbered sheets, retreive the result from the printer and thinking carefully
# about the page orientation, shove them back into the paper tray. Depending
# on your printer, you may have to reverse the order of the sheets. Then print
# the EVEN numbered sheets. I find gv usefull for this.
# 3. Fold the result along the short dimension.
# 4. Staple in place, using a long arm stapler.
# 5. Using a guillotine cut the pages such that their edges co-incide.
# 6. Sit back in an armchair and enjoy your reading.
# For those of you who live in countries which refuse to conform to ISO 216,
# you have a problem.
# End of instructions.
all:
echo 'Usage: make -f Makebook <target>'
# Mutate the source, with appropriate headings, overriding anything that the
# author has thoughtlessly imposed.
# We want to specify the paper size, and double headings. Anything else?
%-a4.texi: %.texi
sed -e 's/@afivepaper/@afourpaper/' -e '/@end titlepage/a @headings double' $< > $@
%-a5.texi: %.texi
sed -e 's/@afourpaper/@afivepaper/' -e '/@end titlepage/a @headings double' $< > $@
# Older versions of Texinfo break if the locale is non-english.
%.dvi: %.texi
LC_ALL=C texi2dvi $< -o $@
# Reorder the dvi into the correct order for the quire.
%-sig.dvi: %.dvi
dvibook $< -o $@
# Render 2 pages per sheet, ensuring there is an appropriate "gutter"
%-a5-book.dvi: %-a5-sig.dvi
dvitodvi '2:0+1(148mm,0)' $< $@
%-a4-book.dvi: %-a4-sig.dvi
dvitodvi '2:700@0(-15mm,-5mm)+1(210mm,-5mm)' $< $@
# print the result in landscape orientation
%.ps: %.dvi
dvips -t a4 -t landscape -t landscape $< -o $@
%.pdf: %.ps
ps2pdf $< $@
.PHONY: clean
clean:
$(RM) *-a[54].*