\magnification=\magstep1
\input nice
\def\mynum#1{\ifnum #1<10 0\the#1\else \the#1\fi}
\def\mymonth#1{\ifcase#1 \or Januar \or Februar \or M\"arz \or April
   \or Mai \or Juni \or Juli \or August
   \or Oktober \or September
   \or November \or Dezember \fi}

%\ifx\protect\relax \else
%  \let\protect\relax
%\fi
%\input german.sty
%\umlauthigh % fuer nice <= Version 2.0

\def\LaTeX{{\rm L\kern-.36em\raise.3ex\hbox{a}\kern-.15em
    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}

\def \quadtwo {\quad\quad}
\def \eingabe#1 {\smallskip\quadtwo{\tt #1}\smallskip}

\def\tbw {\hskip 10pt \it to be written $\ldots$}

%\def \rechner{ST}
\def \rechner{Amiga}

\article

\titlepage
\vfill
\title{Pas\TeX 3.1}
\removelastskip
\medskip
\title{AMIGA Implementation}
\bigskip
\release{Dokumentation}
\smallskip
\release{vom}
\release{\mynum{\day}. \mymonth{\month}\mynum{\year}}
\bigskip
\author{von}
\author{Georg He\ss{}mann}
\author{Bernd Raichle}
%%\author{David G\"ohler}
\vskip 1cm
\vfill
%\abstract{}
%\vfill
\endtitlepage


\medskip
\plainsection{Inhaltsverzeichnis:}
\medskip
\makecontents
\newpage

\contentslevel=3
\contfill={\dotfill}
\contskip=3pt
\let\scstyle=\bf

\section{Copyright}

Da \TeX\ selbst nicht von mir stammt und die Anpassungen\slash
\"Anderungen daran nur minimal sind, ist diese Version Public Domain.
Jeder kann diese Version kopieren und weitergeben.

Man beachte jedoch, da\ss{} einzelne Teile der mitgelieferten Programme
(vor allem die Treiber ShowDVI und DVIprint) bzw.\ Makro-Pakete
ein Copyright besitzen!


\section{Allgemeines \"uber \TeX}

\TeX\ wurde erfunden, um mit dem Computer qualitativ hochwertige
Drucke erstellen zu k\"onnen. Ziel war es, B\"ucher und Texte aller
Art vom Computer so aufbereiten zu lassen, da{\ss} sie sch\"on aussehen.
Dies bezieht sich aber nicht in erster Linie auf die Aufl\"osung des
Druckers. \TeX\  setzt Texte so, da{\ss} sie \"asthetisch sch\"on sind.

Diese Satzkunst beherrschten fr\"uher nur Setzer. Normalerweise braucht
man eine gute Ausbildung und ein geh\"origes Ma{\ss} an Erfahrung, um
gutaussehende Texte fabrizieren zu k\"onnen. So ist ein Text beispielsweise
angenehm zu lesen, wenn man nicht zu viele Schriftarten auf einer
Seite verwendet, weil sich das Gehirn sonst nicht richtig auf den
Text konzentrieren kann. Genauso sind Leerzeilen h\"aufig angebracht,
um einen Text zu strukturieren. Dies sind nur einfache Grundregeln.
Setzer kennen hunderte davon, und h\"aufig sehen von Profis produzierte
Texte einfach besser aus als andere. Manchmal wei{\ss} man gar nicht so
richtig warum, aber sie sehen einfach besser aus. Setzer waren
dar\"uber hinaus auch in der Lage, Fehler des Schreibers zu korrigieren
-- was manchmal auch zu Verschlimmbesserungen gef\"uhrt hat.

Wenn man nun als Privatmann mit wenig Zeit und nicht mit diesen
speziellen Kenntnissen ausger\"ustet trotzdem {\it sch\"one} Texte
drucken m\"ochte, sollte das Programm einem viele Kleinigkeiten
abnehmen. \TeX\ ist in dieser Hinsicht sehr freundlich und nimmt
einem -- wenn man es nicht ausdr\"ucklich anders haben will -- fast
alles ab. So kann man sich auf den Inhalt konzentrieren.

\subsection{Mensch und Maschine}

``Computer sind doof" h\"ore ich es noch von Kinderstimmen sagen. Und wie
so h\"aufig haben sie recht. Rechner sind recht beschr\"ankt. Man mu{\ss}
ihnen alles haarklein vorgeben, damit sie das tun, was sie tun sollen.
Da sie aber nicht in der Lage sind, die menschliche Stimme zu
verstehen (geschweige denn interpretieren zu k\"onnen, was man gesagt
hat), mu{\ss} man sich auf die Ebene der Maschine begeben und mit der
Tastatur dem Rechner befehlen, was er zu tun hat.

Im Zeitalter der M\"ause und Grafikoberfl\"achen ger\"at die Tastatur
zunehmend in Vergessenheit, beim Tippen von Texten ist sie (zum
Gl\"uck) noch unentbehrlich. Da man die Texte sowieso \"uber die Tastatur
in den Computer kriegen mu{\ss}, ist es sinnvoll auch die Anweisungen,
welche Texte wie und wo auf einer Seite unterzubringen sind, in den
Text einzubauen.

Genauso funktioniert \TeX. Man schreibt einen Text, wie man es mit
einer Schreibmaschine auch tun w\"urde. Doch jedesmal, wenn man etwas
Besonderes veranstalten m\"ochte -- wie zum Beispiel ein Wort
fettzudrucken oder in Schr\"agschrift zu setzen -- mu{\ss} man dies dem
Computer mitteilen. Dies geschieht durch Anweisungen, die man direkt
davor in den Text einbaut. Wie sollte der Computer sonst auch
mitbekommen, da{\ss} ein bestimmtes Wort in fetter Schrift zu drucken ist?

Der Computer wei{\ss} zwar, wie mit dem Text umzugehen ist, f\"ur den
Drucker sind die Buchstaben auf dem Bildschirm oder auf der
Festplatte wiederum chinesisch. Also mu{\ss} man den Text so umwandeln,
da{\ss} dieser daraus einen sch\"on aussehenden Text macht. \hbox{Hierzu}
braucht man nun das \TeX-Programm. Die Umwandlung ist in zwei Stufen
aufgeteilt. Die erste Stufe erledigt das Programm {\tt virtex} (steht
f\"ur ``virgin'' \TeX). Es vollf\"uhrt die Umwandlungen, die f\"ur
jeden Drucker gleich sind. Als Erzeugnis liefert es eine Datei, die
mit dem K\"urzel {\tt .dvi} endet. Die zweite Stufe \"ubernimmt der
Druckertreiber {\tt DVIprint}, der die speziellen Umwandlungen f\"ur
den angeschlossenen Drucker vornimmt. Er nimmt die Datei mit der
Endung {\tt .dvi} und verschickt das Ergebnis seiner Umwandlung an
den Drucker.

``Soll das etwa hei{\ss}en, da{\ss} ich jeden Text erst zweimal \"ubersetzen
(umwandeln) und auch noch ausdrucken mu{\ss}, bevor ich mitkriegen kann,
wie er aussieht?".

Jain. Ja, weil die beiden Umwandlungen immer sein m\"ussen. Ohne sie
kann man nicht sehen, was aus dem Text-Anweisungen-Gemisch geworden
ist. Nein, weil es eine M\"oglichkeit gibt, die Texte so umwandeln zu
lassen, da{\ss} man sie sich auf dem Bildschirm ansehen kann.

Hierzu gibt es ein Programm namens {\tt ShowDVI}, da{\ss} jede Datei, die ein
K\"urzel {\tt .dvi} hat, umsetzt und auf dem Bildschirm anzeigt.
Die zweite Stufe l\"auft also anders. Das {\tt ShowDVI} druckt sozusagen
nicht auf dem Drucker aus, sondern auf dem Bildschirm. Ohne Papier
verschwenden zu m\"ussen, kann man also vorab nachschauen, ob der Text
was geworden ist. Wenn er einem gef\"allt, wirft man das Programm {\tt DVIPrint}
an, um den Text zu drucken. Gilt es \"Anderungen anzubringen,
mu{\ss} man eben beide Stufen noch einmal durchlaufen.

\smallskip

{\subsectiontitlefont Zusammenfassung}
Um mit \TeX\ einen Text zu erzeugen, mu{\ss} man

{\smallskip\lnarrower\itemlist{--\quad}
\next einen Text tippen und mit Anweisungen mischen
\next diesen von dem Programm {\tt virtex} in eine Datei umwandeln, die
mit dem K\"urzel {\tt .dvi} endet
\next diesen von dem Programm {\tt ShowDVI} auf den Bildschirm
bringen und entscheiden, ob er gef\"allt
\next wenn er nicht gef\"allt, wieder von vorn anfangen
\next wenn er gef\"allt, von {\tt DVIprint} \"uber den Drucker ausgeben
lassen.
\enditemlist\smallskip}

Manchem mag dieses Verfahren nicht ganz zeitgem\"a{\ss} erscheinen. Ich
wage aber zu behaupten, da{\ss} ich mit dieser Methode deutlich schneller
als mit einem sogenannten DTP-Programm bin und da{\ss} die Ausdrucke
\"asthetisch sch\"oner sind.


\subsection{Die Teile von \TeX}

\TeX\ besteht -- neben den Makrofiles -- aus zwei Programmen: {\tt
initex} und {\tt virtex}.

Mit {\tt initex} wird ein Format-File (Endung `{\tt fmt}') erzeugt.
Dazu initialisiert dieses Programm alles von Grund auf, liest Makros
und Trenntabellen ein und schreibt seinen Speicherinhalt in ein
relativ kompaktes Format, dem Format-File.  Dieser Vorgang wird
\"ublicherweise als ``Dumpen'' eines Formates bezeichnet.

{\tt virtex}, eine ``virgin'' Version von {\tt initex}, kann dieses
Format-File nun relativ schnell laden und mit dem Formatieren eines
Textes beginnen.  Wegen der nicht mehr notwendigen Initialisierung
ben\"otigt {\tt virtex} weniger Speicher als {\tt initex}.

\smallskip
Wozu nun dieses Format-File ?

\TeX\ (genauer plain\TeX) und \LaTeX\ selbst sind keine eigenen
Programme, sondern nur in ein Format-File gedumpte Makropakete, die
man mit {\tt virtex} laden kann.  In einer Shell kann
man dazu {\it aliases} definieren, z.B.

\leftline{\kern.2\hsize\tt alias tex\ \ \ \ virtex \&plain}
\leftline{\kern.2\hsize\tt alias latex\ \ virtex \&lplain}


\subsection{Hardwarevoraussetzungen}

\TeX\ selbst l\"auft mit mindestens 1~MB Speicher, nur zum Erzeugen
eines Format-Files mit {\tt initex} schadet ein halbes~MB mehr auf
keinen Fall.

F\"ur die Big-Version von \TeX\ sollten mindestens 1,5~MB (zum Dumpen
entsprechend mehr) zur Verf\"ugung stehen.

\TeX\ nur mit einem bzw.\ auch mit zwei Diskettenlaufwerken betreiben
zu wollen, funktioniert zwar, grenzt aber hart an Masochismus.
Empfehlenswert ist auf jeden Fall eine Festplatte mit ca.\ 5--10~MB
Platz (je nachdem, wieviele Fonts, Makro- und Format-Files man
gleichzeitig auf der Platte haben will).



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\section{Besonderheiten der Implementierung}

Die aktuelle Implementierung baut auf der C-Version von \TeX\ aus dem
Unix Web2C-Paket auf\footnote{Diese Version ist also nicht von Hand
nach~C \"ubersetzt und eingetippt.} und wurde noch um einige Features
erweitert.

\itemlist{ -- }
\next Konfigurierbarkeit
\next Suchpfadangabe mittels Environment-Variablen oder in einem
Konfigurationsfile
\next Unterst\"utzung von CodePages zum Mapping bei unterschiedlicher
Zeichensatzbelegung im~\rechner{} und in~\TeX
\next inkl.\ ``Statistics''\footnote{\TeX\ kann man auch ohne die
sogenannten ``Statistics'' compilieren, dabei erh\"alt man eine Version
die um ca.\ 1\% schneller l\"auft.  Jedoch sind dann die
{\tt\string\tracing..}-Befehle nicht mehr verf\"ugbar.}
\enditemlist


\subsection{Kommandozeilen-Optionen}

In der Kommandozeile k\"onnen neben dem zu formatierenden File noch
einige Optionen mit angegeben werden.

Die Syntax des Aufrufes sieht damit folgenderma\ss{}en aus:

\leftline{\kern.2\hsize\tt
    initex [{\it Optionen}] [\&{\it fmt}[.fmt]] [{\it file}[.tex]]}
\hbox{bzw.}
\leftline{\kern.2\hsize\tt
    virtex [{\it Optionen}] [\&{\it fmt}[.fmt]] [{\it file}[.tex]]}
\smallskip

Als Optionen sind zul\"assig:
\staggered{12345}%{\tt -l{\it language-nummer}\ }
\key{\tt -c{\it dir-liste\footnote{Die Pfad-Liste mu\ss{} dirket hinter dem
  `{\tt c}' stehen. Ebenso die Zahl nach der {\tt -l} Option.}\hss}}
\key{}
  Hiermit kann man eine Liste an Directories, getrennt durch Komma,
  angeben, in denen das Konfigurationsfile {\tt tex.cnf} gesucht wird.
  Eine weitere M\"oglichkeit w\"are das Setzen der Environment-Variable
  {\tt TEXCONFIG} auf {\it dir-liste}.
\key{\tt -b} {\tt \string\batchmode}
\key{\tt -n} {\tt \string\nonstopmode}
\key{\tt -s} {\tt \string\scrollmode}
\key{\tt -e} {\tt \string\errorstopmode} (Default)
\key{}
  Es kann nur eine dieser Optionen gleichzeitig angegeben werden.
  Hiermit kann der {\it Interaction-Mode} entsprechend den
  \TeX-Kommandos |\batchmode|, |\nonstopmode|, |\scrollmode| bzw.\
  |\errorstopmode| gesetzt werden.
\key{\tt -l{\it language-nummer}\hss}
\key{}
  Ab Version~3.0 kann man Trenntabellen f\"ur bis zu 256~Sprachen
  gleichzeitig laden.  Die Umschaltung zwischen diesen Tabellen
  geschieht durch den neuen \TeX-Counter |\language|.  Hat man in
  Position~0 die englischen und in Position~1 die deutschen
  Trennungen geladen, so kann mittels {\tt -l1} auf die deutsche
  Trennung umgeschaltet werden, ohne eine \"Anderung des zu
  formatierenden Files. Gibt man eine Zahl $> 255$ oder $< 0$ an, so
  entspricht dies |\language=0|, ist f\"ur die angegebene Nummer keine
  Tabelle geladen, so wird die Trennung ausgeschaltet\footnote{Die
  Style-Option {\tt german.sty} (Version 2.3c) schaltet z.B. auf
  Position~1 um.  Sind hierf\"ur keine Trennmuster geladen, trennt
  \TeX\ nicht mehr.}.
%\key{\tt -t}
%  Als Default wird das Zeilenende in Textfiles, die von \TeX\
%  geschrieben werden, nur durch ein {\it LineFeed} angegeben.
%  Der ST-Desktop und auch einige Editoren verlangen als Zeilentrennung
%  ein {\it CarriageReturn\slash LineFeed}, dies wird durch die
%  Angabe dieser Option erzwungen.
\key{\tt -d}% ST only
  Debugflag, damit werden einige mehr oder weniger aussagekr\"aftige
  Informationen zus\"atzlich mit ausgegeben.
\endstaggered

Die Optionen m\"ussen jeweils einzeln f\"ur sich, durch ein Leerzeichen
voneinander getrennt, angegeben werden.  Zul\"assig ist z.B. {\tt -s
-e}, unzul\"assig dagegen {\tt -se}.



\subsection{Environment-Variablen}

Um vern\"unftig mit \TeX\ arbeiten zu k\"onnen, werden neben dem
Programm selbst, noch weitere Files ben\"otigt.  Wo diese Files gesucht
werden, kann mittels Environment-Variablen\footnote{Es werden die Standard
ENV: Variablen verwendet}
angegeben werden (oder im Konfigurationsfile).

\medskip

\def\default#1{\hfill\break({\sl Default: ``{\tt#1}''})}

\staggered{12345}
\key{\tt TEXINPUTS\hss}
\key{}
  Wo soll \TeX\ nach den Makro-, Style-Files und dem zu formatierenden
  Text suchen?  Hier sollte man das aktuelle Directory (anzugeben
  als `|.|') nicht in der Liste vergessen.  (Files mit Endung
  `|tex|', `|sty|')
  \default{.,tex:macros}\footnote{Diese Default-Werte sind direkt in das
  	\TeX-Programm eincompiliert, k\"onnen aber auch teilweise
        \"uber das Konfig-File ge\"andert werden.}
\key{\tt TEXFORMATS\hss}
\key{}
  Wie schon erw\"ahnt, ben\"otigt man zum Formatieren eines Textes ein
  Format-File, in dem z.B. das \LaTeX-Makropaket enthalten ist.
  (Files mit Endung `|fmt|')
  \default{tex:formats}
\key{\tt TEXFONTS\hss}
\key{}
  \TeX\ ben\"otigt au\ss{}erdem noch Informationen \"uber die verwendeten
  Fonts, die in den `\TeX\ Font Metric'-Files zu finden sind.
  (Files mit Endung `|tfm|')
  \default{.,tex:fonts}
\key{\tt TEXPOOL\hss}
\key{}
  {\tt initex} liest zu Beginn alle in \TeX\ verwendeten Strings
  (z.B. Fehlermeldungen) aus einem ``Poolfile''.
  (File `|tex.pool|')
  \default{.,tex:}
\key{\tt EDITOR\hss}
\key{}
  Falls in der Eigabe f\"ur {\tt initex} oder {\tt virtex} ein Fehler ist
  (und man sich im interaktiven Modus ist) kann man mit `{\tt e}' einen
  Editor starten. In der Variable kann man eintragen, welcher Editor
  aufgerufen werden soll. F\"ur {\tt \%s} wird der Filename und f\"ur
  {\tt \%d} wird die Zeilennummer des Fehlers eingetragen.
  \default{ed \%s -i}
\key{\tt TEXREXX\hss}
\key{}
  Diese Variable bestimmt, ob der Editor als System-Kommando
  oder als ARexx Script gestartet werden soll. Wenn die Variable nicht
  belegt ist, so wird der Editor als System-Kommando gestartet.
  Ist die Variable mit einem beliebigen String belegt, so wird der Editor
  nicht direkt gestartet, sondern es wird eine ARexx-Script aufgerufen.
  Ist {\tt TEXREXX} nun mit dem String ``{\tt edit}'' belegt, dann wird nicht
  erst darauf gewartet, da\ss{} der Benutzer mittels dem {\tt e} Kommando
  den Editor startet, sondern er wird sofort nach Auftreten des ersten
  Fehlers gestartet.
\key{\tt REXXEDITOR\hss}
\key{}
  Diese Variable gibt an, welche ARexx Script aufgerufen werden soll, falls
  das `{\tt e}' Kommando eingegeben wird und {\tt TEXREXX} gesetzt ist.
  Normalerweise ist diese Script in |rexx:| und hat die Extension |.rexx|.
  \default{texedit \%s \%d}
\key{\tt TEXCONFIG\hss}
\key{}
  Suchpfad f\"ur das Konfigurationsfile |tex.cnf|.  Ist ebenso
  durch die `{\tt -c}'-Option beim Aufruf m\"oglich.
  (File `|tex.cnf|') Diese Variable wird auch von den Treibern
  \hbox{ShowDVI} und
  DVIprint verwendet. Dort darf sie allerdings keine Liste von Pfaden sein,
  sondern nur ein einzelner Pfad.
  \default{tex:config}
%\key{\tt UNIXMODE\hss}
%\key{}
%  Siehe File `|unixmode.doc|' f\"ur weitere Informationen.
\endstaggered


\subsection{Konfigurationsfile ``tex.cnf''}

Der Nachteil der meisten Implementierungen ist die fest vorgegebene
Gr\"o\ss{}e der einzelnen Arrays in \TeX.  Erscheinen nun neue
Makro-Pakete, wie z.B. das neue {\it Font Selection Scheme} von
\LaTeX, so erreicht man meist eine der Grenzen der vielen Arrays in
\TeX\ (beim genannten ist dies der {\it String Pool\/}) und der
Benutzer erh\"alt die nette Meldung: ``you can ask a wizard to enlarge
me''.

Mit dem Konfigurationsfile {\tt tex.cnf} kann der Benutzer nun selbst
zu einem \TeX-Wizard werden.  Falls einmal die Meldung von oben
erscheinen sollte, \"andert man einfach die Gr\"o\ss{}e des zu kleinen
Arrays.

\medskip

Im Konfigurationsfile werden vier Typen von Informationen abgelegt:
\pnumbered
\next Suchpfade
\next Voreinstellungen
\next CodePage-Information
\next Gr\"o\ss{}e der \TeX-Arrays
\endpnumbered

Die Information wird als Schl\"usselwort-\slash Werte-Paar angegeben,
dabei mu\ss{} das Schl\"usselword am Zeilenanfang beginnen und mit
Leerzeichen oder Tabs vom Wert getrennt werden.

Nicht erkannte Schl\"usselworte werden ohne Meldung ignoriert, dies
kann man nutzen, um Kommentare in das File einzuf\"ugen.  Besser ist
jedoch die Verwendung eines Prozentzeichens `|%|' als Kommentarbeginn.
Der Rest der Zeile nach dem Prozentzeichen wird ignoriert.

Das Konfigurationsfile wird bis zum Fileende gelesen, jedoch kann man
durch ein `|#|' als erstes Zeichen einer Zeile das Lesen vorzeitig
abbrechen. Dies ist z.B. sinnvoll, wenn danach noch ein l\"angerer
Kommentar folgt.


\subsubsection{Suchpfade}

Statt der Angabe von Suchpfaden \"uber die Environment-Variablen
k\"onnen diese auch hier angegeben werden.  Als Schl\"usselw\"orter
sind bekannt: |TEXINPUTS|, |TEXFORMATS|, |TEXFONTS| und |TEXPOOL|.
Diese m\"ussen gro\ss{} geschrieben werden.

Der Wert der entsprechenden Environment-Variable \"uberschreibt
dabei die Angabe im Definitionsfile.

%Der Wert aus der entsprechenden Environment-Variable wird durch einen
%im Konfigurationsfile gegebenen Suchpfad \"uberschrieben.  Bei
%mehrmaligen Setzen einer Variable werden alle weiteren ignoriert.


\subsubsection{Default Sprache}

%Einige Optionen, die man in der Kommandozeile angeben kann, k\"onnen
%auch im Konfigurationsfile gesetzt werden.

%Mit dem Eintrag\hfil\break
%\leftline{\kern.2\hsize\tt crlf\qquad 0}
%wird das Zeilenende nur durch LF markiert, mit\hfil\break
%\leftline{\kern.2\hsize\tt crlf\qquad 1 \qquad \% 1 oder Wert <> 0}
%dagegen mit CR/LF. Dies entspricht der {\tt -t}-Option.

Die Zeile\hfil\break
\leftline{\kern.2\hsize\tt language\qquad 197}
setzt den \TeX-Counter {\tt \string\language} auf den gegebenen Wert,
hier 197.  Dies entspricht `|\language=197 |' zu Beginn des
zu formatierenden Files.  Hat man mit der |-l|-Option \"uber die
Kommandozeile einen Wert \"ubergeben, so wird der Wert im
Konfigurationsfile ignoriert.


\subsubsection{\TeX-Arrays}

Die Original \TeX-Source ist in der Sprache Pascal ohne Erweiterungen,
wie dies z.B. Turbo-Pascal bietet, geschrieben worden.  Dadurch
konnten Portierungen auf andere Systeme und Sprachen einfach und ohne
gro\ss{}e \"Anderungen durchgef\"uhrt werden.  Der Nachteil: die Gr\"o\ss{}e
aller Array ist zum Compilierzeitpunkt statisch fest vorgegeben.

Diese Implementierung erlaubt es, die Gr\"o\ss{}e der meisten Arrays, die
\TeX\ intern verwendet, erst zum Startzeitpunkt zu setzen.  Welche
Gr\"o\ss{}en gesetzt werden k\"onnen und welche Bedeutung diese Arrays
haben, wird in einem nachfolgenden Abschnitt behandelt.

F\"ur nicht im Konfigurationsfile angegebene Werte werden Defaultwerte
verwendet, bei mehrmaligem Setzen wird der letzte Wert genommen.

Mit der |-d| Option kann man sich die Werte anzeigen lassen.

\subsubsection{CodePage}

Die CodePage-Definition beginnt mit dem Schl\"usselwort |codepage|
zu Beginn einer Zeile, beendet wird sie durch zwei Kleinerzeichen
|<<|.  Werden mehrere Definitionen in einem Konfigurationsfile
angegeben, so werden alle als eine einzige Definition angesehen.

Im Kapitel 5 wird dies noch genau erkl\"art.

\subsubsection{Ein Beispiel-Konfigurationsfile}

So k\"onnte das Konfigurationsfile {\tt tex.cnf} aussehen:

{\narrower
\beginverbatim
% tex.cnf	Beispiel eines Konfigurationsfile fuer TeX
%
% zuerst mal alle moeglichen Environment-Variablen setzen ...
%
TEXINPUTS       .,TeX:macros,Work:tex/macros,Work:tex/texte
TEXFORMATS      .,TeX:formats,Work:tex/formats
TEXFONTS        .,TeX:fonts
% nur fuer IniTeX:
TEXPOOL         .,TeX:,Work:tex/pool
%
% ... und jetzt noch einige Werte umsetzen
%
stringvacancies 10000
maxstrings       6000
triesize        16000
itriesize       19000    % triesize (for IniTeX only)
memmax          33000
memtop          33000
#
^-- Markiert das Ende von TeX.cnf: '#' am Zeilenanfang

Hier kann nun noch beliebig viel Kommentar-Text kommen.
\endverbatim
}


\subsection{\TeX{} -- ARexx Schnittstelle}

\subsubsection{Editor Aufruf}

Wie im normalen Unix\footnote{Unix ist ein registrated Trademark from
AT\&T$\ldots$}-\TeX{} kann man auch von Pas\TeX{} aus einen Editor
starten. Hat \TeX{} einen Fehler gefunden, so kamm man mittels des
`{\tt e}' Kommandos einen Editor aufrufen.

Wie in Kapitel 3.2 schon geschrieben, kann man mit Setzen der Variable
{\tt TEXREXX} bestimmen, da\ss{} der Editor nicht mittels eines
System-Kommandos, sondern \"uber eine \hbox{ARexx} Script aufgerufen werden
soll. Der Weg \"uber eine Script wurde gew\"ahlt, um eine
gr\"o\ss{}tm\"ogliche Flexibilit\"at zu erhalten.

\subsubsection{ARexx Scripts}

Es stehen auch eine Reihe von ARexx-Scripts zur Verf\"ugung, die
quasi eine ``\TeX-Shell'' nachbilden. Diese Scripts sind:
\staggered{12345}
\key{\tt texedit.rexx\hss}
\key{}
  Diese Script wird von \TeX{} aufgerufen und zeigt die fehlerhafte
  Stelle des \TeX-Files im CygnusEd\footnote{kurz CED; dies
  ist ein kommerzieller Editor von ASDG Inc.}  Professional 2 an.
\key{\tt start\_tex.rexx\hss}
\key{}
  Diese Script ist die zentrale \TeX-Shell Script. Diese sollte
  in einem CLI mit {\tt rx start\_tex} gestartet werden.
\key{\tt start\_tex.sd\hss}
\key{}
  Wie alle ARexx-Scripts mit der Extension {\tt sd} wird diese vom 
  Previewer ShowDVI aus aufgerufen. Sie sucht den Port der
  {\tt start\_tex.rexx} Script und veranla\ss{}t diese, das zur Zeit
  im Previewer angezeigte File neu zu \"ubersetzen.
\key{\tt start\_tex.ced\hss}
\key{}
  Das \"Aquivalent zur {\tt start\_tex.sd} Script. Nur da\ss{} diese
  vom CED aus aufgerufen wird.
\key{\tt quit\_tex.sd\hss}
\key{}
  Mit Aufruf dieser Script aus dem Previewer heraus, schlie\ss{}t die
  Script {\tt start\_tex.rexx} ihren Port und beendet sich.
\key{\tt quit\_tex.ced\hss}
\key{}
  Wieder das \"Aquivalent zu oben. Nur da\ss{} diese aus dem CED heraus
  aufgerufen wird.
\key{\tt callmf.rexx\hss}
\key{}
  Diese Script ist nur in Verbindung mit Metafont interesant.
  Wenn die Variable {\tt CALLMF} mit ``{\tt callmf}'' belegt ist, und
  die Treiber einen Font nicht finden k\"onnen, so wird diese Script
  aufgerufen, damit diese den Font generiert. Bis jetzt ist diese
  Script aber nur eine Testversion!
\key{\tt cedtofront.sd\hss}
\key{}
  Mit dieser Script kann man vom ShowDVI aus, den Editor CED nach vorne
  holen.
\key{\tt sdvitofront.ced\hss}
\key{}
  Diese Script holt den Previewer vom Editor aus nach vorne.
\endstaggered{}



\section{Arrays in \TeX}

Im Konfigurationsfile k\"onnen den folgenden Parametern Werte
zugewiesen werden:

\medskip

\staggered{12345}
\key{\tt memmax\hss}
\key{\tt memtop\hss}
\key{}
 {\tt memmax} bzw.\ {\tt memtop} geben die Gr\"o\ss{}e des wichtigsten
Arrays in \TeX\ an. In diesem ``main memory'' wird z.B. die komplette
Seite aufgebaut und Makrodefinitionen abgelegt.

 {\tt initex} ignoriert den Wert von {\tt memmax} und setzt
$\hbox{\tt memmax}=\hbox{\tt memtop}$.  Der Wert von {\tt memtop} soll
beim Dumpen mit {\tt initex} m\"oglichst gro\ss{} gew\"ahlt werden, dieser
wird im Format-File mitabgelegt.

 F\"ur {\tt virtex} und {\tt initex} mu\ss{} gelten:
 $\hbox{\tt memtop}\leq\hbox{\tt memmax}\leq 65534$.
 Man kann also f\"ur {\tt virtex} ein gr\"o\ss{}eres ``main memory'' als
 f\"ur {\tt initex} verwenden.

 Speicherbedarf: 4~Bytes $*$ {\tt memmax} bzw.\ {\tt memtop}

\smallskip

\key{\tt triesize\hss}
\key{\tt itriesize\hss}
\key{\tt trieopsize\hss}
\key{}
 Alle Trenntabellen, die von {\tt initex} eingelesen werden, werden
sehr kompakt in einem ``Trie'' gehalten.  {\tt initex} ben\"otigt
jedoch viel Speicher f\"ur diesen Trie, da er erst vollst\"andig
aufgebaut werden mu\ss{}, bevor dieser komprimiert werden
kann\footnote{Dies ist der Hauptunterschied von {\tt initex} und {\tt
virtex}}. Durch den sehr gro\ss{}en Speicherbedarf des Tries in {\tt
initex}, mu\ss{} bei wenig Speicher {\tt membot} auf einen Wert $< 65534$
gesetzt werden.  Da der komprimierte Trie f\"ur {\tt virtex} sehr viel
weniger Platz ben\"otigt, kann meist {\tt memmax} auf 65534 gesetzt
werden, so da\ss{} man zum Formatieren den maximal verf\"ugbaren `main
memory' zur Verf\"ugung hat. Die Gr\"o\ss{}e des Trie's wird durch {\tt
triesize} (f\"ur {\tt virtex}) bzw.\ {\tt itriesize} (f\"ur {\tt
initex}) angegeben, beide m\"ussen kleiner als 65536 sein. Die Anzahl
an ``trie operands'' ist {\tt trieopsize} ($\leq 32767$).

Speicherbedarf: \vtop{
\halign{\quad#\hfil&\quad\hfil# Bytes\hfil&\quad\hfil# Bytes\hfil\cr
   &\omit\quad {\tt (i)triesize}&\omit\quad {\tt trieopsize}\cr
 {\tt initex}& 15& 10\cr
 {\tt virtex}& \hphantom{0}5& \hphantom{0}3\cr}}

\smallskip

\key{\tt fontmax\hss}
\key{\tt fontmemsize\hss}
\key{}
 {\tt fontmax} gibt die Anzahl der maximal geladenen Fonts an (mu\ss{}
$\leq 255$ sein).  Die Fontinformation aus den {\tt tfm}-Files wird in
ein Array der Gr\"o\ss{}e {\tt fontmemsize} geladen.  {\tt fontmemsize}
kann dabei beliebig gro\ss{} sein.

 Speicherbedarf: 79~Bytes $*$ {\tt fontmax} $+$ 4~Bytes $*$ {\tt
fontmemsize}

\smallskip

\key{\tt maxstrings\hss}
\key{\tt poolsize\hss}
\key{\tt stringvacancies\hss}
\key{}
 In einem Array namens ``String Pool'' werden alle Strings, darunter
fallen auch alle \TeX-Makros und -Primitive, wie z.B. {\tt
\string\relax}, abgelegt.  Die Gr\"o\ss{}e dieses Arrays wird durch {\tt
poosize} bestimmt, die Anzahl der Strings durch {\tt maxstrings}.
{\tt stringvacancies} gibt nun an, wieviel Platz im String Pool nach
dem Laden eines Format-Files noch mindestens f\"ur vom Benutzer
definierte Strings vorhanden sein mu\ss{}.  Alle drei Parameter k\"onnen
unbegrenzt gr\"o\ss{} gew\"ahlt werden.

 Speicherbedarf: 1~Byte $*$ {\tt poolsize} $+$ 4~Byte $*$ {\tt
maxstrings}

\smallskip

\key{\tt bufssize\hss}
\key{\tt maxinopen\hss}
\key{}
  Jede eingegebene Zeile (von einem File oder von der Tastatur) wird
in einem Array der Gr\"o\ss{}e {\tt bufsize} abgelegt.  {\tt bufsize} mu\ss{}
kleiner als 65536 sein.  {\tt maxinopen} gibt die Anzahl der
gleichzeitig offenen Files an (mu\ss{} kleiner als 128 sein).

 Speicherbedarf: 1~Byte $*$ {\tt bufsize} $+$ 8~Byte $*$ {\tt
maxinopen}

\smallskip

\key{\tt maxprintline\hss}
\key{\tt errorline\hss}
\key{\tt halferrorline\hss}
\key{}
  {\tt maxprintline} gibt die maximale L\"ange der Log-Ausgabe auf den
Bildschirm bzw.\ ins Log-File an (\"ublicherweise $= 79$, mu\ss{} $\geq
60$ sein).  {\tt errorline} gibt die maximale L\"ange der
Kontextinformation bei einem Fehler an (mu\ss{} $\geq 45$ sein), {\tt
halferrorline} ist die L\"ange der ersten Zeile dieses Kontextes
($30\leq \hbox{\tt halferrorline}\leq \hbox{errorline}-15$).

 Speicherbedarf: 1~Byte $*$ {\tt errorline}

\smallskip

\key{\tt savesize\hss}
\key{\tt stacksize\hss}
\key{\tt dvibufsize\hss}
\key{}
  Zum Sichern von Werten innerhalb von Gruppen (lokale Zuweisungen,
|\aftergroup|) wird Platz der Gr\"o\ss{}e {\tt savesize} verwendet.
{\tt stacksize} gibt die Anzahl der ``Input-Sources'' an (File,
Makros, Tokenlists, $\ldots$).  Der Buffer zum Schreiben des |dvi|-Files
ist {\tt dvibufsize}~Bytes gro\ss{}\footnote{{\tt dvibufsize} mu\ss{}
durch 8 teilbar sein!}.

  Speicherbedarf: 2~Bytes $*$ |savesize| $+$ 10~Bytes $*$ |stacksize|
$+$ 1~Byte $*$ |dvibufsize|
\endstaggered



\medskip

Welche Werte sollen man nun den einzelnen Parametern zuweisen?  Dazu
zieht man einfach das Log-File zu Rate, das beim Dumpen eines
Format-Files erzeugt wurde\footnote{Aus diesem Grund sollte man diese
Log-Files nicht l\"oschen.}.

Beim Dumpen von \TeX\ (German |plain.fmt|) erh\"alt man folgendes Log-File:
\par
\begingroup\narrower
\beginverbatim
This is a PD-Version of Pas-TeX (made Jan 26 1991 [br]/[hes])
This is TeX, C Version 3.1 (INITEX)  28 JAN 1991 02:51
**plain \input amiga \input /doc/nice \dump
(plain.tex Preloading the plain format: codes, registers,
             ... [lines deleted] ...
Beginning to dump on file plain.fmt
 (format=plain 91.1.28)
2121 strings of total length 28932
7874 memory locations dumped; current usage is 118&7748
1063 multiletter control sequences
\font\nullfont=nullfont
\font\footfont=cmr10
             ... [lines deleted] ...
16011 words of font info for 54 preloaded fonts
0 hyphenation exceptions
Hyphenation trie of length 9980&11780 has 281 ops out of 500
  281 for language 0
No pages of output.
\endverbatim
\endgroup

Daraus erkennt man untere Grenzen f\"ur einige wichtige Parameter:
|maxstrings|~$>2121$, |poolsize|~$>28932$, |memmax|~$>7874$,
|fontmax|~$>54$, |fontmemsize|~$>16011$.  Die tats\"achlich verwendeten
Werte sollten gr\"o\ss{}er gew\"ahlt werden: |memmax| solte, wenn m\"oglich,
auf 65534 gesetzt werde, die anderen Parameter auf mindestens 10\%
gr\"o\ss{}ere Werte.

Der Trie mit den Trenntabellen kann, nachdem er komprimiert wurde,
nicht mehr gr\"o\"ser werden.  Daher kann man |triesize| auf einen Wert
$\geq 9980$ und |triopsize| auf $\geq 281$ setzen.  (Zum Dumpen
dieses Formates mu\ss{} f\"ur |initex| der Parameter |trieopsize|~$> 11780$
gesetzt werden.)

Alle anderen Parameter sollte man unver\"andert lassen und erst nachdem
die Fehlermeldung {\tt TeX capacity exceeded} auftritt, sollte der
entsprechende Parameter vergr\"o\ss{}ert werden.


\subsection{Unterschied \TeX--Big\TeX}

Was ist nun dieses omin\"ose Big\TeX, da\ss{} schon einmal in der Anleitung
angesprochen wurde?

Dies ist praktisch identisch mit dem normalen \TeX, nur da\ss{} die Elemente
manche interne Arrays vergr\"o\ss{}ert wurden. Daher k\"onnen nun manche
Arrays gr\"o\ss{}er gemacht werden, als dies im ``kleinen'' \TeX{}
m\"oglich ist.

Diese Arrays sind:

 $$\vbox{\halign{\strut\vrule\vrule#&\quad#&		% arr-name
   \vrule#&\quad\hfil#\hfil\quad&			% small-tex
   \vrule#&\quad\hfil#\hfil\quad&  			% big-tex
   \vrule\vrule#\cr
   \noalign{\hrule}
   \noalign{\hrule}
  & Array && \TeX{} && Big\TeX{} & \cr
  \noalign{\hrule}
  & {\tt memmax/memtop} &&  65532 && 524284 & \cr
  & {\tt maxstrings} && 65536 && {\sl beliebig} & \cr
  & {\tt bufsize} && 65536 && {\sl beliebig} & \cr
  \noalign{\hrule}
  \noalign{\hrule}
 }}$$

Einen Preis mu\ss{} man nat\"urlich auch f\"ur diese gewonnene Flexibilit\"at
zahlen. Der Speicherverbrauch nimmt erheblich zu. Nicht nur weil Sie
jetzt gr\"o\ss{}ere Arrays allocieren k\"onnen, sondern auch da die einzelnen
Arrayelemente nun mehr Speicherplatz ben\"otigen. Bei {\tt memmax} sind
dies etwa um den Faktor $1.5$ mehr Bytes.

Wozu aber be\"otigt man so gro\ss{}e Arrays?

Eigentlich nur f\"ur wenige Specialf\"alle. Der wohl am h\"aufigsten
auftretende d\"urfte das Makropaket {\it pictex} sein. Dieses erstellt
Graphiken nur aus Buchstaben. Man kann sich denken, da\ss{} da schnell
eine ganze Zahl von einzelnen Zeichen zusammenkommen, bis ein Bild fertig
erstellt ist. Um mit diesen Makropacket vern\"unftig arbeiten zu k\"onnen
ben\"otigt man schon ein Big\TeX{}. Um aber mit Big\TeX{} vern\"unftig
arbeiten zu k\"onnen ben\"otigt man schon wenigstens 3MB an Hauptspeicher.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{CodePage --- Was ist das ?}

\TeX\ verwendet eine f\"ur alle Implementierungen standardisierte
Kodierung der einzelnen Zeichen, ASCII.  Diese wurde jedoch nur
festgelegt f\"ur Zeichen von |0x20| (Space) bis |0x7f| (Delete) und
einige andere, wie |^^@| (NUL), |^^M| (CR), |^^J| (LF), |^^L| (FF) und
|^^I| (Tab). (Wie man sieht, nur 7bit-Zeichen und einige
Control-Zeichen.)

Existiert nun auch f\"ur Sonderzeichen, wie z.B. Umlaute, eine
Festlegung auf die 8bit-Zeichen (Zeichen $\geq 128$), wird auf jeden
Fall eine Umwandlung der Kodierung im Amiga auf die in \TeX\ verwendete
Kodierung erforderlich. Diese kann man nun in die Implementierung
``hart'' eincodieren oder man l\"a\ss{}t dem Benutzer die Freiheit, diese
in einer |Codepage| angeben zu k\"onnen, so da\ss{} \"Anderungen sehr
einfach werden.

Die Codepage ist rechnerspezifisch, d.h.\ tauscht man \TeX-Files
zwischen zwei Rechnern mit unterschiedlicher Zeichensatz-Belegung aus,
so mu\ss{} man auch die Codepage \"andern.  Nur die intern von \TeX\
verwendete Kodierung ist zwischen allen Rechnern gleich\footnote{Dies
kann man ausnutzen, um \TeX-Files rechnerunabh\"angig zu machen: Man
verwendet einfach die Notation {\tt \string^\string^xx} (xx ist eine
Hex-Zahl in Kleinbuchstaben), {\tt xx} ist dabei nicht(!) die
Kodierung des Zeichens im Zeichensatz des Rechners, sondern die von
\TeX\ verwendete.}.


\subsection{Funktionsweise}

\TeX\ verwendet intern zwei Arrays |xord[]| und |xchr[]| zur Umwandeln
bei der Eingabe bzw.\ bei der Ausgabe.  Beim Lesen wird jedes
Zeichen~|s| durch das Zeichen |t:=xord[s]| ersetzt, beim Schreiben
wird das Zeichen~|t| anschliessend wieder ersetzt durch |s:=xchr[t]|.
Im Endeffekt wird das Zeichen~|s| des Rechners in \TeX\ durch das
Zeichen~|t| dargestellt.

Sonderzeichen (d.h.\ Control-Zeichen und 8bit-Zeichen) werden
\"ublicherweise durch |^^xx| dargestellt (|xx| ist dabei die
Zeichenposition im \TeX-Zeichensatz in Hexnotation), dies hat den
Vorteil, da\ss{} dieses Zeichen rechnerunabh\"angig wieder korrekt
eingelesen werden kann.  Als Benutzer ist es jedoch etwas sinnvoller,
darstellbare Sonderzeichen auch als solche anzuzeigen, deshalb
verwendet \TeX\ ein weiteres Array, in dem die Darstellungsweise
abgelegt wird\footnote{Dieses weitere Array entspricht den ersten
256~Strings des {\it String Pools}.}.

In der Codepage-Definition hat man nun die M\"oglichkeit, den
Default-Inhalt dieser Arrays zu ver\"andern.

\subsection{Syntax}

Die Codepage-Definitionen werden im Konfigurationsfile |tex.cnf|
angegeben, dabei kann man die Definition auch in mehrere Teile
angeben.  Jeder Teil wird durch |codepage| zu Beginn der Zeile
eingeleitet, anschliessend folgt pro Zeile eine Anweisung. Die
Definition wird durch |<<| abgeschlossen.

Folgende Anweisungen sind m\"oglich:

\begingroup
\catcode`\|=12
\gdef\myspvert{\ifmmode\expandafter!\else\expandafter\mytxver\fi}
\catcode`\!=\active \global\let !=\myspvert
{\obeylines\gdef\mytxver{\begingroup%
\tt\setupverbatim\let^^M=\ \let!=\endgroup}}
\gdef\anweins{!x = y!}
\gdef\anwzwei{!x > y!}
\gdef\anwdrei{!<  y!}
\gdef\anwvier{!<| y!}
\endgroup

\staggered{123456}
\key{\hfil (1)} \anweins
\key{}
  Das Zeichen |x| wird beim Lesen umgewandelt in |y|, geschrieben
  wird |y| nicht mehr in der Notation |^^yy|, sondern als |x|.
\key{}
  {\sl Beispiel:} (|"a| w\"are Amiga-Zeichen (ein Buchstabe!) f\"ur Umlaut a,
  |^^80| sei \TeX-Codierung f\"ur den Umlaut a)
\key{}
  Nach 
	$$\hbox{|"a=^^80|}$$
  wird jedes |"a| sofort in 128 umgewandelt, au\ss{}erdem gibt \TeX{}
  f\"ur Zeichen 128 nicht mehr |^^80| aus, sondern |"a|.
\key{}
  (xord[x]=y; xchr[y]=x; printable(y)=true;)
\key{\hfil (2)} \anwzwei
\key{}
  Das Zeichen |x| wird beim Lesen umgewandelt in |y|. Hier kann
  |y| aus dem vollst\"andigen Bereich |^^00-^^ff| gew\"ahlt werden.
\key{}
  {\sl Beispiel:}
\key{}
  Nach
	$$\hbox{|"a>a|}$$
  wird {\tt "a} als {\tt a} gelesen.
\key{}
  (xord[x]=y;)
\key{\hfil (3)} \anwdrei
\key{}
  Das Zeichen |y| wird nicht mehr in der Notation |^^yy| ausgegeben,
  sondern als {\it ein} Zeichen |y|.  Dabei findet evtl.\ noch bei der
  Ausgabe eine Umwandlung statt, falls eine Anweisung \anweins\ in der
  Codepage-Definition angegeben wird.
\key{}
  \qquad (printable(y)=true;)
\key{}
  {\sl Default:} alle Zeichen $<$ 32 oder $>$ 126 werden in |^^y|
  Notation ausgegeben.
\key{}
  \qquad (printable(y)=false; for y in [0$\ldots$32, 126$\ldots$255])
\key{\hfil (4)} \anwvier
\key{}
  Negation zu (3). |y| wird danach als |^^yy| ausgegeben. 
\key{}
  {\sl Beispiel:}
\key{}
  Nach
	$$\hbox{|"a=^^80|}$$
  wird das Zeichen 128 als ein Zeichen |"a| ausgegeben. Soll dies
  unterbleiben, danach noch angeben:
	$$\hbox{|<|$\vert$|^^80|}$$
\key{}
  (printable(y)=false;)
\endstaggered

Die einzelnen Anweisungen werden zeilenweise abgearbeitet, dabei ist
die Reihenfolge der Anweisungen wichtig.

Allgemeine Anmerkung:

Gibt man in \TeX\ Zeichen in |^^|-Notation an, so werden diese nicht
mehr gemappt, d.h.\ mit |^^|-Notation mu\ss{} der Zeichencode in \TeX{}
und nicht der im jeweiligen Rechner verwendeten Code angegeben werden.

Gemappt werden nur direkt eingegebene Zeichen. Mapping findet beim
Lesen in {\tt input\_line()} statt, au\ss{}erdem beim Schreiben mit
{\tt print\_char()} und beim Umwandeln von Filenamen.


\subsection{Einschr\"ankungen}

Die Codepage-Definition ist nur in |initex| sinnvoll, da die Arrays in
das Format-File mit abgelegt werden.  D.h., verwendet man mehrere
Codepages, so mu\ss{} f\"ur jede ein neues Format-File erzeugt werden.
(Diese Einschr\"ankung soll in einer sp\"ateren Version wegfallen.)

In der ersten Zeile, die |virtex| liest, findet noch keine Umsetzung
statt, da zu diesem Zeitpunkt das Format-File noch nicht gelesen wurde.




\section {Installation}

Bevor man die im vorigen Kapitel beschrieben Programme benutzen kann,
m\"ussen diese so vorbereitet werden, da{\ss} sie wie gew\"unscht
funktionieren. Diese Vorbereitung nennt man {\it Installation}.

Sie besteht darin, Programme und Daten zu kopieren und die Datei {\tt
S:Startup-Sequence} so zu erweitern, da{\ss} nach dem Anschalten und
erfolgreichem Starten des Rechners sofort mit \TeX\ gearbeitet
werden kann. Wie \TeX\ zu installieren ist, kann im folgenden
oder auch in der Datei {\tt "LiesMich"} im Verzeichnis {\tt
TeXDisk1:Beschreibungen} nachgelesen werden.

\subsection {Automatische Installation}

F\"ur die Installation von \TeX\ gibt es ein Programm (eigentlich
eine Script-Datei) mit Namen {\tt installTeX}, welches -- einmal
gestartet -- alles n\"otige kopiert und einf\"ugt. Wenn {\tt installTeX}
etwas wichtiges ver\"andert, fragt es vorher den Benutzer, ob es die
Ver\"anderungen vornehmen soll. So bleibt dem Benutzer immer noch die
M\"oglichkeit, einzugreifen, wenn das Programm etwas machen sollte, was
es halt nicht soll.

Bisher ist die vollautomatische Installation nur f\"ur die Festplatte
vorgesehen. Wer also nur mit Disketten arbeitet, mu{\ss} sich die
Datei {\tt LiesMich} durchlesen und die Arbeiten von Hand
durchf\"uhren, die das Programm {\tt installTeX} automatisch
durchf\"uhrt.

Das Programm {\tt installTeX} kann wie folgt aufgerufen werden:

\smallskip
{\tt \quad \quad execute TeXDisk1:Beschreibungen/InstallTeX Verzeichnis}
\smallskip

F\"ur {\tt Verzeichnis} m\"ussen Sie den Namen eines Verzeichnisses auf
Ihrer Festplatte angeben, in welchem \TeX\ installiert werden
soll. F\"ur \TeX\ selbst ben\"otigen Sie circa 1 MByte Platz, f\"ur das
Programm {\tt ShowDVI} circa 2 MByte, und f\"ur das Programm
{\tt DVIprint} mit Fonts um die 8 MByte (maximal). Bitte lesen
Sie f\"ur die Installation von {\tt DVIprint} die zugeh\"orige
Anleitung, um zu erfahren, wie man mit weniger Platz auskommen kann.

{\bf Wichtig: Fast alle Einstellungen, die bei der Installation
gemacht werden, kann man nach eigenem Gutd\"unkem ver\"andern, nur eine
sollte man nicht \"andern: Es empfiehlt sich dringend, das Assign {\tt
TeX:} auf dem Verzeichnis, in welchem alle Programme und Daten
stehen, zu belassen. Die automatische Installation nimmt diese
Einstellung vor. Man sollte sie auf keinen Fall \"andern. }

Sollten wider Erwarten bei der automatischen Installation nicht
zu \"uberwindende Probleme auftreten, lesen Sie bitte im Kapitel
{\it Fehler, Probleme und L\"osungen} nach, woran dies liegen k\"onnte.
Im schlimmsten Fall schreiben Sie uns an.

\subsection {Unterverzeichnisse}

Die Unterverzeichnisse von {\tt TeX:} haben ganz bestimmte
Bedeutungen. So erwarten Programme wie {\tt VirTeX}, {\tt DVIprint}
und {\tt ShowDVI} Fontangaben, Makrodateien und Fonts normalerweise
(per default) in ganz bestimmten Verzeichnissen.

Im folgenden soll aufgelistet werden, welche Dateien in welchen
Verzeichnissen stehen (sollten). Diese Zuordnung sollte man nicht
ohne triftige Gr\"unde \"andern. Denn sie ist quasi einheitlich
auf vielen Rechner in der vorgegebenen Form zu finden und macht
es Ihnen und anderen leicht, sich zurechtzufinden, wenn Sie auf
einem fremden System sind.

Hier kommt die Liste:

\smallskip{\lnarrower\staggered{\tt TeX:Beschreibungen --}

\key {\tt TeX:bin}   hier befinden sich die ausf\"uhrbaren Programme. Diese
                 k\"onnen auch in einem anderen Verzeichnis stehen,
                 Hauptsache das Verzeichnis mit diesen Programmen
                 liegt im Pfad. Es sind \smallskip
                 \staggered{{\tt virtex }--}

                 \key {{\tt virtex} --}
                 \key {{\tt initex} --} Die \TeX-Programme
                 \key {{\tt input} --} Eingabe-Befehl f\"ur das InstallTeX-Script
                 \endstaggered \smallskip

                 Wenn Sie unseren Previewer und Druckertreiber benutzen,
                 sollten Sie diese ebenfalls in diese Verzeichnisse
                 kopieren. Auf Wunsch \"ubernimmt dies die automatische
                 Installation.

\key {\tt TeX:fonts}  beinhaltet die {\tt .tfm}-Dateien. In diesen
                 Datei steht f\"ur jeden Font und jeden Buchstaben
                 eines Fonts, wie gro{\ss} er ist. Diese
                 Gr\"o{\ss}enangaben braucht {\tt virtex} zum
                 \"Ubersetzen der Texte. \smallskip

\key {\tt TeX:macros} hier sucht {\tt virtex}  normalerweise nach \TeX-Texten,
                 die er im aktuellen Verzeichnis nicht finden
                 kann. F\"ur \LaTeX-Benutzer: Hier sollten die Style-Files
                 stehen.\smallskip

\key {\tt TeX:formats}
                 \TeX\ an sich, hat einen sehr kleinen und unpraktischen
                 Befehlssatz. Um damit gut umgehen zu k\"onnen, gibt es f\"ur
                 \TeX\ verschiedene Makropakete. Zu den am meist
                 gebrauchten geh\"oren {\tt plain}-\TeX\ (normalerweise nur als
                 \TeX\ bezeichnet) und {\tt lplain} (stets \LaTeX-\ genannt).
                 Die Namen dieser Dateien enden stets auf {\tt .fmt}. Die
                 Makropakete stehen in diesem Verzeichnis.\smallskip

\key {\tt TeX:fontlib} wird vom \TeX-Compiler nicht gebraucht. In
                 diesem Verzei\-chnis suchen Previewer und
                 Druckertreiber nach Fontlibaries\footnote{Siehe Beschreibung zum
		 {\tt flib}-Kommando}.\smallskip

\key {\tt TeX:pk} wird vom \TeX-Compiler nicht gebraucht. In
                 diesem Verzei\-chnis suchen Previewer und
                 Druckertreiber nach Pixel-Fonts.\smallskip

\key {\tt TeX:config} hier wird normalerweise das Konfigurationsfile |tex.cnf|
		 gesucht. Auch die Treiber suchen dort ihre Definitionsfiles.
                 \smallskip

\key {\tt TeX:Beschreibungen}  hier finden nach der Installation alle
                 Beschreibungen als {\tt TeX}- und Text-Dateien.
                 Dieses Verzeichnis hat oft die Bezeichnung {\tt
                 TeX:doc}.\smallskip

\endstaggered\smallskip}

\subsection {Pfade}

\TeX\ ben\"otigt eigentlich keine speziellen Pfade. Es ist aber g\"unstig
die Programme wie {\tt virtex}, {\tt ShowDVI}, und {\tt DVIprint} nicht nach
{\tt C:}, sondern nach {\tt TeX:bin} zu kopieren und auf dieses
Verzeichnis einen Pfad zu legen. Dann f\"allt es Ihnen viel leichter alte
Versionen durch neuere zu ersetzen, bei Platzproblemen \TeX\ auf Disketten
zu sichern und zu l\"oschen und so weiter.

In der {\tt S:Startup-Sequence} sollte deswegen ein Eintrag wie

\eingabe {path TeX:bin add}

stehen.

Statt die vielen zus\"atzlichen Eintr\"age, die f\"ur \TeX\ n\"otig sind,
in die {\tt S:Startup-Sequence} aufzunehmen, k\"onnen Sie diese
auch in eine Script-Datei schreiben und ausf\"uhren, sobald Sie
\TeX\ benutzen wollen. Auf meinem Rechner gibt es beispielsweise
die Datei {\tt init-tex}, die automatisch die Anweisungen in
{\tt S:Shell-Startup} ausf\"uhrt und die zus\"atzlichen, f\"ur \TeX\
n\"otigen Schritte unternimmt.

Wer m\"ochte, kann so eine spezielle Shell starten,

\eingabe {newshell NEWCON:0/11/640/200/TeX s:init-tex}

in der alle n\"otigen Einstellungen schon gemacht sind. Wenn man dann
noch in der Datei {\tt S:Shell-Startup} den Eintrag

\eingabe {alias inittex newshell NEWCON:0/11/640/200/TeX s:init-tex}

stehen hat, reicht es im CLI {\tt inittex} einzugeben, um eine
typische \TeX{}-Shell zu starten.


\section {Ein Probedurchlauf}

In diesem Kapitel exerziere ich mit Ihnen einen Probelauf durch,
damit sie sehen, wie man mit \TeX\ Texte \"ubersetzt und wie einfach
das geht. Ich habe diese Kapitel in vier Abschnitte gegliedert:

\smallskip{\lnarrower\numbered 1
\next Einrichten eines Verzeichnisses
\next \"Ubersetzen mit {\tt virtex}
\next Anschauen mit {\tt ShowDVI}
\next Drucken mit {\tt DVIprint}
\endnumbered} \smallskip

\subsection {Einrichten eines Verzeichnisses}

Wechseln Sie in das Verzeichnis, in welchem Sie ein weiteres
Unterverzeichnis einrichten wollen. Bei mir gibt es ein Verzeichnis
{\tt TeX:texte} in welchem alle weiteren Unterverzei\-chnisse stehen.
Also richten Sie sich am besten ein solches Verzeichnis ein und
tippen Sie dann

\smallskip
{\quadtwo\tt cd TeX:texte} \parwithoutskip
{\quadtwo\tt makedir testdir} \parwithoutskip
{\quadtwo\tt cd testdir} \parwithoutskip
\smallskip

Jetzt ist es an der Zeit, mit einem Editor einen Text einzugeben.
Dieser sollte mit dem K\"urzel {\tt .tex} enden, sonst wird ihn
{\tt virtex} nicht finden:

\eingabe {ed testdatei.tex}

Ein Beispiel f\"ur einen kurzen, aber ber\"uhmten Text:

\beginverbatim
    \hrule
    \vskip 1in
    \centerline{\bf A SHORT STORY}
    \vskip 6pt
    \centerline{\sl by A. U. Thor}
    \vskip .5cm
    Once upon a time, in a distant
      galaxy called \"O\"o\c c,
    there lived a computer
    named R.~J. Drofnats.

    Mr.~Drofnats---or ``R. J.,'' as
    he preferred to be called---
    was happiest when he was at work
    typesetting beautiful documents.
    \vskip 1in
    \hrule
    \vfill\eject
    \bye
\endverbatim

Wenn Sie diesen Text abgetippt und abgespeichert haben, k\"onnen Sie
an die \"Ubersetzung gehen.

\subsection {\"Ubersetzen mit ``virtex''}

Bevor Sie den Text \"ubersetzen k\"onnen, sollten Sie sich vergewissern,
da{\ss} sich alle Programme und Daten in den richtigen Verzeichnissen
befinden und die Environment-Variablen korrekt gesetzt sind.
Zumindest die Variable {\tt TEXFORMATS} sollte gesetzt sein und als
Eintrag den Namen des Verzeichnisses {\tt TeX:formats} enthalten.
In diesem Verzeichnis mu{\ss} eine Datei mit Namen {\tt plain.fmt}
stehen. Wenn Sie lieber die deutsche Version von \TeX\ verwenden
(das Makropaket hei\ss{}t {\tt plaing.fmt}), dann ersetzen die
{\tt plain} durch {\tt plaing} im folgenden Aufruf.

Der Aufruf von {\tt virtex} sieht so aus:

\eingabe {virtex \&plain testdatei}

Nach der Eingabe sollte sie folgende Ausgaben auf dem Bildschirm zu
sehen bekommen:

\beginverbatim
This is a PD-Version of Pas-TeX (made Jan 22 1991 [br]/[hes])
This is TeX, C Version 3.1
(testdatei.tex [1] )
Output written on testdatei.dvi (1 page, 672 bytes).
Transcript written on testdatei.log.
\endverbatim

{\tt virtex} hat eine Ausgabedatei mit Namen {\tt testdatei.dvi} und eine
Protokolldatei mit Namen {\tt testdatei.log} erzeugt.

\subsection {Anschauen mit ShowDVI}

Den Inhalt dieser Datei k\"onnen Sie sich nun mit einem sogenannten
{\it Previewer} anschauen. {\it To view} ist englisch und hei{\ss}t anschauen.
Mit einem Previewer kann man sich den Ausdruck {\it vorher}
anschauen. Das Programm hierzu hei{\ss}t {\tt ShowDVI} und befindet
sich auf einer der PreviewDisks.

Bitte beachten Sie, da{\ss} sie zum Anschauen des Textes in {\tt
testdatei.dvi} mehr ben\"otigen, als auf den Disketten {\tt TeXDisk1}
und {\tt TeXDisk2} geliefert bekommen. Hierzu ben\"otigen Sie
die Disketten PreviewDisks 1, 2 und 3, die Sie bei uns beziehen
k\"onnen. Wichtig ist, da{\ss} die Font-Libraries im Verzeichnis {\tt
TeX:fontlib} stehen oder da\ss{} Sie die ben\"otigten Fonts an
einen anderen, f\"ur den Previewer bekannten\footnote{Welche
dies sind, steht in der Anleitung zu ShowDVI}, Ort kopiert haben.

Der Aufruf sieht wie folgt aus:

\eingabe {ShowDVI testdatei}

Danach sollte eine neue Screen im Interlaced-Modus erscheinen und das
Ergebnis anzeigen. Sie k\"onnen {\tt ShowDVI} wieder verlassen, in dem
Sie {\tt CTRL-C} dr\"ucken.

\subsection {Drucken mit DVIprint}

Das Drucken erfolgt in genau der gleichen Weise wie das Anzeigen des
Textes mit {\tt ShowDVI}. Bitte beachten Sie auch hierbei, da{\ss} Sie
zum Drucken mehr ben\"otigen, als auf den beiden Disketten {\tt
TeXDisk1} und {\tt TeXDisk2} zu finden ist.

Da sich Drucker verschiedener Hersteller manchmal deutlich
unterscheiden, mu{\ss} man dem Druckertreiber mitteilen, welcher Drucker
angeschlossen ist. Er kann 9-Nadel-Drucker, 24-Nadel-Drucker (NEC-P6-
kompatibel) und HP-Drucker bedienen. Welcher Drucker angeschlossen
ist, kann man ihm mit der {\tt -d}-Option mitteilen.

Folgende Aufrufe sind zum Beispiel m\"oglich:

{\lnarrower
F\"ur einen 9-Nadel-Drucker:
\eingabe {DVIprint -d 5 testdatei}

F\"ur einen 24-Nadel-Drucker:
\eingabe {DVIprint -d 1 testdatei}

F\"ur einen HP-Drucker:
\eingabe {DVIprint -d 3 testdatei}
}

Danach sollten Sie einen wirklich {\it sch\"onen} Ausdruck in den
H\"anden halten.

\section {Fehler, Probleme und L\"osungen}

Nat\"urlich kann immer etwas schief gehen. Und meist geht etwas schief.
Da Sie kein Roboter sind, machen auch Sie genauso wie ich Fehler.
Programme reagieren auf so etwas meist recht unfein und stellen ihre
Arbeit ein.

\TeX{} reagiert auf Fehler mit ausf\"uhrlichen Fehlermeldungen, die zuerst
sehr verwirrend sind. Diese hier zu erkl\"aren, w\"are zu aufwendig.
Bitte schauen Sie sich dazu in einem Buch die entsprechenden Seiten an;
die im folgenden Kapitel aufgef\"uhrten B\"ucher enthalten f\"ur die
Fehlerbehandlung genug Informationen.

Wichtig f\"ur die Fehlersuche ist, da\ss{} Sie sich vergewissern, da\ss{}
sie alle f\"ur die Installation wichtigen Assigns, Pfade, Environment-Variablen
wirklich gesetzt oder angelegt haben. Bitte \"uberpr\"ufen Sie
im Fehlerfall alles sehr sorgf\"altig. Es kommt darauf an, alles wirklich
am Rechner nachzusehen, und nicht nur kurz im Kopf zu \"uberschlagen, ob
man dies oder jenes schon getan hat. Ein Aufruf von {\tt dir} oder {\tt
assign} ist oft sehr aufschlu\ss{}reich.

Wer scheinbar un\"uberwindbare Probleme hat, der kann sich auch
an Georg He{\ss}mann oder ??? wenden. Hierzu m\"ussen aber
folgende Regeln eingehalten werden:

Schicken Sie uns einen Brief (nicht telefonieren, da{\ss} bringt meist
gar nichts), in dem Sie uns das Problem genau erl\"autern. Drucken
Sie ein Listing des Textes, bei dem Fehler auftritt, geben Sie uns
einen Ausdruck Ihres Platteninhaltsverzeichnisses, machen Sie einen
Ausdruck aller Belegungen der Environmentvariablen.
Wenn m\"oglich schicken Sie uns eine
Diskette mit dem Text, bei dem der oder die Fehler auftreten.

Und ganz wichtig: Ohne einen ausreichend frankierten, an Sie
adressierten Briefumschlag k\"onnen wir Ihnen keine Antwort schicken
und werden dies auch nicht tun. Dies ist keine B\"oswilligkeit, sondern
nur finanziell notwendig. Wir sind Studenten mit einem sehr geringen
Einkommen und k\"onnen diese Software nur zum Selbstkostenpreis
abgeben, wenn wir dadurch keine Verluste erleiden.

Hier die Adressen:

{\lnarrower
\smallskip
Heimatadresse:

Georg He\ss{}mann \parwithoutskip
Oberer Markt 7 \parwithoutskip
8712 Volkach

\smallskip
Studienadresse:

Georg He\ss{}mann \parwithoutskip
Ingling 17 \parwithoutskip
4784 Schardenberg \parwithoutskip
\"Osterreich\parwithoutskip
}

%------------------------------------------------------------
\subsection{Fragen und Antworten}

Hier ein Versuch ein paar Fragen schon im vorraus zu beantworten.

\staggered{Antwort: }
\key{Frage:} Kennt dieses \TeX\ {\it virtuelle Fonts}?

\key{Antwort:}
  Nein, \TeX\ selbst hat keine Ahnung von virtuellen Fonts.
  Er liest von Fonts nur die Information im zum Font geh\"orenden tfm-File
  (\TeX\ Font Metric), dieses existiert sowohl f\"ur "normale'', als
  auch f\"ur virtuelle Fonts.

\medskip

\key{Frage:} Ich kann {\tt tex} nicht finden?

\key{Antwort:}
  {\tt tex} ist |virtex| mit einem zu ladenden Format (z.B. plain\TeX\
  oder \LaTeX).

\medskip

\key{Frage:} Was ist ein {\it preloaded format\/}?

\key{Antwort:}
  Auf einigen Betriebssystemen kann man |virtex|, nachdem es das
  Format-File geladen hat, abbrechen und ein sogenanntes
  {\it Core}-File erzeugen.  Aus diesem Core-File und dem
  ausf\"uhrbaren File |virtex| kann man ein weiteres ausf\"uhrbares
  File erzeugen, indem jedoch das Format-File schon geladen ist.
  Der Vorteil, ein meist schnelleres Laden von |virtex| und
  Formatfile, wird durch den Nachteil, dem Platzbedarf des
  neuen ausf\"uhrbaren Files, der sehr viel gr\"o\ss{}er als der von
  |virtex| ist, wieder ausgeglichen.

\medskip

\key{Frage:} Ich erhalte beim Laden des Format-Files den Fehler {\tt
  (Fatal format file error; I'm stymied)}.

\key{Antwort:}
  Alle anderen Filetypen (|tfm|, |dvi|, |pk|, $\ldots$) sind zwischen
  verschiedenen Implementierungen -- auch auf unterschiedlichen
  Rechner -- voll austauschbar.  Das Format-File nimmt darin eine
  Sonderstellung ein, da es m\"oglichst schnell zu laden sein sollte
  und eine Abbildung der internen \TeX-Arrays darstellt.  Dadurch kann
  es nicht mehr so einfach austauschen.  Abhilfe: man erzeugt mit
  |initex| ein neues Format-File.
\endstaggered


\section {Literatur}

Ohne Buch geht es nicht. Wenn Sie \TeX\ teilweise auch sehr preiswert
bekommen, so kommen Sie nicht umhin, sich ein Buch zu kaufen, was Sie
in \TeX\ einf\"uhrt. \TeX\ ist so m\"achtig wie eine Programmiersprache,
kennt mehr Anweisungen als jedes DTP-Programm, meckert in vielf\"altiger
Weise und fabriziert hin und wieder Dinge, die man nicht verstehen
kann. Hier hilft nur ein Buch.

Da es auch recht gute deutsche Literatur gibt, m\"ochte ich Ihnen
zwei Werke empfehlen, die zu kaufen sich lohnt.

{\it Einf\"uhrung in \TeX}, Norbert Schwarz, Addison Wesley, 1988,
ISBN 3-925118-97-7

{\it La\TeX\ -- Eine Einf\"uhrung}, Helmut Kopka, Addison Wesley, 1988,
ISBN 3-89319-136-4

Wenn Sie auch des Englischen kundig sind, gibt es nur eine Wahl:
das Buch zu \TeX\ vom Erfinder selbst.

{\it The \TeX book}, Donald E. Knuth, Addison Wesley, Reading, 1988.

\bye
