program word2tex(input,output,infile,workfile); {----------------------------------------------------------- date 03/02/88 last rev. 25/04/88 Programm zur Konvertierung unformatierter Textdateien aus MicroSoft WORD in TeX. šbersetzt werden deutsche Umlaute, Eszet, Paragraph, die gebr„uchlichsten Akzente sowie einige der WORD-spezifischen Sonderzeichen wie Trennungsvorgabe, geschtztes Blank etc. Aufruf: WORD2TEX [[.]] Dateinamen: Input: .; default =TXT Output: .TEX Hinweise: Auch die Extension TEX ist fr die Input-Datei zul„ssig, sie wird dann durch die konvertierte ersetzt. WORD2TEX kann auch auf eine bereits (teil-)bersetzte Datei angewendet werden. Auch lange Abs„tze k”nnen ohne expliziten Zeilenumbruch geschrieben werden, sie werden automatisch in Records zul„ssiger Gr”áe geteilt. Dateien, die unter WORD versehentlich formatiert abgespeichert wurden, werden erkannt und abgewiesen. Programmiersprache: TurboPascal 4.0 Fehlermeldunge, Verbesserungsvorschl„ge etc. an: Dipl.-Ing. M. Lenz FernUniversit„t Elektronische Schaltungen Frauenstuhlweg 31 5860 Iserlohn Tel. (02371) 566-230 -----------------------------------------------------------} {$M $4000,0,0} uses Dos; const reclen:integer = 400; {ungef„hre maximale Recordgr”áe} var infile,outfile,workfile: text; file_name,infile_name,outfile_name,workfile_name: string[12]; point,extlen,chrcnt: integer; inchar: char; outstr: string[8]; error: boolean; dummy: byte; procedure file_assign; begin if paramcount = 0 then begin writeln ('Name der WORD-Datei: '); read (file_name); end else file_name := paramstr(1); point := pos('.',file_name); if point=0 then infile_name:=file_name + '.txt' else begin infile_name:=file_name; extlen:= length(file_name) - point + 1; delete (file_name,point,extlen); end; workfile_name := file_name + '.###'; outfile_name := file_name + '.tex'; assign (infile,infile_name); assign (outfile,outfile_name); assign (workfile,workfile_name); end; procedure char_replace; begin chrcnt := 0; error := false; while not (eof(infile) or error) do begin read (infile,inchar); case inchar of #$00: error:=true; '„': outstr:='\"a'; '”': outstr:='\"o'; '': outstr:='\"u'; 'Ž': outstr:='\"A'; '™': outstr:='\"O'; 'š': outstr:='\"U'; 'á': outstr:='\ss{}'; ' ': outstr:='\''a'; '…': outstr:='\`a'; '‚': outstr:='\''e'; 'Š': outstr:='\`e'; '¡': outstr:='\''i'; '': outstr:='\`i'; '¢': outstr:='\''o'; '•': outstr:='\`o'; '£': outstr:='\''u'; '—': outstr:='\`u'; #$15: outstr:='\S{}'; #$1F: outstr:='\-'; {Trennvorgabe} #$C4: outstr:='-'; {gesch. Bindestrich} #$FF: outstr:='~'; {gesch. Blank} #$0B: outstr:=#$0D#$0A;{Zeilenwechsel} else outstr:=inchar; end; write (workfile,outstr); {Begrenzung der Recordsize zur Vermeidung von šberl„ufen} if (inchar = #$0A) or (inchar = #$0B) then chrcnt := 0 else begin chrcnt := chrcnt + length(outstr); if (chrcnt > reclen) and (inchar = ' ') then begin chrcnt := 0; writeln (workfile); end; end; end; end; {----------------------------------------------------------- main program -----------------------------------------------------------} begin file_assign; {$I-} reset (infile) {$I+}; if IOresult = 0 then begin rewrite (workfile); char_replace; close (infile); close (workfile); if not error then begin {$I-} erase (outfile) {$I+}; dummy := IOresult; rename (workfile,outfile_name); end else begin writeln ('Datei ist vermutlich eine formatierte WORD-Datei.'); writeln ('Konvertierung abgebrochen.'); writeln ('Speichern Sie den Text unter WORD bitte mit dem Befehl'); writeln ('šBERTRAGEN SPEICHERN formatiert (Nein) !'); erase (workfile); end; end else writeln ('Datei '+infile_name+' existiert nicht!'); end.