summaryrefslogtreecommitdiff
path: root/support/tex-it/texit.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/tex-it/texit.tex
Initial commit
Diffstat (limited to 'support/tex-it/texit.tex')
-rw-r--r--support/tex-it/texit.tex672
1 files changed, 672 insertions, 0 deletions
diff --git a/support/tex-it/texit.tex b/support/tex-it/texit.tex
new file mode 100644
index 0000000000..0c13b51cd0
--- /dev/null
+++ b/support/tex-it/texit.tex
@@ -0,0 +1,672 @@
+\documentstyle{article}
+%
+% If you don't have Anthony Bloesch's ``treetex.sty'' file, just remove
+% that style option. The ``right thing'' will happen when you process
+% the document.
+
+%% #!/usr/local/bin/perl
+%% dependency on format file names...
+
+\partopsep=0pt
+\topsep=0pt
+\parindent=0pt
+\parskip=\baselineskip
+
+\def\desctree{%
+Consider a \LaTeX\footnote{There's nothing special about \LaTeX\ in this
+example, it's just convienient to select the \LaTeX\ format because it has
+support for bibliographies and indices built in. Similar arguments can be
+made about other formats with different arrangements of supporting files.}
+document composed of a main file, \verb|main.tex|, and two included files,
+\verb|chap1.tex| and \verb|chap2.tex|. Assume that the document has a
+bibliography and an index (\verb|main.bbl| and \verb|main.ind|). The
+bibliography is constructed from \verb|myrefs.bib| by Bib\TeX and the index is
+constructed by MakeIndex from the \verb|main.idx| file produced by \TeX{}ing
+the document.
+}
+
+\def\maketree{%
+Consider a \LaTeX\footnote{There's nothing special about \LaTeX\ in this
+example, it's just convienient to select the \LaTeX\ format because it has
+support for bibliographies and indices built in. Similar arguments can be
+made about other formats with different arrangements of supporting files.}
+document composed of several files as shown in the diagram below. Assume that
+the bibliography (\verb|main.bbl|) is constructed from \verb|myrefs.bib| by
+Bib\TeX and the index is constructed by MakeIndex from the \verb|main.idx|
+file produced by \TeX{}ing the document.
+
+\begin{center}
+ \def\treefbox##1{\fbox{{\tt ##1}}}
+ \begin{tree}{texittr}
+ \rootnode{\treefbox{main.tex}}
+ \treenode{nodeA}{root}{\treefbox{chap1.tex}}
+ \treenode{nodeB}{root}{\treefbox{chap2.tex}}
+ \treenode{nodeC}{root}{\treefbox{main.bbl}}
+ \treenode{nodeD}{root}{\treefbox{main.ind}}
+ \treenode{nodeE}{nodeC}{\treefbox{myrefs.bib}}
+ \treenode{nodeF}{nodeE}{\treefbox{plain.bst}}
+ \treenode{nodeG}{nodeD}{\treefbox{main.idx}}
+ \end{tree}
+\end{center}
+}
+
+% if you include the ``treetex'' style, you can have a nice drawing
+% in your document.
+\makeatletter
+\@ifundefined{tree}{\let\drawdoc\desctree}{\let\drawdoc\maketree}
+% something else while I've got the @ right...
+\def\@listI{\leftmargin\leftmargini \parsep 4\p@ plus2\p@ minus\p@
+\topsep 0\p@ plus0\p@ minus0\p@
+\itemsep 4\p@ plus2\p@ minus\p@}
+\makeatother
+
+\title{TeXit \\ An intelligent script for running \TeX %
+ \\ \ \\ {\small Version 1.29}}
+\author{Norman Walsh \\ {\tt walsh@cs.umass.edu}}
+\date{August 16, 1993}
+
+\begin{document}
+
+\maketitle
+
+\section{What is TeXit?}
+
+TeXit is a Perl script designed to automate the task of processing documents
+with \TeX. It runs \TeX\ with the correct format and tries to intelligently
+determine when \TeX\ needs to be run a second, or even third, time in order
+to get correctly typeset output.
+
+`Out of the box', TeXit is configured to recognize \LaTeX, Plain \TeX, and
+Texinfo files, but it can easily be extended to other formats. One of the
+nice features of TeXit is that you can provide document-specific ``rules'' to
+determine how many times \TeX\ needs to be run.
+
+By the way, I tried to make a ``minimal'' TeXit and decided it wasn't worth
+it. The difference in startup speed was too small to justify the expense
+of maintaining two versions. Honest.
+
+This document describes TeXit, but you should also look at the
+``\verb|texit.pl|'' file. I tried to put informative comments next to all of
+the variables that you might want to change. If you do want to change them,
+{\em do it in an initialization file} (see Section~\ref{sec:init}). {\bf Don't
+change the script!}
+
+\section{Legal Mumbo-Jumbo}
+
+TeXit is distributed under the terms of the GNU General Public License,
+version 2 or later.
+
+Use at your own risk. I take no responsibility for {\it any\/} problems
+you have, whether or not they are caused by TeXit. On the other hand,
+if you do have problems, I'll be as helpful as I can ;-)
+
+\section{What Does It Do?}
+
+\drawdoc
+
+Such a document forms a tree-like graph\footnote{It's tree-like because you
+can't have a cycle in the ``main branches'' (i.e. the included files) but it's
+also a graph because there can be cross references between any two nodes.}.
+
+In the worst case, getting this document to print correctly requires
+{\em eight\/} steps!
+
+\begin{enumerate}
+ \item Run \LaTeX\ (this generates \verb|main.idx| and \verb|main.aux|).
+ \item Run \LaTeX\ again to satisfy any cross references.
+ \item Run Bib\TeX\ (this generates \verb|main.bbl|).
+ \item Run MakeIndex (this generates \verb|main.ind|).
+ \item Run \LaTeX\ (this builds the ``final document''). Except that
+ the bibliography citations have changed a page break so the references
+ are wrong.
+ \item Run \LaTeX\ again to satisfy any cross references.
+ \item Run MakeIndex since the index may be wrong.
+ \item Run \LaTeX\ to build the final document.
+\end{enumerate}
+
+As if that weren't enough to warrant the aid of a script to do the dirty
+work, you might also like to setup \TeX\ as a compiler from within your
+editor, but you want to run \LaTeX\ on ``\verb|main.tex|'' even if you
+happen to be editing ``\verb|chap02.tex|''.
+
+TeXit can handle all of these problems.
+
+\subsection{Finding the Right File}
+
+When TeXit processes a file, the first thing it looks for is some indication
+that the file it was given is part of some larger document. If it discovers
+that this is the case, it abandons the current file in favor of the ``master''
+file.
+
+There are two ways that you can indicate that a file is part of a larger
+document:
+
+\begin{itemize}
+ \item Place ``\verb|% master: main.tex|'' on a line by itself near the
+ top of your document. This identifies ``\verb|main.tex|'' as
+ the master file.
+ \item Include ``\verb|% TeX-master: main.tex|'' in an Emacs ``Local
+ Variables'' section at the bottom of your file. If you don't
+ use Emacs, don't worry about this.
+\end{itemize}
+
+\subsection{Finding the Right Format}
+
+Next, TeXit needs to determine what format to use. You can force TeXit
+to select a particular mode with the ``\verb|-|{\em format\/}'' command-line
+switch, or by inserting a command in your document:
+
+\begin{itemize}
+ \item Place ``\verb|% mode: latex|'' or ``\verb|% format: latex|'' on a
+ line by itself near the top of your document. This identifies
+ ``\verb|latex|'' as the format to use. TeXit figures out the
+ actual format file name, you just tell it in English. Running TeXit
+ without any arguments will give you a list of formats.
+ \item Include \verb|% mode: latex| in an Emacs ``Local
+ Variables'' section at the bottom of your file. If you don't
+ use Emacs, don't worry about this.
+\end{itemize}
+
+If you don't specify a format, TeXit assumes that the document is Plain \TeX\
+unless it finds one of the following:
+
+\begin{itemize}
+\item ``\verb|\documentstyle[|{\em any options\/}\verb|]{slides}|''
+ indicates Sli\TeX.
+
+\item ``\verb|\documentstyle[|{\em any options\/}\verb|]{foils}|''
+ indicates Foil\TeX.
+
+\item ``\verb|\documentsytle|''
+ indicates \LaTeX.
+
+\item ``\verb|\document |{\em something\/}''
+ indicates AMS\TeX.
+
+\item ``\verb|\Define|{\em xxx\/}\verb|:|{\em yyy\/}''
+ indicates Lollipop.
+
+\item ``\verb|@node|'' or ``\verb|@ifinfo|'' or ``\verb|input texinfo|''
+ indicates Texinfo.
+\end{itemize}
+
+TeXit only searches the first \verb|$TEXHEADERSIZE| lines for these commands.
+With the exception of ``\verb|input texinfo|'', they must occur at the
+very beginning of a line to be recognized.
+
+After processing your document, TeXit looks at the log file and re-runs \TeX\
+if the references have changed or the citations have changed. TeXit provides
+support for \LaTeX\ and Texinfo logs at the moment. Other formats will be
+added upon request.
+
+\section{More Power!\protect\footnote{grunt, Grunt, GRUNT! ;-) This is a
+poor joke. It'll only make sense if you're familiar with the television
+sit-com {\em Home Improvement}.}}
+
+You can extend TeXit by adding ``rules'' to your documents. Rules tell
+TeXit how the various pieces of your document are related. It is similar
+to ``make'' in many regards, but it is a little better than make for \TeX\
+documents since it can examine the contents as well as the time-stamp
+of a file.
+
+Rules are added by placing a ``rules'' section in your main document file.
+For example, this document has the following rules:
+
+% hackery here so that the first line isn't noticed by TeXit...
+\verb| % Start TeXit |\verb|rules:|
+\vskip-\baselineskip\vskip-\parskip
+\begin{verbatim}
+ % &cleanup_files ('texittr.tli','texittr.tlo');
+ %
+ % # it doesn't really have this rule, I just wanted to make the
+ % # example more interesting
+ % &bibtex('texit') if &newer('myrefs.bib')
+ % || &missing('texit.bbl');
+ %
+ % &run(treetex texittr'),
+ % &waitfor('texittr.tli') if &changed('texittr.tlo')
+ % || &missing('texittr.tli');
+ %
+ % &dependson('texittr.tli');
+ % End TeXit rules:
+\end{verbatim}
+
+The ``\verb|Start TeXit rules:|'' and ``\verb|End TeXit rules:|'' lines are
+markers. They are required. Leading ``\%'' signs and whitespace are ignored.
+Note: if you are using a \TeX\ format that uses some other comment character,
+you'll have to protect the rules in some other way. You can't simply use any
+comment character that you want.
+
+The catch is that your rules have to be valid Perl statements. I've
+tried to make most of the common things easy to add by hiding them in
+functions. If you use the syntax shown, everything will be ok.
+
+TeXit rules can extend over over multiple lines, but some care must be taken.
+When TeXit is parsing the rules, it assumes that any line that {\em ends\/}
+with a semi-colon ends the rule. Trailing Perl comments (unescaped ``\#''
+marks) are trimmed off. This allows you to build up a compound statement like
+this:
+
+\begin{verbatim}
+ % if ($some_conditional) {
+ % do_this ; # use perl comment to hide the semicolon
+ % and_this ; # (make sure you hide each one)
+ % } ;
+\end{verbatim}
+
+Rules can ``do anything'' since they're written in Perl. Use care: don't
+change any of TeXit's variables! The rules for a document are evaluated
+{\em every\/} time the document is processed. If you want some rules to
+be evaluated only once, you can test against ``\verb|$first_time|''. This
+variable will only be true once, right before the document is processed
+for the first time.
+
+The following variables are defined before the rules are executed:
+
+\begin{itemize}
+ \item \verb|$TEXFILEPATH|
+
+ The pathname of the master file (it always ends in a slash and
+ is equal to ``./'' if the file has no other path).
+
+ \item \verb|$TEXFILENAME|
+
+ The base name of the master file (no path, no extension).
+
+ \item \verb|$TEXFILEEXT|
+
+ The extension of the master file.
+
+ \item \verb|$TEXFORMAT|
+
+ The english name of the format that TeXit decided to use.
+\end{itemize}
+
+\section{A Short Lesson in Rules}
+
+If you aren't a Perl aficionado, the following guidelines will help you write
+right rules. But be warned, not every statement in this section is the whole
+truth.
+
+Most rules have the form:
+
+\begin{center}
+ \verb|&|{\it command}\verb|(|{\it arguments}\verb|) if |%
+ {\it predicates}\verb|;|
+\end{center}
+
+The following commands are available:
+
+\begin{itemize}
+ \item \verb|&bibtex('|{\it arguments}\verb|')|
+
+ Runs the BibTeX program with the arguments specified.
+
+ \item \verb|&tex('|{\it arguments}\verb|')|
+
+ Runs the \TeX\ program with the arguments specified.
+
+ \item \verb|&makeindex('|{\it arguments}\verb|')|
+
+ Runs the MakeIndex program with the arguments specified.
+
+ \item \verb|&run('|{\it command arguments}\verb|')|
+
+ The most general form, this command runs whatever you pass
+ it, just as if you typed it at the shell prompt.
+
+ \item \verb|&waitfor('|{\it file1}\verb|', '|%
+ {\it file2}\verb|',|\ldots\verb|)|
+
+ Waits until all the files specified exist. Use care, this can
+ cause TeXit to ``hang'' forever. I added this condition so that
+ I could run commands asynchronously on another machine and make
+ TeXit pause until they were done.
+
+ \item \verb|&auxfile("ext")|
+
+ Returns the name of the auxilliary file with the extension
+ ``ext''. This allows you to test for files, like the DVI file:
+
+ For example, the test ``\verb|-r &auxfile("dvi")|'' returns true
+ if the DVI file is readable.
+
+ \item \verb|&cleanup_files('|{\it file1}\verb|', '|%
+ {\it file2}\verb|',| \ldots\verb|)|
+
+ This command adds ``{\it file1\/}'', ``{\it file2}'', etc., to the
+ list of files that should be deleted by the cleanup choice.
+
+\end{itemize}
+
+The following predicates are available:
+
+\begin{itemize}
+ \item \verb|$first_time|
+
+ TeXit runs all of your rules once before running \TeX\ for the
+ first time. During that one run, the \verb|&first_run| predicate
+ will be true. All of the other predicates return false during
+ the first run.
+
+ \item \verb|&dependson('|{\it file1}\verb|', '|%
+ {\it file2}\verb|',| \ldots\verb|)|
+
+ Tells TeXit that the DVI file for your document depends on
+ all of the files listed. If any of these files are newer than
+ the DVI file, \TeX\ will be run again.
+
+ TeXit evaluates your rules in the order they are written. Make
+ sure that all of your \verb|&dependson| rules occur last.
+
+ \item \verb|&missing('|{\it file1}\verb|', '|%
+ {\it file2}\verb|',| \ldots\verb|)|
+
+ Returns true if any of the files specified are missing (i.e.
+ unreadable by your effective userid).
+
+ \item \verb|&changed('|{\it file1}\verb|', '|%
+ {\it file2}\verb|',| \ldots\verb|)|
+
+ Returns true if any of the files specified have changed since the
+ last time \TeX\ was run. TeXit saves a checksum of each file across
+ runs of \TeX\ and compares the checksums.
+
+ \item \verb|&newer('|{\it nfile1, nfile2, \ldots}\verb|', '|%
+ {\it ofile1, ofile2, \ldots}\verb|')|
+
+ Returns true if any of the ``{\it nfiles}'' are newer than any
+ of the ``{\it ofiles}'' or if any of the ``{\it ofiles}'' don't
+ exist.
+
+ Note the different calling sequence for this predicate. You must
+ pass only two elements to this function: {\em put the list of files
+ in quotes!} This is different than all the other predicates, I know.
+ Sorry about that.
+\end{itemize}
+
+\section{Built in Commands}
+
+When TeXit finishes processing your document, it presents the ``Again?''
+prompt. You should respond to the ``Again?'' prompt with the letter(s) in
+square brackets for the command that you want to issue. For example, to run
+the ``\verb|[p]rint|'' command, reply ``p''. You can insert a space and
+additional options. For example ``p -Pdept1'' runs the print command with the
+additional options ``-Pdept1''. How (or if) that argument is interpreted
+depends on the command.
+
+By default, TeXit is configured to supply the following commands:
+
+\begin{itemize}
+ \item \verb|[b]ibtex|, \verb|[g]hostview|, \verb|[t]ex|, \verb|[v]iew|
+
+ Runs BibTeX, Ghostview, \TeX, or your previewer, respectively.
+
+ \item \verb|[p]rint|
+
+ Runs a printer. You {\em must\/} specify the name of the printer
+ queue as an option. Use ``p ?'' to get a list of queues. Additional
+ options, after the queue name, are passed to either the DVI driver
+ or the print command: options before a ``\verb+|+'' go to the DVI
+ driver, options after go the print command.
+
+ For example, the following command ``\verb+p dept1 -p1 -l1|-K2+''
+ prints your job to the ``dept1'' printer queue. The DVI driver
+ sees the options ``-p1 -l1'' and the printer command sees the
+ options ``-K2''.
+
+ \item \verb|[c]leanup|
+
+ Deletes auxilliary files (log, aux, etc.). This can be configured
+ in document rules and/or \verb|.texitrc| files.
+
+ \item \verb|e[x]it|
+
+ Exits TeXit.
+\end{itemize}
+
+Section~\ref{sec:examples} illustrates how you can add your own commands.
+
+\section{Other Initialization}
+\label{sec:init}
+
+The first thing TeXit does after parsing your command line arguments and
+finding out what document you want to process is load initialization files.
+These files typically set variables like \verb|$TEXRETRIES| and
+\verb|$TEXHEADERSIZE|. If they exist, the following scripts are loaded (in
+this order):
+
+\begin{itemize}
+ \item Some global configuration file
+
+ Support for this option requires editing the script. I don't expect it
+ to be done very often.
+
+ \item \verb|~/.texitrc|
+
+ The script file found in your home directory. TeXit finds your home
+ directory by looking for the ``\verb|TEXIT|'' environment
+ variable and the ``\verb|HOME|'' environment variable. It uses whichever
+ it finds first.
+
+ You really should set one or the other. If neither is set, your
+ home directory effectively becomes the current directory. Probably
+ not what you had in mind.
+
+ \item \verb|$TEXFILEPATH/.texitrc|
+
+ The script file in the same directory as your \TeX\ master document
+ file.
+
+ \item \verb|-initfile |{\it ifile}
+
+ Finally, any init files that you specify as options are loaded. If you
+ specify more than one, they are loaded in the order specified.
+\end{itemize}
+
+\section{Some Examples}
+\label{sec:examples}
+
+This section demonstrates some customizations performed in ``\verb|.texitrc|''
+files. These examples should help you figure out how to do some of the
+customizations you're likely to want. You can alway send me email if you
+want help with a particular customization.
+
+\subsection{Adding a new command}
+
+Let's add the \verb|dvitty| program as a new command. First, define
+the program name and the command. These could be combined, but it's
+better not to for reasons that will become clear in a moment.
+
+\begin{verbatim}
+ $DVITTY = "/usr/local/bin/dvi2tty";
+ $DVITTYCMD = "$DVITTY %o %d";
+\end{verbatim}
+
+Table~\ref{tab:percentsubst} shows all of the \%-substitutions that
+you can include in the command.
+
+\begin{table}
+ \begin{center}
+ \begin{tabular}{|l|l|}
+ \hline
+ \verb|%F| & The format file name \\
+ \verb|%s| & The base name of the \TeX\ master file \\
+ \verb|%t| & The \TeX\ master file with its extension \\
+ \verb|%d| & The DVI file\\
+ \verb|%o| & Any options added to the command by the user\\
+ \verb|%D| & The DVI file with ``/'' translated to ``$\backslash$''. \\
+ \verb|%S| & The base name with ``/'' translated to ``$\backslash$''. \\
+ \verb|%T| & The master file with its extension and with ``/'' translated to ``$\backslash$''. \\
+ \hline
+ \end{tabular}
+ \caption{Percent substitutions performed by TeXit.}
+ \label{tab:percentsubst}
+ \end{center}
+\end{table}
+
+The next thing that you need to do is tell TeXit to present this as an option
+to the user. In order to do this, you must define two more commands:
+\verb|$CMDPROMPT{|{\it cmd-name}\verb|}| and \verb|$CMDTEST{|{\it
+cmd-name}\verb|}|. The ``{\it cmd-name}'' is the prompt-string that
+will be displayed to the user. Some portion of that string must be in square
+brackets. That portion is what the user must enter to run the choice. The
+\verb|$CMDPROMPT| is the Perl string that is evaluated if the user
+selects that command and the \verb|$CMDTEST| string is evaluated before the
+prompt is displayed to see if that command is allowed now. Both of these
+strings should be defined in {\em single quotes\/} so that Perl doesn't
+do any interpolation when it's defining the command. The \verb|$CMDPROMPT|
+string should end with either ``\verb|$RETEX|'' or ``\verb|$REASK|'' depending
+on whether you want to re-run \TeX\ or redisplay the prompt.
+
+Here's how \verb|dvitty| is defined:
+
+\begin{verbatim}
+ $CMDPROMPT{"dvi2[tty]"} = '&run($DVITTYCMD, "$opts"); $REASK;';
+ $CMDTEST{"dvi2[tty]"}
+ = '"$DVITTY" && -x "$DVITTY" && -r &auxfile("dvi")';
+\end{verbatim}
+
+These commands indicate that:
+
+\begin{itemize}
+ \item TeXit should add ``\verb|dvi2[tty]|'' to the prompt.
+ \item The user must respond ``\verb|tty|'' to select this option.
+ \item The option is only available if \verb|$DVITTY| is defined and
+ executable and the DVI file exists.
+ \item If selected, TeXit should run the \verb|$DVITTYCMD| with any
+ options the user specified (always stored in ``\verb|$opts|'')
+ and then redisplay the prompt.
+\end{itemize}
+
+Another example: adding a printer queue command. This one's done
+a bit sloppily, but it works.
+
+\begin{verbatim}
+ $CMDPROMPT{"[q]uery printer"}
+ = '&run("lpq -P%o", "$opts"); $REASK;';
+ $CMDTEST{"[q]uery printer"} = '';
+\end{verbatim}
+
+\subsection{Adding a New Printer}
+
+Assuming that the program ``\verb|dvi2bam|'' translates DVI files into output
+for the Bambleweenie 2000 printer (translating ``file.dvi'' to ``file.bbw''),
+the following commands add the ``\verb|neato|'' printer to TeXit.
+
+\begin{verbatim}
+ $DVIBAM = "/usr/local/bin/dvi2bam";
+ $DVIBAMCMD = "$DVIBAM %o %d";
+
+ $PRQUEUE{"neato"} = "bamble";
+ $PRINTCMD{"neato"} = "lpr %o %s.bbw";
+ $PRINTOPT{"neato"} = "-Pneato";
+
+ $DVICMD{"bamble"} = $DVIBAMCMD;
+ $DVIOPT{"bamble"} = "";
+\end{verbatim}
+
+Adding a new printer, ``\verb|myprinter|'', of the same type is a simple
+matter:
+
+\begin{verbatim}
+ $PRQUEUE{"myprinter"} = "bamble";
+ $PRINTCMD{"myprinter"} = "lpr %o %s.bbw";
+ $PRINTOPT{"myprinter"} = "-Pmyprinter";
+\end{verbatim}
+
+\subsection{Removing a Command}
+
+To remove a command, undefine one of the things that its ``\verb|$CMDTEST|''
+string tests. For example, to remove Ghostview:
+
+\begin{verbatim}
+ undef($GSVIEW);
+\end{verbatim}
+
+This is why you should always put a simple command-defined type test in
+your ``\verb|$CMDTEST|'' strings.
+
+To completely remove a command, delete its entries in the \verb|$CMDTEST|
+{\em and\/} \verb|$CMDPROMPT| arrays. If you only delete its entry
+in the \verb|$CMDTEST| array, the command will always be available (a
+null test is true by default). If you only delete its entry in the
+\verb|$CMDPROMPT| array, you will get a runtime error (this is intentional,
+it helps catch typos in the array definitions).
+
+\begin{verbatim}
+ delete $CMDPROMPT{"[b]ibtex"};
+ delete $CMDTEST{"[b]ibtex"};
+\end{verbatim}
+
+\subsection{Removing a Printer}
+
+To remove a printer, delete its ``\verb|$PRQUEUE|'' entry. For example,
+the following command removes the ``Local'' printer:
+
+\begin{verbatim}
+ delete $PRQUEUE{"Local"};
+\end{verbatim}
+
+\subsection{Other Examples}
+
+Look in the \verb|.texitrc| files supplied with TeXit for more ideas
+and examples.
+
+\section{Running under OS/2}
+
+The following file, ``\verb|texit.cmd|'' demonstrates how \verb|texit.pl|
+can be run under OS/2. This sort of hackery might not be necessary if you
+put \verb|texit.pl| in the Perl library path, but I don't because
+the compiled-in path is \verb|c:\perl\lib| which I'm unwilling to use.
+I could recompile Perl, I suppose, but on my 386SX box that'd probably
+take about a year and a half. Not to mention all the disk space I don't
+have. Actually, there's a bug in this port that I would like
+to fix, but I won't be able to do that for a while.
+
+The tricks are:
+
+\begin{itemize}
+ \item You have to get the whole pathname to Perl and OS/2 only
+ passes the path of the command you typed (so if it's on your PATH, it
+ only gets ``\verb|texit|''.
+
+ \item Having put the pathname on the ``extproc'' line, you have to do
+ a ``shift'' to get rid of the name that OS/2 put on the command line.
+
+ \item In order for Perl to find the file ``\verb|require|''d,
+ it must be on the \verb|@INC| path. (You see, it begins with a
+ drive letter (not a ``/'') so Perl thinks it has to look
+ for the file. The bug. Sigh.)
+\end{itemize}
+
+\begin{verbatim}
+ extproc perl -x e:/emtex/texit.cmd
+ #! perl
+ shift; # get rid of TEXIT.CMD shoved on by OS/2
+ push (@INC, "e:/emtex"); # add emtex to search path
+ push (@INC, "e:/Perl/lib"); # perl path
+ require "texit.pl"
+\end{verbatim}
+
+\section{Questions, Suggestions, or Flames?}
+
+I know this documentation is incomplete (and badly written). I'll try to
+answer any questions that you ask and entertain any suggestions that you might
+have (no matter {\em how\/} entertaining I think they are ;-).
+
+In my own defense, I {\em did\/} put lots of comments in the script. It
+shouldn't be too inscrutable.
+
+\end{document}
+
+
+% Start TeXit rules:
+% &cleanup_files ('texittr.tli','texittr.tlo');
+%
+%# &run('treetex texittr'), &waitfor('texittr.tli')
+%# if &changed('texittr.tlo') || &missing('texittr.tli');
+%
+% &dependson('texittr.tli');
+% End TeXit rules:
+