summaryrefslogtreecommitdiff
path: root/support/word2tex/word2tex.pas
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/word2tex/word2tex.pas
Initial commit
Diffstat (limited to 'support/word2tex/word2tex.pas')
-rw-r--r--support/word2tex/word2tex.pas192
1 files changed, 192 insertions, 0 deletions
diff --git a/support/word2tex/word2tex.pas b/support/word2tex/word2tex.pas
new file mode 100644
index 0000000000..fcbac961b7
--- /dev/null
+++ b/support/word2tex/word2tex.pas
@@ -0,0 +1,192 @@
+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 [<name>[.<ext>]]
+
+ Dateinamen:
+
+ Input: <name>.<ext>; default <ext>=TXT
+ Output: <name>.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.
+ \ No newline at end of file