summaryrefslogtreecommitdiff
path: root/macros/latex-dev/required/tools/fileerr.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex-dev/required/tools/fileerr.dtx')
-rw-r--r--macros/latex-dev/required/tools/fileerr.dtx123
1 files changed, 123 insertions, 0 deletions
diff --git a/macros/latex-dev/required/tools/fileerr.dtx b/macros/latex-dev/required/tools/fileerr.dtx
new file mode 100644
index 0000000000..3b5895a5f6
--- /dev/null
+++ b/macros/latex-dev/required/tools/fileerr.dtx
@@ -0,0 +1,123 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 1993-2019
+%
+% The LaTeX3 Project and any individual authors listed elsewhere
+% in this file.
+%
+% This file is part of the Standard LaTeX `Tools Bundle'.
+% -------------------------------------------------------
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% The list of all files belonging to the LaTeX `Tools Bundle' is
+% given in the file `manifest.txt'.
+%
+% \fi
+% \def\fileversion{v1.1a} \def\filedate{2003/12/28}
+% \iffalse This is a METACOMMENT
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 1994-2004 Frank Mittelbach, all rights reserved.
+% \fi
+% \title{File not found error\thanks{This file has version
+% \fileversion\ last revised \filedate}}
+% \author{Frank Mittelbach}
+% \MaintainedByLaTeXTeam{tools}
+% \maketitle
+%
+% \changes{v1.0e}{97/07/07}{Added q and r replies (PR/2525).}
+%
+% \section{Introduction}
+% When \LaTeXe{} is unable to find a file it will ask for an
+% alternative file name. However, sometimes the problem is
+% only noticed by \TeX{}, and in that case \TeX{} insists on
+% getting a valid file name; any other attempt to leave this
+% error loop will fail.\footnote{On some systems, \TeX{}
+% accepts a special character denoting the end of file to
+% return from this loop, e.g.\ Control-D on UNIX or Control-Z
+% on DOS.} Many users try to respond in the same way as to
+% normal error messages, e.g.\ by typing \meta{return}, or |s|
+% or |x|, but \TeX{} will interpret this as a file name and
+% will ask again.
+% \par To provide a graceful exit out of this loop, we define
+% a number of files which emulate the normal behavior of
+% \TeX{} in the error loop as far as possible.
+% \par After installing these files the user can respond with
+% |h|, |q|, |r|, |s|, |e|, |x|, and on some systems also with
+% \meta{return} to \TeX's missing file name question.
+% \StopEventually{}
+%
+% \section{The documentation driver}
+% This code will generate the documentation. Since it is the
+% first piece of code in the file, the documentation can be
+% obtained by simply processing this file with \LaTeXe.
+% \begin{macrocode}
+%<*driver>
+\documentclass{ltxdoc}
+\begin{document} \DocInput{fileerr.dtx} \end{document}
+%</driver>
+% \end{macrocode}
+% \section{The files}
+%
+% \subsection{Asking for help with {\tt h}}
+% When the user types |h| in the file error loop \TeX{} will
+% look for the file |h.tex|. In this file we put a message
+% informing the user about the situation (we use |^^J| to
+% start new lines in the message) and then finish with a
+% normal |\errmessage| command thereby bringing up \TeX's
+% normal error mechanism.
+% \begin{macrocode}
+%<*help>
+\newlinechar=`\^^J
+\message{! The file name provided could not be found.^^J%
+Use `<enter>' to continue processing,^^J%
+`S' to scroll future errors^^J%
+`R' to run without stopping,^^J%
+`Q' to run quietly,^^J%
+or `X' to terminate TeX}
+\errmessage{}
+%</help>
+% \end{macrocode}
+%
+% \subsection{Scrolling this and further errors with {\tt s}}
+% For the response |s| we put a message into the file |s.tex|
+% and start |\scrollmode| to scroll further error messages in
+% this run. On systems that allow |.tex| as a file name we
+% can also trap a single \meta{return} from the user.
+% \begin{macrocode}
+%<+scroll|return|run,batch> \message{File ignored}
+%<+scroll> \scrollmode
+%<+run> \nonstopmode
+%<+batch> \batchmode
+% \end{macrocode}
+%
+% \subsection{Exiting the run with {\tt x} or {\tt e}}
+%
+% If the user enters |x| or |e| to stop \TeX{}, we need to put
+% something into the corresponding file which will force \TeX{} to
+% give up. We achieve this by turning off terminal output and then
+% asking \TeX{} to stop: first by using the internal \LaTeX{} name
+% |\@@end|, and if that doesn't work because something other than
+% \LaTeX{} is used, by trying the \TeX{} primitive |\end|. The
+% |\errmessage| is there to ensure that \TeX{}'s internal "history"
+% variable is set to |error_message_issued|. This in turn will
+% hopefully set the exit code on those operating systems that
+% implement return codes (though there is no guarantee for this).
+% \changes{v1.1a}{2003/12/28}{Attempt to set exit code (pr/3538).}
+% \begin{macrocode}
+%<+edit|exit> \batchmode \errmessage{}\csname @@end\endcsname \end
+% \end{macrocode}
+% We end every file with an explicit |\endinput| which prevents
+% the docstrip program from putting the character table into
+% the generated files.
+% \begin{macrocode}
+\endinput
+% \end{macrocode}
+%%
+% \Finale