Die Arbeit mit TeX kann vor allem bei komplexeren Satzproblemen sehr hilfreich sein, gestaltet sich manchmal aber als recht schwierig. Vor allem das häufige Hin und Her (Editor <-> TeX) ist lästig, da TeX kein WYSIWYG erlaubt. Hier bieten einige Editoren mit eingebauter Shell eine gute Alternative.
Ich möchte Ihnen eine Möglichkeit zeigen, wie man dieses Problem auf einfache Weise lösen kann. Im folgenden will ich mich auf die von mir benutzte Konfiguration beziehen. Als Editor benutze ich EDISON, da dieser ASCII-Texte erzeugt und sowohl über Batchjob-Möglichkeiten als auch Fließtextmodus verfügt. Als TeX benutze ich das von Stefan Lindner vertriebene C-TeX und kann mich im folgenden auch nur auf dieses beziehen. Andere TeX-Versionen sind aber ähnlich aufgebaut. Da sowohl der Editor als auch die Textdateien während des Compilierens im RAM verbleiben, wird ein 1-MByte-Rechner leider nicht ausreichen.
Zunächst soll für den interessierten, aber mit TeX nicht so vertrauten Leser erklärt werden, wie man mit TeX arbeitet. Anschließend werden die Arbeitsweise der Job-Datei und zum Schluß ein kleines Hilfsprogramm beschrieben.
Da TeX eher mit einem Compiler als mit einem Editor verwandt ist, gestaltet sich die Arbeit hiermit ähnlich der mit einer Programmiersprache. Der ‘Quelltext’ enthält den eigentlichen Text, der bei herkömmlichen Compilern nicht vorhanden ist, und zusätzliche Satz(Programm)-Befehle, in denen beschrieben wird, wie der eigentliche Text denn nun anzuordnen ist. Er vereinigt also die ‘Programmbefehle’ und die zu verarbeitenden Daten in einer Datei. Dieser Text wird mit einem herkömmlichen Editor, der aber über einen Fließtextmodus verfügen sollte, erzeugt und dann vom TeX-Programm verarbeitet, das hierzu auf weitere ‘Bibliotheken’ zurückgreift. Hierbei entsteht ein DVI (DeVice Independent)-File, welches den verarbeiteten Text enthält. Zusätzlich werden noch eine LOG-Datei, in der der Compilationsverlauf protokolliert wird, und einige Hilfsdateien erzeugt.
Anschließend kann man den (DVI-)Text mit einem Gerätetreiber sichtbar machen. Für gewöhnlich benutzt man einen ‘Previewer’, um die formatierten Seiten auf dem Bildschirm kontrollieren zu können. Sobald man dann zufrieden ist, läßt man die Seiten auf einem beliebigen Drucker ausgeben. Es existieren TeX-Treiber vom 9-Nadler bis zum Laserbelichter. Die Treiber benötigen neben dem DVI-File noch Informationen, wo sie die Zeichensätze finden können. Diese sind in einer Informationsdatei abgelegt, die noch einige weitere Informationen enthalten können, was aber vom Treiber und benutztem TeX-System abhängt.
Das Handhaben der Dateien und Programme ist nicht ganz einfach. Jobs, das heißt vorbereitete Befehlsabfolgen, erleichtern diese Arbeit. Im folgenden soll beschrieben werden, wie man unter dem Editor ‘EDISON’ hiermit umgeht:
Sie editieren Ihren Text mit dem Editor und starten dann den Job ‘TeX Top Window’ mit F1 (vgl. Listing 1). Dieser sichert zunächst die Dateien, da man vor Rechnerabstürzen nie sicher sein kann. Eine eventuell schon vorhandene LOG-Datei wird gelöscht. Nun wird das TeX-Programm gestartet. Da EDISON nun aber den Dateinamen des aktuellen Fensters - im Job durch @TOP symbolisiert - inklusive des Pfadnamens übergibt, TeX aber nur den Dateinamen erwartet, finden die beiden nicht direkt zueinander. Es muß ein Filterprogramm (Listing 2) eingefügt werden, das den Pfad vom Gesamtnamen trennt, diesen zum Standardpfad erklärt und nur den Dateinamen weitergibt.
Das Umsetzen des Standardpfades ist notwendig, damit TeX seine SETUP-Datei dort sucht und nicht etwa im EDITOR-Ordner. Anders als dies zum Teil bei TeX-Installationen üblich ist, muß man für die TeX-, DVI-, LOG- usw. Dateien denselben Pfad benutzen, da EDIS ON sonst nicht voll nutzbar ist. Hierzu legt man einen Ordner an, der für alle kleinen Dateien (z.B. Briefe) bestimmt ist. Auch eine entsprechend eingestellte ‘TEXSETUP’-Datei wird hineinkopiert (als Beispiel kann hier Listing 3 dienen). Da der Pfad durch ‘TEX_CMDL.TTP’ gesetzt wird, können Sie auch mehrere Text-Ordner anlegen. In jedem muß sich aber eine ‘TEXSETUP’-Datei befinden.
Nachdem die Datei nun geTeXt wurde, gelangt man direkt zurück in den Editor, der den Anwender hierauf durch einen Beep hinweist. Im Falle eines Fehlers hat der Editor auch schon die LOG-Datei geladen (@ERRLO AD @ XTOP.LOG). Nun wird noch der Standardpfad restauriert und der Job beendet. Hiermit liegt uns nun eine DVI-Datei vor, die nur noch begutachtet werden muß. Hierbei hilft uns der folgende Job:
‘Show Top Window’. Hier läuft alles wie oben ab, bis auf die Tatsache, daß der Standardpfad diesmal auf die ‘INF’-Datei des ‘Previewer’ gesetzt wird. Die Optionen müssen sie jeweils Ihren Wünschen entsprechend anpassen. Die Print-Jobs sind ähnlich und auf einen ‘Star NL-10’ abgestimmt.Für größere Projekte, wie zum Beispiel eine Diplomarbeit, empfiehlt es sich, den Suchpfad bzw. die Dateinamen fest auf die Hauptdatei zu legen. Hierdurch ist es möglich, in irgendeiner Unterdatei zu arbeiten und den Job direkt, ohne erst die Fenster wechseln zu müssen, zu starten. Die Jobs ‘Tex Diplom’ bis ‘Print Diplom’ sollen als Beispiel dienen. Weitere Ausbaumöglichkeiten wären zum Beispiel noch Metafont- oder Index-Jobs.
Zum Schluß noch einige Worte zu ‘TEX_CMDL.TTP’. Das Programm ist in Listing 2 wiedergegeben und arbeitet wie folgt: Zunächst werden alle Optionen und Sonstiges direkt in die neue Kommandozeile kopiert. Der letzte Eintrag ist der Dateiname inkl. Pfad. Dieser wird in den String ‘pfad’ kopiert. Hier wird dann nach dem Beginn des eigentlichen Dateinamens gesucht ( entspricht ‘h’), der dann ebenfalls in die Kommandozeile kopiert wird. Der verbleibende Pfad wird analysiert und sowohl Standardlaufwerk (falls nötig) als auch der Standardpfadname gesetzt. Das Programm schließt mit dem Aufruf von TeX und gibt dessen Return-Wert weiter. Das Standardlaufwerk und der dazugehörende Pfad werden vom Job mit @CHDIR zurückgesetzt. Übersetzt nimmt das Programm nur 926 Bytes in Anspruch. Wenn Sie die Stack-Größe auf ca. 500 Bytes einstellen, wird das Programm auch im Speicher nicht viel Platz beanspruchen.
Literatur:
[1] H. Kopka: LaTeX - Eine Einführung
[2] E. Krajewski, H. Hilgers: Edison Handbuch
[3] S. Lindner: TeX Manual
; Job-Datei für TeX Albertus Grunwald 3.10.91
; -------------------------
@JOB1 TeX Top Window
@CSAVE
@DEL @XTOP.LOG
E:\TEX\TEX_CMDL.TTP &lplaing @TOP
@ERRLOAD @XTOP.LOG
@BELL
@CHDIR
@END
; -------------------------
@JOB2 Show Top Window
@CSAVE
@CHDIR E:\TEX\
@DEL @XTOP.PRT
E:\TEX\SCREEN.TTP -j -v2.0cm @XTOP.DVI @XTOP.PRT
@ERRLOAD @XTOP.PRT
@CHDIR
@END
; -------------------------
@JOB3 Print(120) Top Wind
@CSAVE
@CHDIR E:\TEX\
@DEL @XTOP.PRT
E:\TEX\NL10.TTP -j -v0 -ql @XTOP.DVI @XTOP.PRT
@ERRLOAD @XTOP.PRT
@CHDIR
@END
; -------------------------
@JOB4 Print(240) Top Wind
@CSAVE
@CHDIR E:\TEX\
@DEL @XTOP.PRT
E:\TEX\NL10.TTP -j -v0 -q2 @XTOP.DVI @XTOP.PRT
@ERRLOAD @XTOP.PRT
@CHDIR
@END
; -------------------------
@JOB5 TeX Diplom
@CSAVE
E:\TEX\TEX_CMDL.TTP &lplaing E:\DIPLOM\DIPLOM.TEX
@ERRLOAD @XTOP.LOG
@BELL
@END
; -------------------------
@JOB6 Show Diplom
@CSAVE
@CHDIR E:\TEX\
E:\TEX\SCREEN.TTP -v2.0cm E:\DIPLOM\DIPLOM.DVI
@ERRLOAD @XTOP.PRT
@CHDIR
@END
; -------------------------
@JOB7 Print(240) Diplom
@CSAVE
@CHDIR E:\TEX\
E:\TEX\NL10.TTP -v0 -q2 E:\DIPLOM\DIPLOM.DVI
@ERRLOAD @XTOP.PRT
@CHDIR
@END
Listing 1: Mit diesen einfachen Job-Befehlen läßt sich die Arbeit mit TeX wesentlich vereinfachen.
% Beispiel für ein Setup, wie es für die Arbeit
% mit Edison geeignet ist
tfmpaths = E:\TEX\texinput\tfm; % Die standard-Fonts
inputpaths = ., % Der aktuelle Pfad|
E:\TEX\texinput\stdinput,
E:\TEX\texinput\temp,
E:\TEX\graphics;
outputpath = .; % Temporäre Dateien, z.B.
% .aux, .toc für LaTeX
logpath = .;
dvipath = .;
dumppath = E:\TEX\texinput\formats;
formatpaths = E:\TEX\texinput\formats;
defaultformat = E:\TEX\texinput\formats\lplaing.fmt;
poolfile = E:\TEX\tex.poo;
Listing 2: Dieses C-Listing dient dem Setzen des Standardpfades und dem Aufruf des TeX-Programms.
/*************************************************
**
** Kommandozeilenbearbeitung für TeX
**
** von Albertus Grunwald 18.2.1991
** geschrieben mit Turbo C
** (c) 1992 MAXON Computer
*************************************************/
#include <stdio.h>
#include <string.h>
#include <tos.h>
#define _toupper( c) ( ( (c)>='a' && (c)<='z') ? (c)+'A'-'a' : (c) )
int main( int argc, char *argv[] )
{
COMMAND cmdln;
int i, index;
char c, *h , *path;
/* Optionen kopieren */
for( index=0, i=1; i<argc-1; i++)
{ while( ( c= *argv[i]++)!= '\0')
cmdln.command_tail[index++]= c;
cmdln.command_tail[index++]= ' ';
}
/* Pfad- und Dateiname trennen */
path= argv[argc-1];
if( (h= strrchr( path,'\\') )!= NULL)
h++;
else if( (h= strrchr( path,':') )!= NULL)
h++;
else
h= path;
/* Dateiname kopieren */
for( index=0; ( c= *h)!= '\0'; h++, index++)
{ cmdln.command_tail[index]= c;
*h= '\0';
}
cmdln.command_tail[index]='\0';
cmdln.length= index+1;
if( path[1]== ':')
{ Dsetdrv( _toupper(path[0])-'A');
Dsetpath( path+2);
}
else
Dsetpath( path);
return( (int)Pexec( 0, "E:\\TEX\\TEX.TTP", &cmdln, NULL) );
}
Listing 3: Hier ein Vorschlag für eine TEXSETUP-Datei. Je nachdem, welches TeX-System Sie verwenden, ist diese entsprechend anzupassen.