\documentstyle[german]{article} % This is LaTeX und nicht plain TeX
% Also entsprechendes Formatfile benutzen
% Die german.sty Datei von DANTE e.V. wird auch ben\"otigt

\title{ARexx Unterst"utzung f"ur PasTeX\\
\medskip
--Vorl"aufige Dokumentation--}

\author{Georg He"smann\\ hessmann@unipas.fmi.uni-passau.de\medskip\\
J\"org H\"ohle\\ hoehle@cs.uni-sb.de\\Joerg\_Hoehle@saarag.zer}

\begin{document}
\maketitle
\begin{abstract}

ARexx ist ein n"utzliches Mittel zur inter Task Kommunikation, ganz
besonders auf dem Amiga. Es ist Bestandteil des neuen Betriebsystems
2.0. Das Programm ShowDVI bietet ein gutes ARexx Interface, da"s eine
einfache Steuerung erm"oglicht. Wir haben einige ARexx Befehlsdateien
geschrieben, um die Zusammenarbeit zwischen ShowDVI, dem \TeX\ Compiler,
{\sf METAFONT}, der Shell und den Editoren CygnusEd\footnote{CygnusEd
is ein kommerzieller Editor der Firma ASDG\@.} oder Micro(GNU)Emacs
(MG)\footnote{MG (mg3b) ist auf Fred Fish's AmigaLibDisk352 zu finden.}.
Dieser Text ent"alt eine Beschreibung der Installation und Anwendung
dieser Makros.

\end{abstract}

\newpage
\tableofcontents
\newpage

\section{Copyright}

Alle hier beschriebenen Makros\footnote{Bitte beachten: Nur die Makros sind PD,
{\bf nicht} aber der Rest von Pas\TeX!} wurden von Georg He"smann und J"org
H"ohle als PUBLIC DOMAIN freigegeben. D.h., da"s wir auf alle Rechte
auf diese Makros verzichtet haben.

Wir hoffen, da"s Benutzer von Pas\TeX\ und ARexx die bisherigen
Makros erweitern und weitere Makros f"ur andere Editoren schreiben
werden. Fehlermeldungen und Verbesserungsvorschl"age sind uns
willkommen! 

Dieser Text beschreibt nicht, wie die Makros zur Unterst"utzung von
{\sf METAFONT} installiert und benutzt werden. Bitte lesen sie dazu
die Anleitung zu dem CallMF Programmpaket. Diese liegt aber leider
noch nicht in \TeX\ Form vor.

\section{Installation}

Es folgt ein kurzer "Uberblick der mitgelieferten Dateien:

\subsection{Beschreibung der Dateien}

\begin{itemize}

\item {\tt doc/TeXRexx.tex} Diese Anleitung.

\item {\tt rexx/namestruc}: Diese ARexx Makrodatei enth"alt eine Funktion,
die einen jeden Dateinamen in 3 Teile zerlegt: Diskname, ev.
Unterverzeichnisse und Name ohne anschlie"sende extension (welche
durch einen . eingeleitet wird).
{\sl Als einzige der ARexx Files {\bf mu"s} sich diese Datei im {\tt Rexx:}
Verzeichnis befinden!}

\item {\tt rexx/TeX-Server.rexx}: Dies ist das Hauptprogramm zur
Steuerung des \TeX\ Compilers. Es wird ein ARexx Port namens {\tt
Start\_TeX} erzeugt, anschlie"send wird darin auf Befehle zum
compilieren einer Datei gewartet.

\item {\tt rexx/TeXedit.rexx}: Diese Programmdatei wird entweder von
virtex oder von initex "uber das 'e' Kommando, oder aber "uber den
\TeX-Server aufgerufen, falls ein Fehler beim "Ubersetzen eines
\TeX-Files auftreten sollte.

\item {\tt rexx/Start\_TeX.\#?}: Diese Dateien dienen dazu, von der
Shell, ShowDVI, CED oder MG aus den \TeX-Server aufzurufen.

\item {\tt rexx/Quit\_TeX\#?}: Mit diesen Scripten wird der \TeX-Server
angewiesen sich zu beenden, sobald die etwaig laufende "Ubersetzung
fertig ist.
Die Datei {\tt rexx/Quit\_TeX} kann von jedem
Programm aus aufgerufen werden. Spezifische Abarten sind {\tt
rexx/Quit\_TeX.ced} f"ur den CED Editor, und {\tt rexx/Quit\_TeX.sd} f"ur
ShowDVI.

\item {\tt rexx/\#?ToFront}: Diese Dateien dienen dazu, bestimmte
Bildschirme (Screens) nach vorne zu holen. Sei es der Bildschirm von ShowDVI, von CED oder
der Workbench$^{TM}$ Screen.

\item {\tt rexx/StartDVIprint.\#?}: Dies sind Dateien, die eine
einfache Steuerung von DVIprint erm"oglichen. Die aktuelle Datei soll
gedruckt werden, es wird nur noch nach den Seitennummern gefragt. Der
richtige Drucker mu"s in der Umgebungsvariablen {\tt ENV:DVIPRINT}
angegeben worden sein, sonst wird der in den Preferences eingestellte
Treiber verwendet. Die speziellen Treiber in DVIprint sind allerdings
deutlich schneller als die Preferences Treiber. Siehe dazu auch die DVIprint Anleitung. 

\item {\tt rexx/NextTeXError.\#?}: Dies sind Makrodateien, die eine
elementare Fehlersuche m"oglich machen. Nach jedem Aufruf wird an die n"achste
Fehlerposition, ausgehend von der aktuellen Cursor Position, gesprungen.

\item {\tt rexx/Setvirtex.\#?}: Diese Dateien erm"oglichen es, den Pfad
zum \TeX\ compiler zu setzen. Dies kann n"utzlich sein, um zwischen
small\TeX\ und Big\TeX\ hin und her zu schalten.

\end{itemize}

Es gibt nun 2 M"oglichkeiten, die Makros korrekt zu installieren. Die
kompliziertere zwingt Sie nicht, viele neue Dateien in Ihrem
wahrscheinlich sowieso "ubervollem {\tt Rexx:} zu kopieren, daf"ur
m"u"sen dabei ein paar Kleinigkeiten konfiguriert werden.

%PSTF ???
\subsection{Einfache Installation}

Kopieren Sie alle ARexx Scripten in Ihr {\tt Rexx:} Verzeichnis.
Diese Methode wird allerdings nicht empfohlen, da man dabei leicht
den "Uberblick "uber seine ARexx Scripten verlieren kann.

\subsection{Empfohlene Installation}

Nur die Datei {\tt namestruc} mu"s sich in Ihrem {\tt Rexx:}
Verzeichnis befinden. Alle anderen k"onnen sich z.B. in {\tt
TeX:rexx/} befinden. Damit dies funktioniert, m"ussen sie bei der
Konfigurierung von CED, MG, ShowDVI und der Umgebungsvariablen volle
Pfadnamen verwenden, also etwa

{\tt SetEnv TEXREXXEDIT TeX:rexx/TeXedit.rexx \%s \%d} \hfill RICHTIG

statt

{\tt SetEnv TEXREXXEDIT TeXedit \%s \%d} \hfill FALSCH.

\begin{itemize}

\item \TeX-Server: Wie soeben angegeben mu"s die {\tt ENV:TEXREXXEDIT}
Umgebungsvariable auf den vollen Pfadnamen der {\tt TeX-Server.rexx}
Script gesetzt werden.

\item ShowDVI: Sie m"ussen die Datei {\tt ShowDVI.config} editieren
(aber noch {\em bevor} Sie ShowDVI aufrufen), und dabei die Zeile

{\tt arexx-start-script	rx TeX-server.rexx}\quad in

{\tt arexx-start-script	rx TeX:rexx/TeX-Server.rexx}

"andern. Zus"atzlich m"ussen Sie die Eintr"age f"ur die
Funktionstasten nach folgendem Beispiel "andern:

{\small \begin{verbatim}
f1		TeX:rexx/Start_TeX.sd
f2		TeX:rexx/Start_TeX.sd ?
f3		TeX:rexx/Quit_TeX
f4		TeX:rexx/Setvirtex.sd
f6		TeX:rexx/StartDVIprint.sd
f10		TeX:rexx/WBtoFront
F2		TeX:rexx/Start_TeX.sd
\end{verbatim}}

\item CLI: Benutzen Sie {\tt rx TeX:rexx/Start\_TeX}, oder f"ugen Sie
den {\tt TeX:rexx/} Pfad Ihrem ARexx Suchpfad an, falls sie OS 2.0
oder das Programm {\tt csh}, und das Makro {\tt Start\_TeX.rexx} benutzen wollen.

\item CED: Installieren Sie die ARexx Makros mit kompletten
Pfadangaben, etwa als `{\tt TeX:rexx/Start\_TeX.ced}' und `{\tt
TeX:rexx/Start\_TeX.ced ?}'

\item MG: Volle Pfadnamen verwenden, wie folgendes Beispiel zeigt:

{\small\begin{verbatim}
; Neue ESC-X Funktionen
; Diese wird das Format in ENV:TEXFORMAT benutzen, sonst nachfragen:
fset tex-compile	"\exrexx\nTeX:rexx/Start_TeX.mg\n"
; Diese wird immer nach einem Format fragen:
fset tex-compile-queryf "\exrexx\nTeX:rexx/Start_TeX.mg ?\n"
;fset tex-compile-latex "\exrexx\nTeX:rexx/Start_TeX.mg latexgde\n"

; Weitere Beispiele:
fset tex-view-to-front	"\exrexx\nTeX:rexx/SDVItoFront.mg\n"
fset tex-quit		"\exrexx\nTeX:rexx/Quit_TeX\n"

; f1 Taste
global-set-key "\F8"	tex-compile
; F2
global-set-key "\F19"	tex-compile-queryf
; f3
global-set-key "\F10"	tex-quit
; f10
global-set-key "\F17"	tex-view-to-front
\end{verbatim}}

\end{itemize}

Das ist alles, was f"ur die Installation der Makrodateien notwendig ist.


\section{Benutzung der Makros}

Nun da alle Dateien korrekt installiert sind, m"ochten Sie die neuen
M"oglichkeiten sicherlich auch ausprobieren. Hier folgt eine Beschreibung der
M"oglichkeiten, die sich Ihnen nun bieten.

\subsection{Der \TeX-Server}\label{formatname}

Als erstes mu"s {\em immer} der TeX-Server gestartet werden. Unter dem
Betriebssystem 2.0 k"onnen Sie daf"ur ShowDVI's "`{\tt Shell commands
-> ARexx TeX-Shell}"' Men\"ueintrag verwenden. Ansonsten "offnen Sie
ein neues Shell Fenster, da"s f"ur Eingaben in den Server benutzt
werden soll. Unter WB 1.3 k"onnen Sie hierf"ur nicht den
entsprechenden ShowDVI Men"ueintrag verwenden, weil ShowDVI auf
Beendigung dieser Shell wartet, bevor es weitere Befehle
entgegennimmt. Starten Sie den Server mit {\tt rx
TeX:rexx/TeX-server}.

Der Server wird Sie zuerst fragen, ob er einen Editor aufrufen soll, sobald
der \TeX\ Compiler ({\tt virtex}) auf den ersten Fehler st"o"st, oder ob
Sie ev.\ Fehler in virtex interaktiv korrigieren wollen, und ev.\ mit
dem 'e' Kommando selbst den Editor aufrufen wollen. Im Falle eines
Fehlers wird der Editor "uber {\tt TeXedit.rexx} gestartet.

Anschlie"send werden Sie gefragt, ob Sie einen \TeX\ Formatnamen angeben
wollen, wenn eine Anwendung das Standardformat verlangt (dies ist der
Fall, wenn ,?' als Formatname benutzt wird). Dieser Name wird in der
Umgebungsvariablen {\tt ENV:TEXFORMAT} gespeichert, und wird auch von
{\tt virtex} ausgewertet (Falls diese Variable existiert, wird der
darin enthalten Name statt dem bisher "ublichen {\tt plain}
verwendet). Falls Sie also immer das selbe Format verwenden, brauchen
Sie den Namen nur beim ersten Mal anzugeben, und er bleibt
gespeichert.

Wenn Sie nun den Server "uber irgendeine Start\_TeX Datei aufrufen,
k"onnen Sie ein Format vorgeben (m"ussen aber nicht), oder Sie k"onnen
als Formatnamen ,?' verwenden. In letzerem Fall werden Sie nach dem zu
benutzendem Formatnamen gefragt. Falls Sie keinen Namen angegeben
haben, und beim \TeX-Server auf die 2. Frage mit "Yes" geantwortet
haben, werden Sie nun nach einem Formatnamen gefragt, ansonsten wird
{\tt ENV:TEXFORMAT} benutzt.

Danach wartet der Server auf zu compilierende Dateien. Das Shell
Fenster dient nur noch dazu um den Compiliervorgang zu beobachten, und um, im
Falle eines Fehlers, Kommandos einzugeben.

\subsection{In ShowDVI}

Sie haben ja schon im Installationsteil die {\tt ShowDVI.config} Datei
nach folgendem Schema ver"andert:

\begin{verbatim}
f1      TeX:rexx/Start_TeX.sd
f2      TeX:rexx/Start_TeX.sd ?
f3      TeX:rexx/Quit_TeX
f4      TeX:rexx/Setvirtex.sd
f6      TeX:rexx/StartDVIprint.sd
f10     TeX:rexx/WBtoFront
F2      TeX:rexx/Start_TeX.sd
\end{verbatim}

Die Funktionstaste {\tt F1} oder shift {\tt F2} dient dazu, die aktuelle
Datei zu compilieren. Als Format wird das in {\tt ENV:TEXFORMAT}
gesetzte benutzt. Bei Bet"atigung der Funktionstaste {\tt F2} wird noch zus"atzlich nach
dem Formatnamen gefragt. {\tt F3} beendet die Arbeit mit dem \TeX\
Server, {\tt F4} erm"oglicht es, zwischen small\TeX\ und Big\TeX\ zu
w"ahlen, in dem der Pfad zu dem jeweiligen Verzeichnis angegeben wird
(siehe sp"atere Beschreibung dieser Datei). {\tt F6} startet DVIprint,
{\tt F10} bringt den Workbench$^{TM}$ Bildschirm nach vorne. 

\subsection{In einer Shell}

Der Aufruf von {\tt virtex} "uber den \TeX-Server unterscheidet sich in folgenden Punkten von
einem direktem Aufruf von virtex:

\begin{enumerate}

\item Es k"onnen keine Optionen wie {\tt -c} und {\tt -d} angegeben
werden.

\item Sie m"ussen einen Dateinamen angeben. Falls die entsprechende
Datei nicht im aktuellen Verzeichnis ist, m"ussen sie den vollen
Pfadnamen angeben.

\item Sie brauchen vor dem Formatnamen kein \& anzugeben, wenn Sie den Formatnamen
"uber eine ARexx Script festlegen. Das erleichtert die Arbeit mit manchen Shell Programmen,
f"ur die das \& Symbol ein Zeichen mit einer ganz besonderen Bedeutung ist.

\item Der Server wird asynchron aufgerufen, so da"s Ihr CLI schon nach
kurzer Zeit wieder zur Befehlsannahme bereit ist, auch wenn der eigentliche \TeX\ 
Aufruf noch nicht fertig ist. 

\end{enumerate}

Die Syntax f"ur den Start einer \TeX-"Ubersetzung aus dem CLI heraus lautet:

$$\hbox{\tt [rx] Start\_TeX [$<Formatname>$] $<Dateiname>$}$$

Welche Angaben Sie zum Formatnamen machen k"onnen, lesen Sie bitte
in Kapitel \ref{formatname} nach.

Das {\tt Start\_TeX.rexx} Makro ruft den \TeX-Server synchron auf, und der Server kann
nur eine Datei gleichzeitig abarbeiten. D.h., da"s bei 2 kurz
aufeinander folgenden Aufrufen auf Beendigung des 1. Compiliervorgangs
gewartet werden mu"s, bevor der 2. angenommen werden und die Shell
damit wieder frei gibt. Ist der \TeX-Server allerdings nicht schon belgt, so
wird die {\tt Start\_TeX.rexx} Script sofort nach "Ubergabe des \TeX-Filenamens
an den \TeX-Server Prozess sofort wieder beendet. Die Script wartet also nicht darauf, da"s
das \TeX-File fertig "ubersetzt ist.

\subsection{In MG}

Die kurze Beispieldatei im Kapitel "uber die Installation zeigt Ihnen,
wie Sie neue Kommandos definieren und an bestimmte Tasten binden
k"onnen. Diese Datei k"onnen Sie bei Bedarf laden (mit "`Esc-x load
$<return>$ $<Dateiname>$"'), oder aber Sie h"angen sie an Ihre {\tt
s:mg-startup} Datei an, damit die neuen Kommandos Ihnen nach dem Start
sofort zur Verf"ugung stehen.

Die Datei im aktuellen Puffer wird gespeichert und der \TeX-Server wird
aufgerufen. Der Dateiname mu"s in "`tex"' enden.

Welche Angaben Sie zum Formatnamen machen k"onnen, lesen Sie bitte
in Kapitel \ref{formatname}.

{\tt Start\_TeX.mg} arbeitet im gegensatz zu allen anderen Makros
v"ollig asynchron, so da"s Sie sofort in MG weiterarbeiten k"onnen,
ohne weiter auf den Compiliervorgang achten zu m"ussen. Dennoch
sollten sie vor Beendigung dieses Vorgangs keinen weiteren Befehl zum
compilieren einer weiteren Datei geben, da der Server immer nur eine
Datei behandeln kann. Weitere Dateien werden mit Verz"ogerung
behandelt, was zu vermeidbaren "Uberraschungen f"uhren kann.

\subsection{In CED}

Viel gibt es nicht zu sagen. Die einzelnen {\tt .ced} Scripten werden
mit dem {\tt Dos/ARexx interface} auf verschiedene Funktionstasten gelegt.
Scripten die sich auf ein bestimmtes File beziehen, wie z.B.\ {\tt NextError}
m"ussen aus dem "`View"' heraus aufgerufen werden, in dem sich das {\tt .tex}
File befindet.

\subsection{DVIprint mittels ARexx starten}

Dies k"onnen Sie derzeit nur von ShowDVI aus und bietet eine sehr
einfache M"oglichkeit, um DVIprint aufzurufen. Das aktuelle Dokument
soll gedruckt werden. Es wird lediglich nach erster und letzter Seite
gefragt, ob im Draft Modus gedruckt werden soll oder nicht, dann erfolgt der
Aufruf. Dabei ist zu beachten, da"s der Drucker schon in {\tt ENV:DVIprint}
angegeben werden mu"ste, falls nicht der Preferences Treiber benutzt
werden soll. Genaueres ist in der Anleitung zu DVIprint zu erfahren.

\section{Weitere Makros und M"oglichkeiten}

\subsection{small\TeX\ or Big\TeX?}
virtex mu"s nicht in Ihrem Suchpfad sein, bevor Sie den Server
aufrufen, denn Sie k"onnen die Rexx Variable {\tt virtex} (bitte
beachten sie die Kleinschreibung) auf den vollen Pfad zu dem virtex
Programm setzen. Falls diese Variable nicht gesetzt ist, wird {\tt
virtex} benutzt, also in der Resident Liste und in dem beim Aufruf vom
Server g"ultigem Kommandopfad gesucht. Nun k"onnen Sie zwischen
Small\-\TeX\ und Big\TeX\ umschalten, durch "`{\tt rxset virtex
TeX:bin/big/virtex}"' oder durch Benutzung einer {\tt Setvirtex.\#?}
Programmdatei.

\subsection{asynchrone Compilierauftr"age}
Alle Start\_TeX Makros reichen einen Auftrag an den \TeX-Server, und
werden beendet, so bald der Auftrag angenommen wurde. Dies geschieht
bei einem wartendem Server sehr schnell, aber wenn der Server noch mit
einem Compilierlauf besch"aftigt ist, dauert dies bis Beendigung
dieses Laufs. Allein in MG kann weitergearbeitet werden, dank MGs
ausgezeichneter ARexx Schnittstelle. Gut gemacht, Mike!

\section{Bekannte Fehler und Eigenschaften}

\begin{itemize}

\item Ein einfaches NextError Makro ist vorhanden, l"auft aber nicht korrekt
mit Dokumenten, die aus mehreren Datei bestehen. So genau wird die
Logdatei derzeit nicht analysiert.

\item DME Unterst"utzung: Ich h"atte gerne Makros f"ur Matthew Dillons
DME Editor geschrieben, aber so viel ich wei"s, fehlt diesem Editor
die M"oglichkeit, von anderen Programmen aus "uber ARexx angesprochen
zu werden, was f"ur das TeXedit.rexx Makro unbedingt ben"otigt wird.
Umgekehrt kann DME ARexx Programme starten, also stellt ein {\tt
Start\_TeX.dme} Makro kein Problem dar.

\item Unterst"utzung weiterer ARexx f"ahiger Editoren wie zum Beispiel
TurboText fehlt leider noch.
\end{itemize}
\bigskip

Bitte schicken Sie alle Meldungen "uber Fehler, W"unsche und Ideen an:
\begin{center} Georg He\ss mann\\
(hessmann@unipas.fmi.uni-passau.de)\\ oder\\ J\"org H\"ohle\\
(hoehle@cs.uni-sb.de oder Joerg\_Hoehle@SAARAG.ZER)\end{center}

\begin{flushright}
J\"org H\"ohle\\
28.September 1991
\end{flushright}
\end{document}

