summaryrefslogtreecommitdiff
path: root/obsolete/systems/sisisi/unix/SiTeX3.14/LIESMICH.EXPERTE
diff options
context:
space:
mode:
Diffstat (limited to 'obsolete/systems/sisisi/unix/SiTeX3.14/LIESMICH.EXPERTE')
-rw-r--r--obsolete/systems/sisisi/unix/SiTeX3.14/LIESMICH.EXPERTE184
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 .