← ST-Computer 05 / 1992

TeX-Job fĂŒr EDISON: Das Zusammenspiel zwischen TeX und Editor

Grundlagen

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.

Arbeiten mit TeX

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.

Die Jobs

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.

Nachhilfe

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.

Albertus Grunwald