diff options
Diffstat (limited to 'obsolete/systems/sisisi/unix/SiTeX3.14/LIESMICH.EXPERTE')
-rw-r--r-- | obsolete/systems/sisisi/unix/SiTeX3.14/LIESMICH.EXPERTE | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/obsolete/systems/sisisi/unix/SiTeX3.14/LIESMICH.EXPERTE b/obsolete/systems/sisisi/unix/SiTeX3.14/LIESMICH.EXPERTE new file mode 100644 index 0000000000..ea97b1f343 --- /dev/null +++ b/obsolete/systems/sisisi/unix/SiTeX3.14/LIESMICH.EXPERTE @@ -0,0 +1,184 @@ + + + TeX mit SISISI-Silbentrennung + ============================= + + Technische Dokumentation fuer Fortgeschrittene + ============================================== + + +(Hinweis: Dieses File enthaelt nur technische Information. Wenn Sie nur SiTeX +installieren wollen, ohne sich fuer die Probleme und Hintergruende zu +interessieren, brauchen Sie dieses File nicht zu lesen. Wenn allerdings bei +der normalen Installation etwas schiefgehen sollte, kann Ihnen die in diesem +File enthaltene Information vielleicht weiterhelfen.) + +0) Grundsaetzliches. +-------------------- + +Die SISISI Silbentrennung ist ein WEB-Changefile (sitex3.ch), das gewoehnlich +in tex.web hineingetangle'd wird. Fuer die UNIX-Version von TeX wurde +allerdings ein web2c Konverter geschrieben, der das von tangle erzeugte tex.p +in C-Code konvertieren soll. Dieser Konverter kann mit den in sitex3.ch +verwendeten Standard-Pascal Befehlen nicht umgehen, z.B. koennen keine +statisch geschachtelten Prozeduren verarbeitet werden. + +Es war also notwendig, sitex3.ch so zu aendern, dass es von dem web2c +Konverter verarbeitet werden kann. Ausserdem hat der web2c Konverter einige +Eigenheiten (sprich Fehler :-), die es notwendig machen, den entstehenden +C-Code einer Nachbearbeitung (sprich Korrektur) zu unterwerfen. Diese +Aufgaben wurden im Rahmen eines Informatikpraktikums von den Studenten +Hans-Juergen Szoldatics und Florian Zwerina geloest. + +1) Einbinden von SISISI in TeX. +------------------------------- + +Das erste Problem entsteht dadurch, dass tangle nur ein einzelnes Changefile +in ein .web Masterfile einbinden kann. In der C/UNIX Version ist es +allerdings notwendig, zuerst sitex3.ch in tex.web einzubinden, und dann +zusaetzlich noch ctex.ch. Diese Aufgabe kann mit tangle alleine nicht geloest +werden. Es gibt allerdings ein Programm namens TIE, das dazu verwendet werden +kann, mehrere Changefiles in ein Masterfile einzubinden, und das in einer C +Version auf + + ftp.th-darmstadt.de [130.83.55.75] + directory pub/programming/literate-programming/Tools + file tie-<version>.tar.Z + +zur Verfuegung steht. + +(Ich bin Klaus Guntermann fuer diese Information zu grossem Dank verpflichtet). + +Um Ihnen das Leben zu erleichtern, finden Sie tie-2.4.tar.Z gemeinsam mit den +anderen SISISI-Files in diesem Verzeichnis. Um Ihnen das Leben noch leichter +zu machen, finden Sie auch ein sitex.web, das nichts anderes ist als tex.web +(Version 3.14) mit sitex3.ch hineingetie'd. Falls Sie allerdings vorhaben +sollten, eine andere (neuere oder aeltere) Version von TeX zu verwenden, +muessen Sie zuerst tie.c uebersetzen und das ebenfalls in diesem Verzeichnis +vorhandene sitex3.ch in Ihr tex.web hineintie-en, um ein neues sitex.web zu +erhalten. (Wenn Sie das `install' Skript verwenden wollen, muessen Sie nachher +sitex.web compress-en, oder das `install' Skript entsprechend aendern.) + +2) Die Konversion von TeX (mit SISISI) nach C. +---------------------------------------------- + +Sobald Sie Ihr original tex.web durch sitex.web ersetzt haben (wobei Sie +sitex.web in tex.web umbenennen muessen), koennen Sie ein `make' starten, +genau wie bei der normalen Installation von TeX. Allerdings sind noch einige +kleine Vorarbeiten notwendig, die Ihnen das `install' Skript abnimmt, die Sie +aber bei haendischer Installation selbst tun muessen. + +Zunaechst einmal sind die internen Tabellen von tangle und web2c zu klein +fuer SiTeX, und muessen vergroessert werden. Dazu gibt es neue Versionen von +tangle.ch und web2c.c und web2c.h, die in ihre entsprechenden Verzeichnisse +kopiert werden muessen (naemlich nach TEXSRC/web und TEXSRC/web2c). Ausserdem +muessen einige Definitionen in ctex.ch geaendert werden, und deshalb wird +auch dieses File mitgeliefert. Ausserdem gibt es noch neue Versionen der +Makefiles, da 1) zwei neue Format-Files erzeugt werden muessen und 2) nicht +mehr nur tex[0-8].c ensteht, sondern auch tex9.c. + +3) Jetzt beginnt der Aerger. +---------------------------- + +tex.web wird von tangle in tex.p konvertiert (mit ctex.ch als Changefile), +und tex.p dann von einem Skript namens `convert' unter Verwendung von web2c +in mehrere .c und .h Files umgewandelt. Dann versucht sich der C-Compiler an +dem Resultat, und damit beginnen die Schwierigkeiten. Aus irgendwelchen +unerfindlichen Gruenden wird '] ] )' von web2c in ') ] ]' umgewandelt, was +natuerlich den obligaten Syntaxfehler erzeugt. Ausserdem wird ein Array, das +in Pascal als Wertparameter an eine Prozedur uebergeben wird, automatisch zu +einem Var-Parameter, da der Arrayname in C ja eigentlich nur ein Zeiger auf +das erste Element des Arrays ist. In Pascal wird - wie es sich fuer einen +Wertparameter gehoert - eine Kopie des gesamten Arrays erzeugt und diese dann +an die Prozedur uebergeben. In C wird eine Kopie des Zeigers erzeugt und +diese dann uebergeben. Was passiert, wenn dann das Array innerhalb der +Prozedur modifiziert wird, kann man sich denken (in Pascal ist nur die lokale +Kopie betroffen, in C ...). Aus diesem Grund muss explizit ein temporaeres +Array in der Prozedur definiert werden, das den Wert des Parameters speichert +und beim Verlassen der Prozedur wieder herstellt. Natuerlich muss die +Zuweisung, die in Pascal ja auch fuer Arrays funktioniert, in C durch ein +`memcpy' ersetzt werden. + +Ein weiterer Fehler wird durch die schlechte Konvertierung der Ein-/Ausgabe +Anweisungen von Pascal erzeugt. Bei der Umwandlung von write() in fprintf() +geht die Feldbreite verloren (write(x:4) wird zu printf("%d",x) anstelle von +printf("%4d",x)). Ebenso gibt es Probleme bei der Eingabe, wenn +selbstdefinierte Datentypen verwendet werden. Dadurch kommt es zu einem +Fehler beim Abspeichern bzw. Einlesen der Hashtabelle, die im File hf3 +abgespeichert wird. + +Wieder ein anderes Problem entsteht durch die trickreiche Umsetzung von +Prozedurdeklarationen und -aufrufen. Um die Unterscheidung von Wert- und +Variablenparametern so transparent wie moeglich zu machen, werden alle +Funktionen (im C-Code) umbenannt und stattdessen Makros definiert, die den +Adressoperator auf alle Var-Parameter anwenden und damit die (jetzt +umbenannte) Funktion aufrufen. Vorteil: Am Funktionsaufruf aendert sich gar +nichts, nur wird statt der Funktion jetzt eben der Makro `aufgerufen', der +dann fuer die richtige Uebergabe der Parameter sorgt. Leider tut web2c zuviel +des Guten und erzeugt in den Makros auch noch Typecasts, damit die Parameter +auch nur ja den richtigen Typ haben. Und GNU C vertraegt es leider nicht, +wenn Casts auf Array-Typen vorgenommen werden, was in SiTeX nun halt einmal +vorkommt. Deshalb muessen alle Casts, die Array-Typen spezifizieren, aus +coerce.h entfernt werden (dort sind alle Makros und Funktionsprototypen +definert). + +Um Ihnen diese Korrekturen abzunehmen, stehen die Files tex6.c, coerce.h und +texd.h in bereits korrigierter Form zur Verfuegung, und muessen nach +TEXSRC/tex kopiert werden, sobald `make' zum ersten Mal mit der Fehlermeldung +`cast specifies array type' abbricht (wenn vorher ein anderer Fehler +auftritt, ist etwas schiefgegangen !). Wenn Sie das `install' Skript +verwenden, geschieht dies automatisch. Dann wird einfach wieder das `make' neu +gestartet. Das Problem dabei ist, dass web2c eigentlich nur ein einziges +grosses C-File erzeugt, das dann nachtraeglich in die einzelnen Files +aufgespaltet wird, und dass keine Garantie dafuer besteht, dass das tex6.c, +das Sie erhalten, genauso aussieht wie jenes, das bei mir enstanden ist und +in dem ich die Fehler korrigiert habe. Sollten sich (was aber eher +unwahrscheinlich ist) im weiteren Verlauf des `make' wieder Fehler ergeben, +und zwar dass Symbole nicht bzw. doppelt deklariert wurden, ist genau dieser +Fall eingetreten. Verstaendigen Sie mich dann bitte umgehend. Ansonsten +sollten Sie aber jetzt ohne weitere Probleme initex und virtex in Ihrem +TEXSRC/tex Verzeichnis erhalten. + +4) Die Installation des fertigen SiTeX. +--------------------------------------- + +Nachdem also nun initex und virtex erfolgreich erstellt wurden, muessen Sie +noch die Format-Files erzeugen und alles in den entsprechenden Verzeichnissen +installieren. Die Format-Files werden vom `install' Skript automatisch +erzeugt, aber wenn Sie es haendisch tun wollen/muessen, sehen Sie am besten +im Makefile in Ihrem SISISIDIR nach, wie man Format-Files erzeugt. Wenn Sie +das `install' Skript verwendet haben, finden Sie neben sitex.fmt und +silatex.fmt in TEXSRC/tex auch noch ein File namens sitex.pool und ein File +namens hf3. Wenn Sie allerdings `install' nicht verwendet haben, heisst +sitex.pool noch tex.pool und muss erst umbenannt werden. Das hf3 File wird +automatisch generiert, sobald Sie das erste Format-File erzeugen. + +Sie sollten nun zuerst hf3 in ein Verzeichnis in Ihrem TEXINPUTS Pfad kopieren, +und sitex.pool in das TEXPOOLDIR. Dann kommen sitex.fmt und silatex.fmt in +das TEXFORMATS Verzeichnis, und in dem selben Verzeichnis erzeugen Sie auch +einen Link namens siplain.fmt auf sitex.fmt. + +Jetzt muessen Sie sich entscheiden, ob Sie Ihr altes TeX/LaTeX behalten +wollen oder nicht. Falls Sie auch weiterhin fremdsprachige Texte bearbeiten +wollen, sollten Sie das neue initex und virtex unter neuem Namen (z.B. +siinitex und sivirtex) in ein Verzeichnis in Ihrem Standard-Suchpfad +kopieren, und Links namens sitex und silatex auf sivirtex erzeugen, in dem +selben Verzeichnis. + +Falls Sie das alte TeX nicht mehr wollen, kopieren Sie einfach das neue +virtex ueber das alte, und ebenso das neue initex ueber das alte initex, und +stellen Sie die sitex und silatex Links her. Die alten Links, tex, latex, +slitex etc. koennen Sie entfernen. + +5) Bugs, Probleme etc. +---------------------- + +Der Installationsprozess wurde auf einem 486 PC mit Interactive Unix SVR3.2 +und auf einer HP 9000/705 mit HP-UX 8.07 getestet. Auf beiden Maschinen sind +die Resultate, die silatex liefert, identisch. Allerdings hatte ich bis jetzt +keine Gelegenheit, silatex auf anderen Systemen, speziell BSD und AIX, zu +testen. Deshalb muss silatex noch immer als Beta Version betrachtet werden, +und alle Fehlermeldungen, Kommentare, (Verbesserungs-)Vorschlaege und +Berichte ueber erfolgreiche Inbetriebnahme sind willkommen. + +Schicken Sie bitte EMail an heinz@eiunix.tuwien.ac.at . |