\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 September \or Oktober
   \or November \or Dezember \fi}

\def \DVIprint {DVIprint}
\def \ShowDVI {ShowDVI}

\article
\contentslevel=3
\contfill={\dotfill}
\contskip=3pt

\titlepage
\vskip 1in
\title{\ShowDVI{}, der \TeX-Previewer}
\removelastskip
\smallskip
\title{f\"ur den AMIGA}
\bigskip
\release{Version 1.03}
\smallskip
\release{vom}
\release {\mynum{\day}. \mymonth{\month}\mynum{\year}}
\bigskip
\author{von}
\author{Georg He\ss{}mann}
\vfill
\abstract{
  \ShowDVI{} ist ein \TeX-Previewer mit vielen Besonderheiten: er arbeitet
  schnell, l\"a\ss{}t sich komfortabel bedienen und flexibel
  konfigurieren. Desweiteren ist eine Library-Verwaltung f\"ur die Fonts
  integriert, um die Verwaltung der Fonts zu vereinfachen, den
  Platzverbrauch auf der Festplatte merklich zu verringern und
  die Zugriffsgeschwindigkeit zu erh\"ohen.
}

\vskip 1.2in
\endtitlepage

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

\section{Copyright und \"ahnliches}

Das Programm \ShowDVI{} ist ``freely distributable copyrighted software''.
Das hei\ss{}t, jeder darf es sich kopieren und verwenden, das
Copyright bleibt aber vollst\"andig bei mir. Das Programm darf auch nur
unver\"andert weitergegeben werden.

Das Programm darf ohne meine ausdr\"uckliche Genehmigung nicht kommerziell
verkauft werden. Als PD-Software vertrieben darf der Preis 5 DM pro Diskette
nicht \"uberschreiten.

Es darf auch nur in vollst\"andiger und unver\"anderter Form
weitergegeben werden.

F\"ur weitere Erkl\"arungen siehe das README-File.



\section{Allgemeines \"uber \ShowDVI{}}

\ShowDVI{}, wozu braucht man das? \parwithoutskip
\ShowDVI{} ist ein Programm, mit dem man die Ausgabe des \TeX{}-Programms auf
den Bildschirm anschauen kann. \"Ublicherweise wird so ein Programm auch
\TeX-Previewer genannt.
Wozu braucht man dieses Programm?
\TeX{} ist zwar ein exzellentes Textverarbeitungsprogramm, aber kein
WYSIWYG-Programm\footnote{what you see is what you get}. Man mu\ss{} die
\TeX-Eingabe in einem normalen ASCII-Editor eingeben und
dann mit {\tt virtex} oder {\tt tex} \"ubersetzen.
Das \TeX-Programm erzeugt daraus -- eine
fehlerfreie Eingabe vorausgesetzt -- ein DVI-File\footnote{device
independent}. Dieses kann mit einem Druckertreiber ausgedruckt werden.
Da man aber nicht nach dem Ausbessern eines einzigen Druckfehlers wieder das
ganze Dokument ausdrucken m\"ochte, ist man dazu \"ubergegangen, Previewer
zu entwickeln, mit denen man das Dokument auf dem Bildschirm betrachten kann.

\ShowDVI{} ist mein Beitrag zu den schon existierenden Previewern,
und wie Sie in dieser Bedienungsanleitung noch sehen werden, kein
schlechter.

Ein paar Besonderheiten im voraus:
\itemlist{$\bullet$ }
\next Unterst\"utzung von Fontlibraries (spart Speicherplatz und
 beschleunigt den Zugriff).
\next Aufwendiger Suchalgorithmus mit Hilfe von Environment-Variablen
 und Definitions-Files, um Fonts zu finden.
\next Kann auch mit PK-Files arbeiten.
\next Schnelle Bildschirmausgabe.
\next ARexx-Port.
\next Hochgradig konfigurierbar. Ausgabe des jeweiligen Status in ein
 Konfigurations-File.
\enditemlist

\section{Der Aufruf vom CLI}

\ShowDVI sollte man stets vom CLI aus aufrufen. Der Start von der
Workbench ist zwar m\"oglich, wird aber nicht weiter unterst\"utzt. Dies
ist aber nicht weiter tragisch, da \TeX selbst sich nur vom CLI aus starten
l\"a\ss{}t und der CLI damit unentbehrlich ist.

Daf\"ur gibt es eine Vielzahl von Command-Line-Optionen.
Das Aufruf-Schema sieht folgenderma\ss{}en aus:

\hskip 1cm {\tt showdvi [-?] [-a {\it fontarea}] [-b {\it byte}]
  [-f {\it page}] [-z {\it dpi}] [-l] [-s]\parwithoutskip
\hskip 3cm [-h {\it offset}] [-v {\it offset}] [-p] {\it dvifile}}\parwithoutskip
\hskip 5cm und offset = real zahl{\tt $\{$pt$|$pc$|$in$|$bp$|$cm$|$mm$|$dd$|$cc$\}$}

\staggered{\tt -h nxx }
\key{\tt -?} Zeigt eine kurze Erkl\"arung zu den Optionen an, ohne das Programm
 zu starten.
\key{\tt -a} F\"ugt ein zus\"atzliches Directory in den Suchpfad der
 Fontlibraries ein. Mehr dazu siehe Kapitel 7.2.
\key{\tt -b} Gr\"o\ss{}e des Speicherbereiches, in dem geladene Fonts verwaltet
 werden. Die Angabe ist in Bytes. Den Default-Wert kann man mit der
 {\tt -?} Option abfragen.
\key{\tt -f \it n} Startet die Anzeige bei Seite {\it n}.
\key{\tt -z \it n} \"Uberschreibt die Default-Aufl\"osung und setzt sie statt dessen
 auf {\it n} dpi. Die Default-Aufl\"osung ist 100 dpi.
\key{\tt -h \it rxx} Setzt den horizontalen Offset auf {\it r}. {\it xx} ist hierbei die
 Einheit. Folgende Einheiten stehen zur Auswahl:
 \staggered{\qquad\tt mm }
 \key{\qquad\tt pt} point (wird von \TeX{} verwendet)
 \key{\qquad\tt pc} pica $1 pc = 12 pt$
 \key{\qquad\tt in} inch $1 in = 72.27 pt$
 \key{\qquad\tt bp} big point $72 bp = 1 in$
 \key{\qquad\tt cm} centimeter
 \key{\qquad\tt mm} millimeter
 \key{\qquad\tt dd} did\^ot point $1157 dd = 1238 pt$
 \key{\qquad\tt cc} cicero $1cc = 12dd$
 \endstaggered
\key{\tt -v \it rxx} Setzt den vertikalen Offset auf {\it r}. {\it xx} ist eine Einheit wie bei
 der {\tt -h} Option.
\key{\tt -p} L\"adt alle Fonts, die im Dokument verwendet werden, schon beim
 Programmstart in den internen Font-Speicher.
\key{\tt -s} Gibt ein paar zus\"atzliche Informationen in das Logfile aus.
 Siehe auch Kapitel 8.
\key{\tt -l} Verhindert das Anlegen eines Logfiles.
\key{\it dvifile} Das auszudruckende DVI-File oder ein Directory, das zum Home-Directory
 von \ShowDVI{} wird. Kann auch weggelassen werden.
\endstaggered

\section{Die Bedienung von \ShowDVI{}}
Anders als beim Aufruf ist die Bedienung von \ShowDVI{} einfach und sehr
vielf\"altig. Dabei gibt es eine Besonderheit: Es wurden keine Pulldown-
Men\"us verwendet -- wie es auf dem Amiga \"ublich ist -- sondern Popup-
Men\"us. Ich finde, da\ss{} Popup-Men\"us erheblich bequemer und schneller als
die normalen Men\"us zu bedienen sind, und da\ss{} die Wege, die die Maus
zur\"uckzulegen hat, k\"urzer sind.

\subsection{Popup-Men\"u}
Das Popup-Men\"u erscheint nach Dr\"ucken der rechten Maustaste direkt an
der Mausposition. Die einzelnen Eintr\"age des Men\"us sind in Zeilen
untereinander angeordnet. Die Zeilen, an deren Ende ein Pfeil ist, haben
noch ein Untermen\"u. Wenn man die Maus in die N\"ahe eines dieser Pfeile
bringt, klappt das Untermen\"u auf. Ausgew\"ahlt wird ein Men\"upunkt in dem
\"uber ihm die rechte Maustaste wieder losgelassen wird. M\"ochte man die
erste Zeile einen Untermen\"us ausw\"ahlen, so gen\"ugt es, die dem
Untermen\"u zugeh\"orige Zeile im Hauptmen\"u auszuw\"ahlen.

Es k\"onnen mittels des Konfigurations-Files (siehe Kapitel 6)
noch zwei leicht verschiedene Arbeitsmodi des Men\"us eingestellt werden.
Das Men\"u erscheint entweder immer knapp rechts unterhalb der
Mauszeigerposition, oder das Programm merkt sich
den Men\"upunkt, der als letztes ausgew\"ahlt wurde. Nach
erneutem Aktivieren des Men\"us wird dann sofort dieser Men\"upunkt
ausgew\"ahlt. Dieser Modus ist auch die Default-Einstellung.

\subsection{Das Hauptmen\"u}
Das Hauptmen\"u beinhaltet folgende Punkte:
\staggered{\tt show full page }
\key{\tt about} Zeigt einen Requester mit einem h\"ochst interessanten Text
 an. Mit diesem Requester kann man sich eine kurze Hilfe zu den
 Tastaturkommandos anzeigen lassen.
\key{\tt +\ \ \ \ ++} Dies ist ein zweigeteilter Men\"upunkt. Mit {\tt +} kommt man
 auf die n\"achste und mit {\tt ++} auf die letzte Seite.
\key{\tt -\ \ \ \ --} Entspricht dem Men\"upunkt von oben, nur da\ss{} es hier
 entweder auf die vorherige oder die erste Seite geht.
\key{\tt show full page} Verkleinert die aktuelle Seite so, da\ss{} sie
 vollst\"andig auf den Bildschirm pa\ss{}t.
\key{\tt outfit\ \ \ \ \ =>} Dies ist ein Untermen\"u, in dem die Kommandos zum Ver\"andern
 des Aussehens des \ShowDVI-Screens stehen.
\key{\tt load DVI\ \ \ =>} Ein Untermen\"u zum Laden eines neuen DVI-Files.
\key{\tt resolution\ =>} Mit diesem Untermen\"u kann die
 Aufl\"osung der Anzeige ge\"andert werden.
\key{\tt print page} Kommando zum Ausdruck der aktuellen Seite. Dies
 geschieht mittels eines Betriebssystemaufrufes. Man kann also \"uber die
 Einstellung in Preferences den Druckertyp ausw\"ahlen und
 die gew\"unschte Aufl\"osung einstellen. L\"auft bereits ein
 Druckauftrag, so hei\ss{}t das Men\"u {\tt abort print}. Damit
 kann dann der laufende Ausdruck abgebrochen werden.
\key{\tt hide\ \ quit}
 Noch ein zweigeteilter Men\"upunkt. Mit {\tt hide} wird der
 \ShowDVI-Screen nach hinten gelegt und {\tt quit} beendet,
 nach einer Sicherheitsabfrage, das Programm.
 Man kann das Programm \"ubrigens mittels Control-{\tt C} ohne Abfrage
 beenden.
\endstaggered

Nun eine \"Ubersicht \"uber die Untermen\"us:

\subsubsection{Das Untermen\"u ``outfit''}
Dieses Untermen\"u beinhaltet folgende Punkte:
\staggered{\tt hide scrollbar }
\key{\tt unset lace} Schaltet vom Interlace-Modus auf den
Noninterlace-Modus. Danach lautet der Men\"upunkt {\tt set lace}.
\key{\tt hide scrollbar} Entfernt die Scrollbars. Falls die Scrollbars nicht
 aktiv sind, hei\ss{}t der Men\"upunkt {\tt show scrollbar}.
\key{\tt change color} Ruft einen Farb-Requester auf, mit dem die
 Farben des \ShowDVI{}-Bildschirms ge\"andert werden k\"onnen.
\key{\tt save config} Speichert die augenblickliche Konfiguration in ein
 File ab. Das File-Format wird noch in Kapitel 6 erkl\"art.
\endstaggered
Wie schon einmal erw\"ahnt, braucht man, um den Punkt {\tt (un)set lace}
aufzurufen, diesen nicht explizit auszuw\"ahlen; es gen\"ugt,
wenn man den Hauptmen\"upunkt {\tt outfit} ausw\"ahlt. Da {\tt (un)set lace}
der erste Punkt in diesem Untermen\"u ist, wird dieser aufgerufen.
Ebenso funktioniert dies nat\"urlich auch mit den ersten Zeilen der anderen
Untermen\"us.

\subsubsection{Das Untermen\"u ``load DVI''}
Dieses Untermen\"u besteht aus zwei Punkten. Einmal dem
{\tt load file again}, das das aktuelle File neu einliest und wieder genau
an die selbe Stelle springt, an der man vorher war. Zum anderen der Punkt
{\tt load new file}. Dieser ruft den ARP-File-Requester auf, mit dem man
ein neues DVI-File ausw\"ahlen kann. Das funktioniert nat\"urlich nur, wenn
man \"uber eine ``arp.library'' verf\"ugt.

\subsubsection{Das Untermen\"u ``resolution''}
Dies ist ein besonderes Men\"u, da es vom Benutzer vordefiniert werden
kann. Es besteht aus bis zu 10 DPI-Eintr\"agen, mit denen man die
Aufl\"osung \"andern kann, in der das DVI-File angezeigt wird. Dazu mu\ss{} man
allerdings auch \"uber die Fonts in den jeweiligen Aufl\"osungen
verf\"ugen. Ohne Benutzer\"anderungen hat das Men\"u drei Eintr\"age:
{\tt 100 dpi}, {\tt 83 dpi} und {\tt 120 dpi}. Das Generieren
eigener Eintr\"age ist im Kapitel 6 nachzulesen.

\subsection{Gadgets, Scrollbars und Requester}
Das Programm hat etwa 18 verschiedene Gadgets, Scrollbars und Requester.
Die meisten sind zwar selbsterkl\"arend, aber manche haben auch eine
versteckte Funktion. Daher soll nun jedes einzelne Element erkl\"art werden.

\subsubsection{Die Gadgets}
Der gr\"o\ss{}te Teil der Gadgets ist innerhalb der Kopfzeile.
Von links nach rechts:
\itemlist{-- }
\next Das ``Window-Close'' Gadget. Mit ihm beendet man nach einer
 Sicherheitsabfrage das Programm.
\next Das ``$-$$-$'' Gadget. Durch Klicken auf dieses Gadget springt man auf
 die erste Seite im Dokument.
\next Das ``$-$'' Gadget. Dieses Gadget bl\"attert um eine Seite nach vorne.
\next Das ``D'' Gadget. Dies ist ein Stringgadget. Im Normalfall zeigt es
 das aktuelle Directory an, bzw.\ das Directory in welchem das
 aktuelle DVI-File zu finden ist. Man kann es nat\"urlich auch
 \"andern. Dieses Directory ist auch das aktuelle Verzeichnis des
 Filerequesters.
\next Das ``F'' Gadget. In diesem Stringgadget wird das aktuelle DVI-File
 angezeigt. Hier kann man auch ein neues File angeben. Falls man es
 nur anklickt und {\tt RETURN} dr\"uckt wird das aktuelle File
 neu eingelesen. Dies ist dann praktisch, wenn man im Hintergrund
 das \TeX-File ge\"andert und neu \"ubersetzt hat.
\next Das ``\#'' Gadget. Hier wird die aktuelle Seitennummer angezeigt.
 Man kann damit nat\"urlich auch eine neue Seite anw\"ahlen.
\next Das ``$+$'' Gadget. Dies korrespondiert mit dem ``$-$'' Gadget. Mit ihm
 kommt man auf die n\"achste Seite.
\next Das ``$++$ Gadget. Mit diesem springt man auf die letzte Seite des
 DVI-Files.
\enditemlist
Ganz an dem rechten Rand kann unter bestimmten Umst\"anden noch ein
``{\tt OK}'' Button erscheinen. Mehr dazu bei der Besprechung der
Scrollbars. Auch die anderen Gadgets werden zusammen mit den Scrollbars
erkl\"art.

\subsubsection{Die Scrollbars}
Am unteren und rechten Rand befinden sich die Scrollbars. Im Normalzustand
verhalten sie sich nicht anders als gewohnt. Wenn man allerdings das Gadget
ganz rechts unten anklickt, wird der vertikale Scrollbar in den
``Seiten-Scroll-Modus'' geschaltet. Dabei ver\"andert sich das Aussehen
folgenderma\ss{}en: \"Uber dem Scrollbar erscheint ein {\tt OK}-Button,
der gerade angeklickte Button verwandelt sich in einen {\tt NO}-Schalter
und der Scrollbar selbst zeigt die aktuelle Seite an. Nun kann per Maus
oder per Cursor-Up und -Down eine Seite ausgew\"ahlt werden. Mit dem {\tt OK}
Gadget springt man schlie\ss{}lich zur markierten Seite oder man bricht mit dem
{\tt NO} Knopf den Seiten-Scroll-Modus ab.

Eine weitere Besonderheit halten die Auf- und Ab-Pfeile des vertikalen
Scrollbars bereit. Befindet man sich am Ende einer Seite, so kann man
mit einem Doppelklick auf den nach unten zeigenden Pfeil auf den
Beginn der n\"achsten Seite springen. Ist man dagegen am Anfang einer
Seite, so kommt man mit einem Doppelklick auf den nach oben zeigenden Pfeil
an das Ende der vorhergehenden Seite. So kann man nur durch Klicken auf
diese beiden Pfeile durch das gesamte DVI-File scrollen.

Abschalten kann man die Scrollbars nat\"urlich auch. Entweder mit der Taste
``{\tt o}'' oder per Men\"upunkt ``{\tt hide scrollbar}'' im
{\tt outfit}-Men\"u. Der Zustand der Scrollbars, sichtbar oder nicht, kann
nat\"urlich auch im Konfigurations-File abgespeichert werden.

\subsubsection{Die Requester}
Vier Requester gibt es im Programm:
\itemlist{-- }
\next Der Farb-Requester. Mit ihm k\"onnen die beiden Farben des
 \ShowDVI-Screens ge\"andert werden.
\next Der ``about''-Requester. Mit ihm werden zum einen eine Copyright
 Meldung und zum anderen eine kurze Hilfe zu den
 Tastaturkommandos angezeigt.
\next Der File-Requester und
\next der Programmende-Requester.
\enditemlist

Der Farb-Requester besteht aus sieben Gadgets. Die zwei oberen dienen zur
Auswahl der Farbe, die ge\"andert werden soll. Darunter befinden sich die
drei Schieberegler, mit denen die einzelnen Farbanteile (rot, gr\"un und
blau) bestimmt werden k\"onen. Mit dem {\tt OK}-Gadget links unten kann
dann eine neue Farbeinstellung \"ubernommen werden oder mit dem
{\tt CANCEL}-Gadget der Requester ohne Farb\"anderungen verlassen werden.
Aufgerufen wird der Farb-Requester entweder mit AMIGA-{\tt c} oder per
Men\"upunkt {\tt change color} im Untermen\"u {\tt outfit}.

Den ``about''-Requester sollte man sich wenigstens einmal genau durchlesen
und seine Schl\"usse ziehen. M\"ochte man dann noch eine kleine
Hilfestellung zu den Tastaturkommandos lesen, so sollte man den
{\tt HELP}-Button unten rechts dr\"ucken. Verlassen kann man den Requester
in jedem Fall mit dem doppelt umrahmten {\tt OK}-Button. Aufrufen kann man
den ``about''-Requester entweder mit der {\tt HELP}-Taste oder mit dem
obersten Men\"upunkt {\tt about}.

Um mit den File-Requester arbeiten zu k\"onnen, ben\"otigt man die
``arp.library''. Die Be\-die\-nung des Requesters ist ganz einfach:
Ein File w\"ahlt man aus, indem man es entweder zweimal anklickt, oder nur
einmal und dann den {\tt OK}-Button dr\"uckt. Das Directory \"andert man
entweder durch Anklicken eines Directories, durch den Button {\tt DRIVES},
oder mittels des Button {\tt PARENT}.  Angezeigt werden \"ubrigens nur
Files mit der Endung ``.dvi'' und Directories. Aufgerufen wird der
File-Requester entweder mit AMIGA-{\tt o} oder mit dem Men\"upunkt
{\tt load new file} im Untermen\"u {\tt load DVI}.

Der Programmende-Requester schlie\ss{}lich kommt immer\footnote{Ctrl-{\tt C}
verl\"a\ss{}t das Programm sofort}
dann, wenn man das Programm verlassen m\"ochte.
Mit {\tt YES} beendet man das Programm endg\"ultig und mit
{\tt Oh, No!} kann man die Arbeit wieder aufnehmen.

\subsection{Bedienung \"uber die Tastatur}
Alles was man mit Hilfe der Maus an Kommandos ausf\"uhren kann,
ist auch \"uber die Tastatur erreichbar.

\subsubsection{Innerhalb einer Seite scrollen}
Innerhalb einer Seite scrollt man entweder -- bei eingeschalteten Scrollbars --
mit der Maus, oder aber mit den Cursor-Tasten.
Mit der Cursor-Up-Taste kommt man an den Seitenanfang und mit der
Cursor-Down-Taste an das untere Ende der Seite. Links/rechts geht analog.
Bei gedr\"uckter Shift-Taste ist die Scroll-Geschwindigkeit herabgesetzt.
Mit Alt und einer Cursor-Taste kommt man an den jeweiligen Rand der Seite.

\subsubsection{Einfaches Bl\"attern}
Die aktuelle Seite verlassen und auf eine Neue springen kann man mit 7
verschieden Tasten.
Die einfachsten davon sind:
\itemlist{$\bullet$ }
\next {\tt RETURN}; Damit kommt man auf die n\"achste Seite, bleibt aber auf
 der selben H\"ohe der Seite. Zusammen mit einer Taste wie
 Shift, Alt oder Ctrl springt man auf die letzte Seite.
\next {\tt BACKSPACE} oder {\tt -} auf der normalen Tastatur. Mit diesen zwei
 Tasten kommt man auf die vorhergehende Seite und bleibt ebenfalls
 auf dem selben Ausschnitt der Seite. Auch springt man mit Shift,
 Alt oder Ctrl auf die erste Seite.
\next {\tt ENTER} hat die selbe Funkion wie {\tt RETURN} nur das man
 an den Anfang der Seite kommt. Dies ist f\"ur ein Scrollen durch
 das File n\"utzlich.
\next $-$ auf dem Zahlenblock hat die selbe Funktion wie {\tt BACKSPACE},
 nur da\ss{} man immer ganz am unteren Ende der Seite herauskommt.
\enditemlist
Die weiteren M\"oglichkeiten verlangen noch eine weitere Erkl\"arung.

\subsubsection{Bl\"attern mittels des ``PJC''}
``PJC'' oder ``Page Scroll Counter''\footnote{Seiten-Scroll-Z\"ahler}
ist eine maximal vierstellige numerische Variable,
die \"uber die Tasten {\tt 0} bis
{\tt 9} gesetzt werden kann. Ihr jeweiliger Inhalt wird, wenn ungleich
Null, rechts oben auf der Fensterkopfzeile zwischen dem {\tt \#} und dem
$+$ Gadget angezeigt. Mit der Taste {\tt c} kann ihr Inhalt auf Null
zur\"uckgesetzt werden.

Wozu wird dieser Z\"ahler ben\"otigt? \parwithoutskip
Mit {\tt g} oder dem `{\tt .}' von dem Zehnerblock wird auf die Seite, die
der PJC angibt, gesprungen. Mit der Eingabe {\tt c 1 5 g} springt man also
auf Seite 15. Danach ist der Z\"ahler automatisch auf Null zur\"uckgesetzt.

Dar\"uberhinaus geht er auch noch bei den anderen Tasten zum
Seitenwechseln mit ein. Mit {\tt 3 RETURN} spring man drei Seiten vorw\"arts
und mit {\tt 7 -} sieben Seiten zur\"uck.

Mit Hilfe dieses Z\"ahlers reichen Zehnerblock und Cursor-Tasten
vollst\"andig aus, um sich in einem DVI-File flott zu bewegen.

\subsubsection{Verschiedenes}
Es gibt noch eine Reihe anderer Tasten, die mit Funktionen belegt sind:
\staggered{AMIGA-{\tt q} }
\key{\tt f} Zeigt die aktuelle Seite im ``Ganzseiten-Modus'' an.
 Dazu wird die Seite so verkleinert, da\ss{} sie in der jeweiligen
 Bildschirmaufl\"osung vollst\"andig angezeigt werden kann.
 Neben der Seite werden dazu die Ausma\ss{}e der Seite
 angezeigt. Die Einheit, die dabei verwendet wird, kann im
 \ShowDVI-Konfiguration-File eingestellt werden.
 Zur Auswahl stehen: Inch (in), Zentimeter (cm) und Point's (pt).
 Wenn man im ``full-page-modus'' die Seite wechselt,
 so wird diese ebenfalls in diesem Modus angezeigt.
 In die normale Anzeigeform kommt man durch erneutes Bet\"atigen
 der Taste {\tt f} zur\"uck.
\key{\tt i} Schaltet zwischen Interlace- und Noninterlace-Modus hin und
 her.
\key{\tt o} Schaltet die Scrollbars an und ab.
\key{\tt c} L\"oscht den Page Jump Counter, bzw.\ setzt ihn auf Null.
\key{\tt a} L\"adt das aktuelle DVI-File neu ein, bleibt aber auf der
 selben Seite.
\key{\tt s} Schaltet den Page-Scroll-Modus an. Mit den Cursor-Up-
Down-Tasten kann man dann die gew\"unschte Seite ausw\"ahlen und
 mit einer der Seitenwechseltasten ({\tt RETURN ENTER BACKSPACE - g
 .}) anspringen. Nochmaliges Dr\"ucken der Taste {\tt s} wirkt wie
 das {\tt NO} Gadget.
\key{\tt p} Druckt die aktuelle Seite aus. Solange der Druck noch nicht
 abgeschlossen ist, wird oben links neben dem {\tt +} Gadget
 ein ``P'' angezeigt. Durch wiederholtes Dr\"ucken der
 {\tt p}-Taste kann der Druck abgebrochen werden.
\key{\tt d} Bringt den Workbench-Screen nach vorne und aktiviert das
 Fenster, das vor dem Start von \ShowDVI{} aktiv war.
\key{\tt !} \"Offnet ein Shell-Fenster auf dem \ShowDVI-Screen. \ShowDVI{}
 wartet, bis die Shell mit {\tt endcli} wieder geschlossen wurde.
 Vorsicht: Dies ist die einzige Funktion im \ShowDVI-Programm, die
 sich nicht an die allgemeinen Programmierrichtlinien h\"alt. Es
 ist also gut m\"oglich, da\ss{} dies in einer neueren
 Betriebssystemversion nicht mehr funktioniert.
\key{AMIGA-{\tt c}} Ruft den Farb-Requester auf.
\key{AMIGA-{\tt o}} \"Offnet den File-Requester.
\key{AMIGA-{\tt q}} Beendet das Programm.
\key{ESC} Diese Taste hat zwei Funktionen abh\"angig von der Einstellung
 im Konfigurations-File. Entweder beendet die Taste das Programm, oder (im
 Normalfall) es legt lediglich den \ShowDVI-Screen nach hinten und
 aktiviert das Fenster, das vor dem Aufruf von \ShowDVI{} aktiv war.
\endstaggered
Dar\"uberhinaus kann man die Funktionstasten mit ARexx-Scripts
belegen. Genaueres dazu im n\"achsten Kapitel.

\section{ARexx Port}
Wie jedes Programm das etwas auf sich h\"alt, hat auch das
\ShowDVI{}-Programm einen ARexx-Port. Der Name des Ports ist ``showdvi''.
Die File-Extension f\"ur Scripts ist ``.sd''.

\subsection{Die Kommandos}
Folgende Kommandos beherrscht das Programm bisher:
\staggered{\tt setresolution dpi }
\key{\tt first}   gehe auf die erste Seite
\key{\tt last}   gehe auf die letzte Seite
\key{\tt prev \it [nr]}  gehe {\it nr} Seiten zur\"uck, oder falls
 {\it nr} fehlt auf die vorherige Seite
\key{\tt next \it [nr]}  gehe {\it nr} Seiten weiter, oder falls
 {\it nr} fehlt, auf die n\"achste Seite
\key{\tt goto \it nr}  gehe auf Seite Nummer {\it nr}
\key{\tt tofront}  Screen nach vorne
\key{\tt toback}  Screen in den Hintergrund
\key{\tt wbtofront}  Workbench-Screen nach vorne
\key{\tt screen}  gib die Adresse des Screens hexadezimal aus
\key{\tt fullpage}  wechsel zur Anzeige im Ganzseiten-Modus
\key{\tt printpage}  drucke die aktuelle Seite aus, oder falls
 schon ein Ausdruck l\"auft, breche diesen ab.
\key{\tt setdir \it dir} setze das aktuelle Directory auf {\it dir}
\key{\tt loadnew \it file} lade ein neues DVI-File
\key{\tt loadagain}  lade das aktuelle DVI-File neu
\key{\tt getdir}  liefere das aktuelle Directory zur\"uck
\key{\tt getfile}  liefere den Filenamen des aktuellen DVI-File zur\"uck
\key{\tt getpage}  liefere die aktuelle Seitennummer zur\"uck
\key{\tt togglelace}  \"andere den Anzeige-Modus (lace
 $\leftrightarrow$ hires)
\key{\tt togglescrollbar} Scrollbar an/aus
\key{\tt setcolor \it nr r g b} setze die Screen-Farbe {\it nr} auf
 {\it r g b}
\key{\tt setresolution \it dpi} setze die aktuelle Aufl\"osung auf {\it dpi}
\key{\tt beep}   setze ein DisplayBeep ab
\key{\tt message \it string} gib eine Meldung aus. Diese wird in die
 Screen-Kopfzeile eingetragen und nach sieben Sekunden wieder
 \"uberschrieben.
\key{\tt refresh}  Bildschirm-Refresh (Ausschalten des Fullpage-Modus)
\key{\tt spawn \it prozedure} interpretiere {\it prozedure.sd}
\key{\tt version}  liefere den Version-String zur\"uck
\key{\tt saveconfig}  speichere die aktuelle Konfiguration ab
\key{\tt exit}   beende \ShowDVI{}
\endstaggered

Die Ausgabe der Kommandos wie {\tt getfile} oder {\tt getpage} werden
bei gesetztem {\tt options results} in der {\tt result} Variable
\"ubergeben.

Falls wichtige Kommandos in der bisherigen Implementierung des ARexx-Ports
fehlen, so sollte man mir diese mitteilen. Falls sie sinnvoll erscheinen,
werde ich sie gerne einbauen.

Falls jemand die kommerzielle Amiga\TeX-Version besitzt: Die wenigen ARexx-Befehle
des dortigen Previewers sind bei mir ebenfalls implementiert. Diese sind:
{\tt getcwd} (entspricht {\tt getdir}), {\tt filename} (= {\tt getfile}) und
{\tt pagenum} (= {\tt getpage}). {\tt screen} und {\tt exit} sind ohnehin
vorhanden.

\subsection{Funktionstastenbelegung}
Im Konfigurations-File kann f\"ur jede Funktionstaste mit und ohne
Shift jeweils ein ARexx-Script angegeben werden, das bei
Bet\"atigung der entsprechenden Funktionstaste ausgef\"uhrt wird.
N\"aheres dazu im Kapitel \"uber die Konfigurations-Files.

\subsection{Erzeugung nichtgefundener Fonts mittels Metafont}
Falls der Previewer einen zur Anzeige ben\"otigten Font nicht finden kann
und falls die Environtment Variable ``CALLMF'' gestetzt ist, so wird
der Inhalt dieser Environment Variable als Name einer ARexx Script Datei
verwendet.

Diese wird zur Erzeugung des nicht gefundenen Fonts mit folgenden drei
Parametern aufgerufen:

\itemlist{-- }
\next dem Fontnamen des zu erzeugenden Fonts,
\next der Aufl\"osung des Fonts in DPI und
\next der Grundaufl\"osung, die zur Zeit am Previewer eingestellt ist.
\enditemlist

Dies bedeutet, dass nach

\qquad{\tt setenv CALLMF callmf}

der Previewer die Script mit

\qquad{\tt callmf cmr10 120 100}

aufrufen w\"urde, falls der Font ``cmr10'' mit der Aufl\"osung
``magstep1'' nicht zu finden w\"are und der Previewer zur Zeit mit
einer Grundaufl\"osung von 100dpi arbeiten w\"urde.

\section{Konfigurations-Files}

\ShowDVI{} arbeitet mit drei Konfigurations-Files zusammen.
Dies ist zum einen das ``Startup-File''. Dort wird, unter anderem, das Aussehen
des \ShowDVI-Screens festgelegt.

In den beiden anderen wird definiert, wo Fonts und Fontlibraries zu finden sind.
Eines davon ist in einem \ShowDVI/\DVIprint-eigenem Format.

Das andere ist im Amiga\TeX{}\footnote{Amiga\TeX{} ist ein kommerzielles Produkt
von Radical Eye Software}-Format. Dieses wird im Verzeichnis {\tt TeX:pk} gesucht.

Die beiden \ShowDVI{}/\DVIprint{}-eigenen Files werden im Directory {\tt
TeX:config} gesucht. Sie m\"ussen aber nicht unbedingt dort stehen, das
kann mittels der Environment-Variable ``{\tt DVICONFIG}'' eingestellt
werden. Nach {\tt setenv DVICONFIG ram:} werden diese Konfigurations-Files
zum Beispiel nur noch im Directory {\tt RAM:} gesucht.


In den beiden eigenen Definitions-Files gilt die Regel, alles was nach einem ``{\tt ;}''
kommt, wird mitsamt des Strichpunktes ignoriert. Au\ss{}erdem sind
Leerzeichen in File- oder Directory-Namen verboten. Dies gilt nicht nur
f\"ur die Definitions-Files, sondern auch f\"ur die Environment-Variablen.

Das Amiga\TeX-Konfiguration-File wird nur dann eingelesen, wenn ein
Font nicht zu finden ist. Die beiden anderen werden nur einmal zum
Programm Start eingelesen.

\goodbreak

\subsection{Das Startup-File}

Der Name des \ShowDVI{}-Konfigurations-File ist {\tt ShowDVI.config}.

Das File wird vom \ShowDVI-Programm Zeile f\"ur Zeile interpretiert.
Zeilen die mit einem Strichpunkt beginnen, oder vor einem Strichpunkt
nur Spaces oder Tabs haben, werden ignoriert. Alle anderen Zeilen
bestehen aus einem Schl\"usselwort und den dazugeh\"origen Werten.
Danach kann ein Kommentar folgen.

Ein Beispiel f\"ur ein solches Startup-File ist:

\halign{\qquad#\qquad\hfil&#\qquad\hfil&#\hfil\cr
color\_0  &3,2,2   &; values of background color\cr
color\_1  &6,7,8   &; values of foreground color\cr
scrollbar  &on   &; state of scrollbars \cr
interlace  &on   &; interlace \cr
beep   &on   &; beep on warnings \cr
esc-exit  &off   &; exit prog on ESC \cr
int-menu  &on   &; is the menu intelligent \cr
big-menu  &on   &; menu with Topaz 11\cr
unit   &in   &; used unit\cr
default\_resolution &91   &; default start resolution \cr
resolution\_menu &100,91,83,120  &; entries for the resolution menu \cr
f1   &testf1\cr
f2   &testf2\cr
F1   &testF1\cr
F10   &testF10\cr
}

Wobei mit {\tt color\_\it ?} die Bildschirmfarben (rot, gr\"un, blau) festgelegt
werden.
\parwithoutskip
Mit {\tt scrollbar (on/off)} wird festgelegt, ob \ShowDVI{} direkt nach dem
Programmstart Scrollbars anzeigt oder nicht.
\parwithoutskip
{\tt interlace} kann {\tt on} oder {\tt off} sein. Je nachdem, ob man
im Interlace-Modus arbeiten m\"ochte oder nicht.
\parwithoutskip
Mit {\tt beep (on/off)} wird angegeben, ob der Benutzer auf bestimmte
Fehlerf\"alle besonders aufmerksam gemacht werden soll oder nicht.
\parwithoutskip
Der Ein/Ausschalter {\tt esc-exit} bestimmt, ob durch Dr\"ucken der ESC-Taste
das Programm beendet werden soll, oder ob lediglich der Screen nach hinten
gelegt werden soll.
\parwithoutskip
Die n\"achste Zeile mit dem etwas seltsamen Schl\"usselwort {\tt int-menu}
bestimmt den Modus, mit dem das Men\"u arbeiten soll. Mit {\tt off} wird das
Men\"u so eingestellt, da\ss{} es immer an der selben Stelle knapp
unterhalb des Mauszeigers erscheint.  Mit {\tt on} wird das Men\"u
``pseudo-intelligent'', es merkt sich dann immer den zuletzt ausgew\"ahlten
Men\"upunkt und w\"ahlt diesen sofort beim erneuten Aktivieren des Men\"us
aus.
\parwithoutskip
Mittels {\tt big-menu} kann man angeben, ob man das Popup-Men\"u lieber
in Topaz 11 ({\tt on}) oder Topaz 8 ({\tt off}) Schrift haben m\"ochte.
\parwithoutskip
{\tt unit} bestimmt, in welcher Einheit Gr\"o\ss{}enangaben innerhalb des
\ShowDVI{}-Programms gemacht werden sollen. Es stehen {\tt in} f\"ur Inch,
{\tt cm} f\"ur Zentimeter und {\tt pt} f\"ur Point's\footnote{pt ist
eine Einheit, die aus dem Druckergewerbe stammt.
Eine normalgro\ss{}e Schrift hat 10pt. Der Zeilenabstand ist dabei 12pt.}.
\parwithoutskip
{\tt default\_resolution} gibt an, in welcher Aufl\"osung das Programm
gestartet werden soll.
\parwithoutskip
Nach dem Schl\"usselwort {\tt resolution\_menu} folgen bis zu 10 Zahlen.
Diese bestimmen das Aussehen des {\tt resolution} Untermen\"us.
\parwithoutskip
Die restlichen Zeilen schlie\ss{}lich definieren die Belegung f\"ur vier
Funktionstasten. Die Prozeduren werden nach der bei ARexx \"ublichen
Suchstrategie gesucht. Der Pr\"afix der dabei verwendet wird ist ``.sd''.

Mit dem Men\"upunkt {\tt save config} oder der Tastatursequenz
AMIGA-{\tt w} wird der derzeitige Zustand abgespeichert.
Das hei\ss{}t, da\ss{} die zur Zeit verwendete Aufl\"osung zur
{\tt default\_resolution} wird.
Auch der derzeitige Zustand der Bildschirmaufl\"osung (Interlace), die
gew\"ahlten Farben, sowie der Zustand (an/aus) der Scrollbars wird abgespeichert.

\subsection{Das Fontdefinitions-File}
In diesem File k\"onnen zus\"atzliche Angaben gemacht werden, wo einzelne
Fonts oder bestimmte Fontlibraries zu finden sind.
Der vollst\"andige Suchpfad wird im n\"achsten Kapitel ``Internas''
noch genau erl\"autert.

Das Fontdefinitions-File wird normalerweise in {\tt TeX:config} gesucht.
Man kann dieses Directory aber auch mit der Variable {\tt DVICONFIG}
\"uberschreiben. Es wird aber nur in einem Directory gesucht. Es ist also
nicht m\"oglich, einen Suchpfad anzugeben.
Der Name des Konfigurations-Files ist {\tt showdvi.fnt}.

Nun zum Aufbau dieses Files. Hier ein Beispiel:
$$\vbox{
\halign {#\quad&#\quad&#\quad&#\quad&#\qquad\hfil\cr
flib\_str &&PK\%04d  &&; formatstring for flib's\cr
pk\_str  &&\%d/\%s.\%dpk  &&; formatstring for pk-files\cr
pkdir\_str && \%s.pk&&; format for pk-files defined in pkdir\cr
\cr
flib  &&dpi &directory  &; two args\cr
font &font &dpi &directory  &; three args\cr
pkdir &&dpi &directory &; two args\cr
\cr
flib  &&100 &ram:fastflib &; example\cr
font &cmr10 &100 &ram:fastpk &; example\cr
pkdir &&109 &TeX:pk/110 &; example\cr
pkdir &&110 &TeX:pk/110 &; example\cr
}}$$

Die ersten drei Zeilen definieren den Filenamen der Fontlibaries und
PK-Fonts. Als zweites Argument wird ein Format String nach C Art angegeben.
Dabei k\"onnen folgende Modifier angegeben werden.
\itemlist {-- }
\next ``\%d'' steht f\"ur die aktuelle dpi-Zahl,
\next ``\%h'' steht f\"ur die dpi-Aufl\"osung in horizontaler Richtung
		(entspricht ``\%d''),
\next ``\%v'' steht f\"ur die dpi-Aufl\"osung in vertikaler Richtung,
\next ``\%x'' ist eine \"altere Einheit, entspicht der horizontalen dpi
		mal f\"unf,
\next ``\%y'' wie ``\%x'' nur f\"ur die vertikale Aufl\"osung.
\enditemlist
Die ``\%h'' ``\%v'' ``\%x'' ``\%y'' Modifier sind f\"ur den Previewer
nicht so sehr von Bedeutung. Sie werden vor allem f\"ur nicht quadtratische
Fonts (z.B. die EpsonFX80 Fonts) ben\"otigt.

Diese beiden Format-Strings von oben sind auch gleichzeitig der Default-Wert
des Programms.

Insgesamt ist der Formatstring vollst\"andig C-kompatibel.
Beispiele hierzu:\par
$$\vbox{
 \halign {\strut
  \vrule\vrule#&\tabskip = 5pt % linker Strich
        \hskip 2pt#       &  % erste Spalte  pk fmt
  \vrule#&   % Strich
        #       &   % zweite Spalte  flib fmt
  \vrule#&   % Strich
        #       &   % dritte Spalte  dpi
  \vrule#&   % Strich
        #       &   % vierte Spalte  name
  \vrule#&   % Strich
        #       &   % fuenfte Spalte flib
  \vrule#&   % Strich
        #       &\tabskip = 0pt % sechste Spalte font
  \vrule\vrule#   % rechter Strich
  \cr
 \noalign{\hrule}
 \noalign{\hrule}
 & Flib-fmt && PK-fmt && dpi && Name && Flib && Font &\cr
 \noalign{\hrule}
 & PK\%04d && \%d/\%s.\%dpk && 100 && cmr10 && PK0100 && 100/cmr10.100pk &\cr
 & PK\%d && \%s.\%d && 83 && cmbx8 && PK83 && cmbx8.100 &\cr
 & \%x.lib && \%s/\%d && 360 && lasy8 && 1800.lib && lasy/360 &\cr
 \noalign{\hrule}
 \noalign{\hrule}
}}$$

Die Zeilen mit dem Schl\"usselwort ``flib'' definieren das Directory von
Fontlibraries. Nach {\tt flib} kommen zwei Parameter: zuerst eine Zahlenangabe
f\"ur die DPI der Fontlibrary, danach das Directory, in dem die Fontlibrary
zu finden ist.

\"Ahnlich sind die Zeilen mit dem Schl\"usselwort ``font'' aufgebaut.
Diesmal sind drei Parameter anzugeben. Der erste Parameter gibt den
Font-Namen an, wie er in einem \TeX-File definiert ist. Danach kommen die
DPI-Angabe und das Directory, in welchem der Font zu finden ist.

Die Zeilen, die mit ``pkdir'' beginnen, dienen vor allem dazu, ein und den selben
Fonts f\"ur verschiedene Aufl\"osungen zu benutzen. Wird ein Font in einem
dort definierten Directory gesucht, so wird der Formatstring ``pkdir\_str''
verwendet. In dem Beispiel von oben w\"urde der Font {\tt cmr10} sowohl
in der Aufl\"osung 109 dpi als auch in 110 dpi im Directory {\tt TeX:pk/110}
unter dem Namen {\tt cmr10.pk} gesucht werden (falls er nicht schon vorher in
einer Fontlibrary oder als ``normaler'' PK-Font gefunden wurde).


Von gro\ss{}em Nutzen ist dieses Definitions-File vor allem f\"ur Benutzer mit
beschr\"anktem Plattenplatz. Man kann sich zuerst heraussuchen, welche
Fonts unbedingt ben\"otigt werden. Eine gro\ss{}e Hilfe dabei ist das Logfile,
das jeden ben\"otigten Font auflistet. Man erstellt dann f\"ur jede
ben\"otigte Aufl\"osungsstufe eine Fontlibrary, in der die zuvor ermittelten
Fonts hineingepackt werden. Diese werden auf die Festplatte kopiert.
Die vollst\"andigen Fontlibraries kann man auf Diskette halten oder,
falls sie zu gro\ss{} sind, auf mehrere Disketten verteilen.
Wenn man alle Libraries explizit definiert, werden die Fonts in der
Reihenfolge, wie sie aufgef\"uhrt sind, im File gesucht.
Zuerst also auf Platte und -- wenn dort nicht vorhanden -- auf der
Diskette, die man angegeben hat.

Einzelne Fonts zu definieren kann f\"ur Besitzer von METAFONT
von gro\ss{}em Nutzen sein. M\"ochte man zum Beispiel den Font {\tt cmr10} neu
erzeugen, so braucht man ihn nicht schon w\"ahrend der Testphase aus
allen Fontlibraries zu l\"oschen und neu einzutragen. Statt dessen definiert man
den Font im Definitions-File. Da dieser dann zuerst gefunden wird,
ber\"ucksichtigt \ShowDVI den gleichnamigen Font in den Fontlibraries
nicht.

M\"ochte man sein Fontdefinitions-File \"uberpr\"ufen, so sollte man
\ShowDVI{} mit der Option {\tt -s} starten. Vor dem Programmende wird das
Definitions-File mit Kommentaren (gebraucht/gefunden/nicht gefunden)
in das Logfile geschrieben.

\subsection{Das Amiga\TeX{}-Konfigurations-File}
Wenn ein Font nach allen bisherigen Versuchen immer noch nicht gefunden wurde,
dann wird das Amiga\TeX-Konfigurations-File {\tt fontvols} zu Rate gezogen.
Dieses besteht aus mehreren Zeilen mit folgendem Format:

\centerline{\it Volume-Name\tt =\it unused\tt d.\it dpi$_1$\tt .\it dpi$_2$
\tt .$\ldots$\tt .\it dpi$_n$}

``Volume-Name'' ist der Name einer Diskette. ``unused'' ist eine
beliebige Zahl. Sie wird in der jetzigen Version nicht verwendet. Die
einzelnen ``dpi''-Werte geben an, in welchen Aufl\"osungen Fonts auf
der Diskette zu finden sind.

Ein kurzes Beispiel:\parwithoutskip
Mit ``FontDisk=222d.131.207'' wird definiert, da\ss{} es eine Diskette mit
dem Namen ``FontDisk:'' gibt, die zwei Directories enth\"alt.
Zum einen das Directory ``FontDisk:131'' mit den Fonts der Aufl\"osung
131dpi, und zum anderen das Directory ``FontDisk:207'', in dem die
ausgelagerten Fonts der Gr\"o\ss{}e 207dpi zu finden sind.

Eine Aufl\"osung darf dabei mehrfach auftreten. Die Suchreihenfolge ist
von oben nach unten und von links nach rechts.

Dieses Konfigurations-File mu\ss{} im Directory {\tt TeX:pk} mit dem Namen
{\tt fontvols} zu finden sein.

\section{Internas}
Dieses Kapitel soll nun die eine oder andere Hintergrundinformation \"uber
die Funk\-tions\-weise von \ShowDVI{} vermitteln. Diese Informationen werden
zum einfachen Gebrauch des Programms zwar nicht unbedingt ben\"otigt,
k\"onnen aber recht n\"utzlich sein.

\subsection{Environment-Variablen}
Es werden sowohl die MANX Environment-Variablen ({\tt set}), als auch
die Commodore Variablen ({\tt setenv}) unterst\"utzt.

Folgende Variablen werden verwendet:
\staggered{DVICONFIG }
\key{DVICONFIG } gibt Directory der Definitions-Files an.
\key{FLIBDIR } Liste von Pfaden f\"ur das Finden von Fontlibraries.
\key{PKDIR } Liste von Pfaden f\"ur das Finden von PK-Fonts.
\key{CALLMF }
	wenn diese Variable gesetzt ist, wird bei einem
	nicht gefundenen Font die ARexx Script aufgerufen, deren Name
	in der Environment Variable\footnote{diese Variable ist im
	Gegensatz zu den anderen eine reine ENV: Variable und kann daher
	nicht mit dem MANX {\tt set} Befehl gesetzt werden.} steht.
\endstaggered

Eine Liste von Pfaden besteht aus mehreren Directories getrennt durch
``{\tt !}'' oder durch ``{\tt ;}''. Zum Beispiel:
$$\hbox{\tt ram:dir1!df1:dir2;fonts:}$$
Leerzeichen innerhalb von Directories sind nicht erlaubt.

Die Variablen k\"onnen nur im Zusammenhang mit der ``arp.library''
verwendet werden.

\subsection{Font-Such-Pfade}

Eines vorweg: das Programm bevorzugt nach M\"oglichkeit immer die
Fontlibraries, die meiner Meinung nach viele Vorteile haben.
Das sind (kurz zusammengefa\ss{}t):
\itemlist{\qquad-- }
\next sie sparen einiges an Speicherplatz
\next auf sie kann schneller zugegriffen werden
\next die Directory-Struktur ist \"ubersichtlicher
\enditemlist

Wo werden die Fonts gesucht? \parwithoutskip
Startet man \ShowDVI{} ohne weitere
Vorbereitungen, so werden Fonts zuerst innerhalb von Fontlibraries in
{\tt TeX:FontLib} und dann als eingenst\"andiges PK-File in {\tt TeX:pk}
gesucht. Der jeweilige Filename wird nach folgenden Format Strings
ermittelt:
\staggered{\tt \ \%d/\%s.\%dpk }
\key{\tt \ PK\%04d} f\"ur die Fontlibraries, und
\key{\tt \ \%d/\%s.\%dpk} f\"ur die eigenst\"andigen PK-Files.
\endstaggered
Wie schon im Kapitel \"uber das Fontdefinitions-File gesagt, k\"onnen
diese Formatstrings nat\"urlich auch umdefiniert werden.

Als erste M\"oglichkeit der Umkonfigurierung bieten sich zwei
Environment-Variablen an. Mit {\tt FLIBDIR} k\"onnen weitere Directories
definiert werden, in denen sich Fontlibraries befinden und mit {\tt PKDIR}
Directories in denen PK-Files gefunden werden k\"onnen. Nach

\qquad{\tt setenv FLIBDIR DH0:flib1!DH1:flib2!FlibDisk:}\parwithoutskip
\qquad{\tt setenv PKDIR DH0:pk1!PKDisk:}

wird ein Font in folgenden Directories gesucht:
\itemlist{\qquad-- }
\next {\tt DH0:flib1}, innerhalb einer Fontlibrary.
\next {\tt DH1:flib2}, innerhalb einer Fontlibrary.
\next {\tt FlibDisk:}, innerhalb einer Fontlibrary.
\next {\tt TeX:FontLib}, innerhalb einer Fontlibrary.
\next {\tt DH0:pk1}, als eigenst\"andiges PK-File.
\next {\tt PKDisk:}, als eigenst\"andiges PK-File.
\next {\tt TeX:pk}, als eigenst\"andiges PK-File.
\next Wurde der Font nun immer noch nicht gefunden, so wird im File
 {\tt TeX:pk/fontvols} nach einer Diskette gesucht, auf der der Font
 noch sein k\"onnte.
\enditemlist

Falls in der Kommandozeile mit der {\tt -a} Option noch ein weiteres
Directory angegeben wurde, so wird dieses jeweils vor dem
aktuellen Directory durchsucht. In dem Directory wird also vor dem
{\tt TeX:FontLib}-Directory nach einer passenden Library gesucht
und wenn bis zum Ende der Suchliste der Font immer noch nicht
gefunden wurde, so wird vor dem {\tt TeX:pk}-Directory noch in
dem Directory, das nach der {\tt -a} steht, Option gesucht.

Reichen diese M\"oglichkeiten immer noch nicht aus, so k\"onnen innerhalb des
Fontdefinitions-File Fontlibraries und Fonts auch noch einzeln definiert
werden.

Dabei wird dann folgende Suchreihenfolge angewand:
\itemlist{\qquad-- }
\next Als erstes wird in der Liste der einzeln definierten Fonts gesucht.
\next Danach wird in der Liste der vordefinierten Fontlibraries nach
 Libraries der korrekten DPI-Zahl und innerhalb dieser nach dem
 Font gesucht.
\next Erst wenn all dies fehlgeschlagen ist, wird mit Hilfe
 der Environment-Variablen weitergesucht (siehe oben).
\enditemlist

Falls alle diese Versuche, einen Font zu finden, fehlschlagen und die
Environment Variable ``CALLMF'' mit einem ARexx-Scrip Namen belegt
ist, so wird diese Script mit den drei Parametern ``Font Name'', ``Font 
Aufl\"osung'' und ``Grund Aufl\"osung'' aufgerufen. Sobald diese Script
mit dem Return-Code Null beendet ist, wird der gesamte Such-Algorithmus
noch einmal durchlaufen. Falls also diese Script den Font mittels
Metafont erzeugt hat, braucht so ihn lediglich an einen beliebigen
Ort innerhalb des Suchraumes zu kopieren, und ShowDVI verwendet ihn
sofort.


\subsection{Font-Caching}
Ebenfalls von Amiga\TeX{} \"ubernommen wurde die Idee des ``Font-Caching's''.
Wurde ein Font erst mittels des {\tt fontvols}-File auf einer Diskette
gefunden, so wird dieser in das Directory {\tt TeX:pk/}$\ldots$ kopiert.
Dies erleichtert vor allem Benutzern, die ohne -- oder
sehr wenig -- Plattenplatz auskommen m\"ussen, die Auswahl der Fonts, die
sie unbedingt schnell bereit haben m\"ussen.

Ein \TeX-Benutzer, der lediglich zwei Diskettenlaufwerke und keine
Festplatte besitzt, kann sich dann folgenderma\ss{}en helfen:

Auf eine Diskette kommt die Workbench mit den ben\"otigten Programmen wie
{\tt virtex} und {\tt showdvi}. Auf die zweite Diskette sollten
die tfm-Files und die von {\tt virtex} ben\"otigte Format-Datei kopiert werden.
Dazu kommt ein Directory mit Fontlibraries, die nur die wirklich st\"andig
ben\"otigten Fonts enthalten. Au\ss{}erdem mu\ss{} auf dieser Diskette
ein Verzeichni\ss{} {\tt TeX:pk} existieren, in der die
{\tt fontvols}-Datei steht. In dieser sind alle  Disketten
aufgef\"uhrt, die PK-Files enthalten.

Wird nun ein Font nicht auf der Arbeitsdiskette gefunden, so wird die
n\"otige Zusatzdiskette angefordert und der Font in das Directory {\tt
TeX:pk} kopiert. Beim n\"achsten mal ist dieser Font also sofort
verf\"ugbar. Haben sich nun nach einiger Zeit mehrere Fonts in {\tt
TeX:pk} angesammelt, so k\"onnen sie mit Hilfe des Fontlibrary-Programms
{\tt flib} in die Fontlibraries eingetragen werden. Dies hat den Vorteil,
da\ss{} sie dann etwas weniger Platz auf der Diskette
ben\"otigen\footnote{ im Durchschnitt 768 Bytes pro PK-File} und der
Zugriff auch etwas schneller geht.


\subsection{Font-Speicher}
Um einen m\"oglichst schnellen Seitenwechsel zu erm\"oglichen, werden
die schon geladenen Fonts im RAM gehalten. Dies wird solange praktiziert,
bis der daf\"ur reservierte Speicherbereich voll ist. Danach wird nach
der LRU\footnote{last recently used}-Methode der Font, der am l\"angsten
nicht mehr ben\"otigt wurde, aus dem Speicher entfernt.

Es kommt nat\"urlich auf den eigenen Rechner und seinen Speicher an, um
festzulegen, wieviel
Speicherplatz man f\"ur die Fonts opfern kann und m\"ochte.
Mit der Option {\tt -?} kann der Default-Wert abgefragt und mit
{\tt -b }{\it bytes} beim Aufruf auf einen beliebigen Wert gesetzt werden.

Um den f\"ur den eigenen Rechner optimalen Wert zu finden, ist
auch hier das Logfile eine gro\ss{}e Hilfe. Dort wird hinter jedem Eintrag
f\"ur einen geladenen Font die prozentuale Auslastung
des Font-Speichers angegeben.

\subsection{Seitenbitmap -- Aufl\"osungen}
Damit das Scrollen innerhalb einer Seite m\"oglichst fl\"ussig ist,
wird die gesamte Bitmap der aktuellen Seite im CHIP-RAM
gehalten. Da das CHIP-RAM leider recht beschr\"ankt ist, ergibt sich so
auch eine Beschr\"ankung der verwendbaren Aufl\"osungen. Normal gro\ss{}e
Seiten kann man noch mit etwa 180 DPI anzeigen, wenn sonst nicht mehr viel
CHIP-RAM ben\"otigt wird. Bei mir sind dann noch etwa 5 kB CHIP-RAM (von
512 kB) frei.

Die Gr\"o\ss{}e des \ShowDVI{}-Screens h\"angt von der Gr\"o\ss{}e des
Workbench-Screens ab. Wurde die Workbench im Overscan-Modus gestartet, so
richtet sich auch \ShowDVI{} danach. Ist der Workbench-Screen im
Noninterlace-Modus und soll der \ShowDVI{}-Screen im Interlace-Modus
ge\"offnet werden, so wird die y-Aufl\"osung der Workbench verdoppelt.

\subsection{Ausdruck einer Seite}
Da intern die Seite als RastPort abgelegt ist, kann sie nat\"urlich sehr
einfach mit dem io\_Command {\tt PRD\_DUMPRPORT} ausgedruckt werden.
Da diese \"uber den in den Preferences eingestellten Druckertreiber
funktioniert, kann man auch mit jedem graphikf\"ahigen Drucker diese
Funktion verwendet werden. Allerdings ist die Qualit\"at des Drucks nicht
so besonders gut, da \ShowDVI{} mit einer geringen Aufl\"osung
arbeitet. Mit 1 MB CHIP-RAM m\"u\ss{}te man mit bis zu 300 DPI drucken
k\"onnen.

Einen noch nicht fertigen Ausdruck erkennt man daran, da\ss{} rechts oben in der
Window-Titelzeile ein ``P'' steht. W\"ahrend dessen kann weder die aktuelle Seite
verlassen noch ein neues DVI-Files geladen werden.
Abgebrochen kann ein laufender Ausdruck mit dem Men\"upunkt oder der
Taste, mit der er gestartet wurde.

\subsection{Taskname und Signale}
Der Taskname des Programms wird sofort nach Programmbeginn auf
``ShowDVI-Task'' gesetzt. Zuvor wird allerdings noch gepr\"uft, ob es schon
eine Task mit diesem Namen gibt. Wenn ja, so wird dieser ein
Ctrl-E-Signal geschickt. Dieses bringt das andere \ShowDVI{}-Programm dazu,
seinen Screen nach vorne zu holen und sein Fenster aktiv zu machen. Das
soeben gestartete \ShowDVI{}-Programm beendet sich nach dem Versenden des
Signals sofort.

Man kann also auch ohne Besitzer von ARexx zu sein, im beschr\"ankten
Rahmen mit dem \ShowDVI{}-Programm kommunizieren. Man kann es zumindestens
mit einem Signal nach vorne holen und aktivieren. Das Signal kann man
entweder von einem eigenen Programm verschicken, mittels des
CLI-Kommandos {\tt break} absetzen oder sich ganz einfach durch einen
erneuten Aufruf von \ShowDVI{} erzeugen lassen.

Daraus folgt, da\ss{} immer nur ein \ShowDVI{} zur gleichen
Zeit laufen kann.

Noch ein Wort zum automatischen Aktivieren von \ShowDVI{}. Wenn man mittels
Ctrl-E \ShowDVI{} aktiviert, so merkt sich dieses das zuvor aktive Window.
Wenn man nun mit der ESC-Taste den \ShowDVI-Bildschirm wieder nach hinten legt,
so wird automatisch das zuvor aktive Window wieder aktiviert.

Auf noch ein weiteres Signal achtet \ShowDVI{}. Und zwar auf Ctrl-C.
Man kann \ShowDVI{} damit praktisch in jeder Lebenslage, sofort und ohne
Nachfrage, beenden.

\subsection{Ben\"otigter Stack}
\ShowDVI{} ben\"otigt wenigstens 16000 Bytes als Stack. Es k\"onnten zwar auch
ein paar Bytes weniger reichen, aber damit funktioniert es auf jeden Fall.
Damit nun niemand versucht das Programm mit einem kleineren Stack zu starten,
\"uberpr\"uft es den Stack und beendet sich, falls keine 16000 Bytes
reserviert worden sind.

\subsection{In den Hintergrund starten}
Wenn \ShowDVI{} als Hintergrundprogramm gestartet wurde, so werden keine
Ausgaben mehr nach ``stdout'' geschickt. Das bedeutet, da\ss{} im Fehlerfall
auch keine Fehlermeldungen mehr sichtbar sind (falls sich der
\ShowDVI{}-Screen so schnell verabschiedet, da\ss{} man die Meldung dort
nicht mehr lesen konnte). Es empfiehlt sich also in dem Fall das Logfile
nicht auszuschalten und dann anzusehen. Dort steht die genaue
Fehlerursache.

St\"urzt das Programm unkontrolliert ab, so ist leider das Logfile nicht
mehr lesbar. Man sollte es dann noch einmal im Vordergrund
starten, um zu sehen, ob wenigstens auf dem Window noch eine
Fehlermeldung erscheint. Auf jeden Fall ist ein unkontrollierter Absturz
etwas so Ungew\"ohnliches, da\ss{} man mich sofort benachrichtigen sollte.
Aber bitte mit Informationen, wie ich den Fehler reproduzieren kann!

\subsection{ARP-Schnittstelle}
Das Programm funktioniert im Prinzip auch ohne ARP-Library. Nur zwei
Funktionen sind dann leider nicht mehr verf\"ugbar. Zum einen der
File-Requester und zum anderen das Auslesen der Environment-Variablen.

Selbst wenn man noch nicht vollst\"andig mit ARP arbeiten sollte, die
arp.library empfiehlt sich auf jedem Fall f\"ur ein gutgepflegtes
LIBS:-Directory.

\section{Das Logfile}
Diese File wurde schon \"ofters im Rahmen dieser Anleitung angepriesen.
Wenn man mit einer Festplatte arbeiten sollte (was sowieso zu empfehlen ist),
sollte man auf die Option {\tt -l}, die das Logfile abschaltet, verzichten.
Der Geschwindigkeitsverlust durch das Anlegen des Logfiles ist so
minimal, da\ss{} der etwaige Nutzen auf jeden Fall \"uberwiegt.

Angelegt wird das Logfile im den Directory, in dem \ShowDVI{} gestartet
wurde, sein Name ist ``showdvi.log''.

Welche Informationen enth\"alt dieses Logfile?\parwithoutskip
Zum einen Warnungen wie:
\itemlist{\quad-- }
\next nicht gefundenes Konfigurations File,
\next nicht gefundene vordefinierte Font/Fontlibraries
\next und fehlerhafte DVI-Files.
\enditemlist
Informationen wie:
\itemlist{\quad-- }
\next welche Fonts geladen wurden,
\next wie stark der Font-Speicher ausgelastet wurde,
\next welches DVI-File geladen wurde
\next und -- mit gesetzter {\tt -s}-Optoion -- eine allgemeine
Statistik \"uber das DVI-File und im Besonderen \"uber das
Fontdefinitions-File.
\enditemlist
Und schlie\ss{}lich Fehlermeldungen, die das \ShowDVI{}-Programm dazu
veranla\ss{}t haben, die Arbeit einzustellen.

\section{Ben\"otigte Soft- Hardware}
An Software ben\"otigt man zuerst einmal ein Programm, das DVI-Files
erzeugt. Im allgemeinen hei\ss{}t dieses Programm {\tt virtex} oder einfach
{\tt tex}. Von gro\ss{}em Nutzen ist auch noch die ``arp.library'', da man
sonst auf Environment-Variablen und den File-Requester verzichten
mu\ss{}.
Eine gro\ss{}e Arbeitserleichterung ist ARexx von William S.\ Hawes.

An Hardware ben\"otigt man vor allem einen Amiga. Die wichtigste
Erweiterung ist dann noch eine Speichererweiterung. 1 MB an Hauptspeicher
ist das absolute Minimum. Eine Festplatte ist, wenn man vern\"unftig
arbeiten m\"ochte, notwendig.
F\"ur das \ShowDVI{}-Programm bracht man nicht mehr als etwa 3 MByte an
Plattenplatz. Falls man allerdings noch die Zeichens\"atze f\"ur seinen
Druckertreiber vollst\"andig auf der Festplatte installieren m\"ochte, so
wird schon etwas mehr gebraucht.

\section{Bekannte Fehler}

Gr\"o\ss{}ere Fehler sind mir (noch) nicht bekannt.
H\"ochstens ein paar Unsch\"onheiten.
M\"ochte man aber mit der Ver\"offentlichung eines
Programms darauf warten, da\ss{} es perfekt ist, bzw.\ man es wenigstens
selber daf\"ur h\"alt, so w\"urde zumindestens ich nie dazu kommen, ein
Programm zu ver\"offentlichen.

Eine Unsch\"onheit ist, da\ss{} Fehlermeldungen auf dem
Bildschirm sehr schnell durch etwas anderes
\"uberschrieben werden k\"onnen, ohne da\ss{} man die Chance hat, sie zu
lesen. Als Ausweg bietet sich zur Zeit nur das Logfile an, in dem
alle wichtigen Meldungen mitprotokolliert werden.

Bei der Arbeit mit der PD Version von Amiga\TeX{} ist mir aufgefallen,
da\ss{} \"ofters das DVI-File nicht in Ordnung war\footnote{Es fehlt die
PostAmble im DVI-File (Font-Definitionen, Seitengr\"o\ss{}e)}. \ShowDVI{} versucht
damit so gut es geht klarzukommen, aber so ganz ideal ist das nicht. Meiner
Meinung nach liegt dieser Fehler aber an der PD Version von Amiga\TeX{}.
Der Fehler tritt nach Tests bei Bekannten auch in der kommerziellen Version
vom 1. Juni 1990 noch auf.
\bye
