% askinclude.sty - interactive asking of included files 
%
% VERSION 1.2e   November 11, 1994
%
% (c) 1991 by Pablo A. Straub.  Permission is granted to copy and use this
% in any way and for any purpose, except direct commercial advantage,
% provided that you retain this copyright notice.
%
% HISTORY
%
% 0.95  11/05/91   First beta-test version (asked two questions)
% 0.99  11/05/91   Second beta-test version (asks one question; uses * and -.)
% 1.0   11/07/91   Changed prompts (sent to comp.text.tex)
% 1.2e  11/02/94   Two small changes to run under LaTeX2e [RF];
%                  additional documentation [TRS]
%
% Please send enhancements and corrections to straub@cs.umd.edu.
%
% USAGE
%
% Here's an example root file (see pp.72--74 in the LaTeX book):
%
%    % File:  main.tex
%    %
%      \documentclass[...]{book}
%      \usepackage{askinclude}
%    %             ^^^^^^^^^^
%    % Initialization:
%      \input{preamble}
%    %
%      \begin{document}
%    %
%    %   Title page:
%        \include{titlepg}
%    %
%    %   Chapters:
%        \include{chapter0}
%        \include{chapter1}
%        \include{chapter2}
%        ...
%    %
%      \end{document}
%
% Each \include causes a page break and so askinclude probably only makes 
% sense in the context of larger documents such as books.
%
% HOW IT WORKS
%
% The askinclude package asks the user which files to include.  If
% the user presses return, the files from the previous run are included
% automatically (except on the first run, in which case all files are
% included); if the answer is  *  all files are included; if the answer
% is  -  no files are included; otherwise the specified files (separated
% by commas, with no embedded spaces) are included.
% 
% RESTRICTIONS
%
% This file redefines \document, the command executed with \begin{document}.
% It may be incompatible with other styles that also redefine \document.
%
% The user's input is not validated.  Anything that is not a * or a - or an
% empty line is passed to \includeonly.
%
% ACKNOWLEDGEMENT
%
% Tom Scavo (scavo@cie.uoregon.edu) suggested saving the include file list
% from the previous run and a simplified user interface.


\def\@includeonly{\@gobble} % assume we do not include from last run
\def\@inputs{*}             % assume all files included

% determine which files to include

\def\@star{*}           % constant for comparison purposes
\def\@minussign{-}      %    "      "      "         "

\typeout { }
\typeout {Enter file(s) to include (separated by commas and no spaces),}
\typeout {or enter * for all files, or enter - for none, or}
\typein  [\inputfiles]{press Return if this run is the same as the last.}

\ifx\inputfiles\@star           % all files included
   % do nothing
\else \ifx\inputfiles\@minussign    % no files included
   \includeonly{}
   \def\@inputs{}
\else \ifx\inputfiles\empty     % include according to previous run
   \def\@includeonly#1{%
     \gdef\@inputs{#1}
     \ifx\@inputs\@star \else \global\@partswtrue\global\edef\@partlist{#1}\fi}
\else
   \def\@inputs{\inputfiles}    % include these files
   \includeonly{\inputfiles}
\fi\fi\fi


\AtBeginDocument{\if@filesw
                 \immediate\write\@mainaux{\string\@includeonly\string{\@inputs
                                                               \string}}%
                 \def\@includeonly{}}

% END OF FILE askinclude.sty
