%From Tugboat volume 8, number 2 july 1987
%by Donald Knuth
%
% The idea is to make TeX look for a file called pages.tex. if such a
%file doesn't exit, everything works as before, Otherwise the file
%should contain a list of apge numbers, one per line, in the order that
%they will be generated. After the last page number has been matched,
%all further pages will be printed. Thus, if you want ot print pages
%123 and all pages from 300 onwards, your file pages.tex should say
% 123
% 300
%but if you want to print pages 123 and 300 only, the file should say,
%e.g.,
% 123
% 300
% -99999999999 % impossible number
%so that the end of file will never occur.
%
\let\Shipout=\shipout
\newread\pages \newcount\nextpage \openin\pages=pages
\def\getnextpage{\ifeof\pages\else
{\endlinechar=-1\read\pages to\next \ifx\next\empty % in this case we
should have eof now \else\global\nextpage=\next\fi}\fi}
\ifeof\pages\else\message{OK, I'll ship only the requested pages!}
\getnextpage\fi
\def\shipout{\ifeof\pages\let\next=\Shipout
\else\ifnum\pageno=\nextpage\getnextpage\let\next=\Shipout
\else\let\next=\Tosspage\fi\fi \next}
\newbox\garbage \def\Tosspage{\deadcycles=0\setbox\garbage=}