\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=2
\contfill={\dotfill}
\contskip=4pt
\let\scstyle=\bf

\titlepage
\vskip 1in
\title{\ShowDVI{}, der \TeX-Previewer}
\removelastskip
\smallskip
\title{f\"ur den AMIGA}
\bigskip
\release{Version 1.07}
\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. Auch nutzt er schon einige Features des neuen
  Betriebssystem 2.0.
  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. Dabei ist der Treiber auch schon 
  auf den neuen Fontstandard ausgelegt und kann mit Fonts, die
  mehr als 128 Buchstaben haben, umgehen.
}

\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 {\it und} der PK-Directories 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 ``$+$'' 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.
\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.
 Falls eine logische Seitennummer mehrfach in dem DVI-File vorkommt,
 so wird rechts neben diesem Gadget angezeigt, die wievielte Seite
 mit dieser Nummer die aktuelle Seite ist.
\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
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.

Dies kann man auch vollst\"andig \"uber die Tastatur steuern.
Die Taste ``s'' schaltet den ``Seiten-Scroll-Modus'' ein.
Mit den Cursor Tasten kann dann eine bestimmte Seite ausgew\"ahlt werden.
Uebernommen wird sie mit allen Tasten, die auch sonst eine Seiten\"anderung
bewirken (z.B.\ RETURN/ENTER/BACKSPACE).
Nochmaliges dr\"ucken der Taste ``s'' entspricht dem {\tt NO} Gadget, der
``Seiten-Scroll-Modus'' wird ohne \"Anderung der Seitennummer verlassen.

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 oder Alt 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 oder
 Alt 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

H\"alt man w\"ahrend dem Bet\"atigen einer der obig genannten Tasten die
{\tt Ctrl} Taste gedr\"uckt, so kommt man tempor\"ar in den
``physikalischen Modus''. Eine Erkl\"arung dazu folgt in den n\"achsten
Abschnitten. Nur so viel vorweg: man kommt dann mit {\tt RETURN}
nicht auf die Seite mit der n\"achst gr\"o\ss{}eren Seitennummer, sondern
auf die, die im DVI-File als n\"achste der aktuellen Seite folgt.

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 gesetzt,
rechts oben auf der Fensterkopfzeile neben dem {\tt \#}
Gadget angezeigt. Mit der Taste {\tt c} kann ihr Inhalt gel\"oscht
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.

Auch die Tasten {\tt g} und {\tt .} k\"onnen mittels einer gedr\"uckten
{\tt Ctrl} Taste tempor\"ar auf die Verwendung der physikalischen
Seitennummern umgestellt werden. So kommt man mittels
{\tt 1 5 Ctrl-g} auf die 15'te Seite innerhalb des DVI-Files.
Diese kann ohne weiteres eine von 15 verschiedene (logische)
Seitennummer haben.

\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.
 Zur Best\"atigung, da\ss{} man auch wirklich im ``Ganzseiten-Modus'' ist,
 wird rechts neben dem {\tt \#} Gadget, in dem Status Feld,
 ein `F' angezeigt.
\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 y} Mit dieser Taste wechselt man zwischen den zwei verschieden
 M\"oglichkeiten eine Seitennummer zu interpretieren.
 Es gibt zum einen die M\"oglichkeit, jede Seitennummer als die
 zu interpretieren, die sie im \TeX-Text hat (logische Nummer).
 Setzt man am Anfang eines \TeX-Text zum Beispiel mittels {\tt \\pageno=7}
 die erste Seitennummer auf sieben, so interpretiert der Previewer
 im Normalfall die physikalisch erste Seite des DVI-Files als die
 Seite mit der Nummer sieben. Schaltet man per 'y' Taste allerdings
 in den physikalischen Seitennummer Modus um, so wird die erste
 Seite des DVI-Files auch mit der Seitennummer eins versehen. 
 Dieser Modus wird mit einem 'Y' in der rechten Seite der
 Fensterkopfzeile angezeigt.
\key {\tt '\ '} (SPACE) \"Ahnlich dem {\tt more} Utility. Scrollt um eine kanppe
 Bildschirmseite nach unten. War man ganz am unteren Rand der Seite, so
 wird eine Seite vorw\"arts gebl\"attert.
\key {\tt b} Kommt ebenfalls von dem {\tt more} Utility. Scrollt um eine
 knappe Bildschirmseite nach oben. Wie bei der SPACE Taste springt man auf
 die vorhergehende Seite, falls man ganz am oberen Rand der Seite war.
\key{\tt p} Druckt die aktuelle Seite aus. Solange der Druck noch nicht
 abgeschlossen ist, wird oben rechts 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.


\subsubsection{Zur physikalische Seitennummerierung$\ldots$}

Wie schon oben erw\"ahnt, kann man mittels der 'y' Taste zwischen
einer logischen Seitennummerierung (default) und einer
physikalischen w\"ahlen. Was sind dabei nun aber die gro\ss{}en
Unterschiede?

In einem normalen plain-\TeX{} Text fallen sie \"uberhaupt nicht auf. Nur
wenn man die Seitennummerierung innerhalb eines \TeX{} Files
\"andert, ergeben sich Unterschiede.

Zum einen beim Bl\"attern. Kommt man bei der logischen
Seitennummerierung mit der {\tt RETURN} Taste von einer Seite immer
auf die mit der n\"achst gr\"o\ss{}eren Seitennummer, so kommt man
bei der physikalischen Nummerierung immer auf die Seite, die als
n\"achstes im DVI File der aktuellen Seite folgt.

Aber auch beim Springen an das Ende des Textes ergeben sich Unterschiede.
So spring man mittels {\tt SHIFT RETURN} im logischen Modus an die
Seite, die die gr\"o\ss{}te logische Seitennummer hat. Im physikalischen
Modus dagegen an die letzte Seite innerhalb des DVI Files.

Wie schon erw\"ahnt wechselt man mit Hilfe der 'y' Taste zwischen
den verschiedenen Seitennummerierungen. Wie aber ebenfalls schon erw\"ahnt
kann man auch nur tempor\"ar (nur f\"ur die eine auszuf\"uhrende Aktion)
vom logischen Modus in den physikalischen Modus umschalten.
Dies geschieht mittels der Control-Taste. Zusammen mit eine der Tasten
{\tt RETURN ENTER - BACKSPACE . g} gedr\"uckt, wird das folgende
Wechsel der Seite im physikalischen Modus durchgef\"uhrt.
Danach ist man sofort wieder im logischen Modus.



\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 {\tt fontvols} 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.

Achtung: Wenn man vom \ShowDVI-Programm aus das Konfigurationsfile
abspeichert, so wird das alte einfach \"uberschrieben. Das hei\ss{}t,
per Hand eingef\"ugte Kommentare gehen verloren.

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


\halign{\quad#\quad\hfil&#\quad\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
physical-numbers&off &; on == use physical numbering\cr
unit   &in   &; used unit\cr
application-window&on&; application-window on/off\cr
app-icon-name&TeX:config/AppWin-ShowDVI&; icon file for app-win\cr
screen-mode &pal &; screen mode\cr
&&; (pal $|$ ntsc $|$ productivity $|$ a2024)\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.

Mit {\tt scrollbar (on/off)} wird festgelegt, ob \ShowDVI{} direkt nach dem
Programmstart Scrollbars anzeigt oder nicht.

{\tt interlace} kann {\tt on} oder {\tt off} sein. Je nachdem, ob man
im Interlace-Modus arbeiten m\"ochte oder nicht.

Mit {\tt beep (on/off)} wird angegeben, ob der Benutzer auf bestimmte
Fehlerf\"alle besonders aufmerksam gemacht werden soll oder nicht.

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.

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.

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.

Das Flag {\tt physical-numbers} legt fest, ob sich das Programm direkt
nach dem Aufrufen schon im ``physikalischen'' Seitennummern Modus
befinden soll.\footnote{Siehe dazu auch die Beschreibung zur Taste 'Y'
und das Kapitel 4.4.5}

{\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.}.


Die n\"achsten zwei Zeilen {\tt application-window} und {\tt app-icon-name}
geh\"oren zusammen. Mit ``{\tt application-window on}'' bringt man \ShowDVI{}
dazu, auf dem Workbench-Screen ein Application-Window zu \"offnen.
Dieses hat zwei Funktionen. Zum einen, kann man durch einen Doppelklick
auf dieses Window den \ShowDVI-Screen nach vorne holen. Zum anderen kann man
\ShowDVI{} dazu veranlassen ein DVI-File zu laden, in dem man das Icon
des DVI-Files auf das Application-Window zieht. Diese Funktion funktioniert
aber leider nur unter einer Betriebssystem Version $\geq 2.0$.
Die Gr\"o\ss{}e, das Aussehen und die Lage des Application-Window's kann
man mit Hilfe eines ``.info'' Files festlegen.\footnote{Mehr Dazu im Kapitel 7.2}
Normalerweise wird dazu das File {\tt TeX:config/AppWin-ShowDVI.info}
herangezogen. Mittels {\tt app-icon-name} kann aber auch ein beliebig anderes
Icon-File verwendet werden.

Das Schl\"usselwort {\tt screen-mode} hat nur unter der neuen Betriebssystemversion
2.0 eine Bedeutung! Damit kann man angeben, in welchem Modus der \ShowDVI-Screen
ge\"offnet werden soll. Zur Auswahl stehen {\tt pal} f\"ur die PAL Aufl\"osung,
{\tt ntsc} f\"ur die NTSC Aufl\"osung, {\tt productivity} f\"ur den neuen
productivity Modus und {\tt a2024} f\"ur den neuen Ganzseiten Bildschirm\footnote{
Diese Einstellung ist noch nicht getestet, da ich keinen solchen Bildschirm
besitze.}
Die Gr\"o\ss{}e des Screens wird dabei noch
von der Overscan-Einstellung beeinflu\ss{}t, die in den Preferences
eingestellt werden kann. Falls \ShowDVI{} ein Betriebssystem mit einer
Version kleiner 2.0 vorfindet, so wird diese Zeile des Konfigurationsfiles ignoriert.
Falls die Zeile fehlt und unter Betriebssystem Version 2.0 oder h\"oher
gearbeitet wird, so wird der ``default Monitor'' verwendet. Dies ist zur Zeit
entweder {\tt pal} oder {\tt ntsc}, je nachdem, wo man sich befindet.

{\tt default\_resolution} gibt an, in welcher Aufl\"osung das Programm
gestartet werden soll.

Nach dem Schl\"usselwort {\tt resolution\_menu} folgen bis zu 10 Zahlen.
Diese bestimmen das Aussehen des {\tt resolution} Untermen\"us.

Die restlichen Zeilen schlie\ss{}lich definieren die Belegung f\"ur vier
Funktionstasten. Die Prozeduren werden nach der bei ARexx \"ublichen
Suchstrategie gesucht. Die Extension die 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 {#\hfil\quad&#\hfil\quad&#\hfil\quad&#\hfil\quad&#\hfil\cr
flibenv    &     &dir1 dir2    &            &; directories with flib's\cr
pkenv      &     &dir1 dir2    &            &; directories with pk-files\cr
\cr
flib\_str  &     &PK\%04d      &            &; formatstring for flib's\cr
pk\_str    &     &\%d/\%s.\%dpk&            &; formatstring for pk-files\cr
pkdir\_str &     &\%s.pk       &            &; fmt 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
}}$$

Mit den ersten zwei Schl\"usselw\"ortern kann man zus\"atzliche
Directories definieren, in denen entweder nach Fontlibraries, oder nach
PK-Fonts gesucht werden sollen. Von der Funktion her entsprechen diese
beiden Zeilen den Environment Variablen {\tt FLIBDIR} und {\tt PKDIR}.
Mehr dazu im Kapitel 7.1.

Die n\"achsten drei Zeilen definieren den Filenamen der Fontlibraries und
PK-Fonts. Als zweites Argument wird ein Format String nach C Art angegeben.
Dabei k\"onnen folgende Modifier angegeben werden.
\itemlist {-- }
\next ``\%s'' steht f\"ur den Font Namen (z.B.\ cmr10),
\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,
\next ``\%\%'' steht schlie\ss{}lich f\"ur ein ``\%'' Zeichen.
\enditemlist

Die ``\%h'' ``\%v'' ``\%x'' ``\%y'' Modifier sind f\"ur den Previewer
nicht so sehr von Bedeutung. Sie werden vor allem f\"ur nicht quadratische
Fonts (z.B. die Epson FX-80 Fonts) ben\"otigt.

Die drei Format-Strings der obigen Tabelle sind auch gleichzeitig der 
jeweilige 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).


Zu beachten sind auch noch zwei Feinheiten. Zum einen wird die
Reihenfolge der Aufschreibung im File {\it innerhalb einer} Gruppe
von Eintr\"agen (z.B.\ alle {\tt flib} Eintr\"age) beim Suchen nach
Fonts ber\"ucksichtigt. Man kann also z.B.\ mehrere Fontlibraries der
selben Aufl\"osung definieren und mit der Reihenfolge bestimmen,
welche zuerst abgesucht werden soll.

Eine weitere Besonderheit ist, dass man die Format-Strings mehrfach definieren
kann. Verwendet wird dann immer der zu letzt definierter String. Ein Beispiel:

$$\vbox{
\halign {#\quad&#\quad&#\quad&#\qquad\hfil			\cr
flib\_str &PK\%04hx\%04v  &&; wegen unsymetrischen Fonts	\cr
flib      &120 &TeX:fontlib&; verwende Format String von oben	\cr
flib      &131 &TeX:fontlib&; ebenso				\cr
flib\_str &PK\%04d  &&; setzt Format-String zur\"uck		\cr
flib      &100 &TeX:fontlib&; verwendet nun den neuen Format-String\cr
}}$$

Die ersten zwei definierten Fontlibraries verwenden nun den Format-String
mit der horizontalen und vertikalen Aufl\"osung. Die dritte definierte
Library und {\it alle}, die noch bei der Suche nach Fonts w\"ahrend
des Programmlaufs definiert werden, verwenden den zweiten definierten
Format-String.



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{``2.0'' Features}
Ein paar wenige Besonderheiten des neuen AMIGA Betriebssystem konnten schon
in dieser Version ber\"ucksichtigt werden. Sie sind schon an der jeweilig passenden
Stelle innerhalb dieser Anleitung erw\"ahnt worden, sollen hier aber noch einmal
kurz zusammen gefa\ss{}t werden.

\subsection{Screen Modis}
Es werden alle mir bisher bekannten AMIGA Screen-Modis unter 2.0 unterst\"utzt\footnote{%
Abgesehen von den mehrfarbigen wie HAM usw.}.

Diese sind: {\it PAL, NTSC, Productivity (VGA) und A2024}\footnote{Der A2024 Modus ist
nicht getestet, da ich keinen solchen Monitor besitze.}

Diese Modi k\"onnen entweder im {\it interlace} oder {\it non-interlace}
Verfahren verwendet werden. Bei der A2024 Einstellung bedeutet diese die
Unterscheidung zwischen der 10 Hz und der 15 Hz Aufl\"osung.

Ausgew\"ahlen kann man den gew\"unschten Monitor und Aufl\"osung \"uber das 
Konfigurationsfile. Siehe dazu Kapitel 6.1.

Unter 2.0 wird die entg\"ultige Aufl\"osung noch \"uber den {\tt Text-Overscan}
ermittelt. Diese kann \"uber die Preferences eingestellt werden.


\subsection{Application Window}
Das Application-Window ist eine sehr praktische Einrichtung f\"ur Leute,
die gerne mit der Workbench arbeiten. Man kann nun von der Workbench
per Maus \ShowDVI{} nach vorne holen oder durch Ziehen eines Icons ein
neues DVI-File laden.

Das Aussehen, Gr\"o\ss{}e und Lage des Application-Windows kann ebenfalls
rein von der Workbench aus bestimmt werden. Und zwar diehnt dazu das
Icon-File, das man auch im Konfigurationsfile angeben kann. Per Default wird
das File {\tt TeX:config/AppWin-ShowDVI.info} verwendet.
Man kann nun dieses Icon mittels des {\tt IconEdit} editieren und seinem
Geschmack anpassen. Um die Lage des App-Windows zu bestimmen legt man das
Icon einfach dorthin, wo man es haben m\"ochte und w\"ahlt den
Men\"upunkt {\tt snapshot} an.

Zu beachten: Diese Operationen m\"ussen an
dem ``.info'' File und {\it nicht} an dem App-Window von \ShowDVI{}
durchgef\"uhrt werden!


\goodbreak


\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 nur die von Commodore unterst\"utzten ENV: Environment
Variablen verwendet.

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 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.


\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

%% neu in Version 1.07
Wurde mittels der Environmentvariable {\tt FLIBDIR} oder dem Eintrag 
{\tt flibenv} im Konfigurationsfile ein Suchpfad f\"ur Fontlibraries
definiert, so wird der Defaulteintrag {\tt TeX:fontlib} gel\"oscht.
Falls also dieses Directory ben\"otigt wird, so mu\ss{} man es selbst
in die Liste mit aufnehmen. Dadurch kann man zur Not auch v\"ollig
ohne das Assign {\tt TeX:} arbeiten.

Das selbe gilt f\"ur {\tt PKDIR} und {\tt pkenv}.

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 Falls der Font noch nicht gefunden wurde, so werden jetzt die
      Flib-Directories abgesucht. Definiert werden diese mit
      der Environment Variable {\tt FLIBDIR} und dem Eintrag {\tt flibenv}
      des Fontdefinitionsfiles.
\next Nun wird in der Liste der PK-Directories nach dem passenden
      PK-File gesucht. Diese Liste kann ge\"andert werden mittels
      der Environment Variable {\tt PKDIR} und dem Eintrag {\tt pkenv}
      des Fontdefinitionsfiles.
\next Als vorletzter Versuch den Font doch noch zu finden werden als n\"achstes
      die \"uber den {\tt pkdir} Eintr\"agen definierten PK-Directories
      abgesucht.
\next Zu guter letzt wird das File {\tt TeX:pk/fontvols} zu Rate gezogen.
      Falls der Font damit doch noch gefunden wurde, so wird dieser nach
      {\tt TeX:pk} kopiert. Dies nennt man auch {\it Font-Caching}, da man so
      seine Fonts einfach alle auf Diskette halten kann und nur die, die
      wirklich ben\"otigt werden, werden in den {\tt TeX:pk} Bereich kopiert.
      Siehe dazu auch Kapitel 7.3.
\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.\footnote{Vorsicht: Aufgrund eines sich gut
versteckenden Bug's kommt es dabei manchmal zu einem Systemabsturz}

\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\footnote{Daraus folgt, da\ss{} immer nur ein
\ShowDVI{} zur gleichen Zeit laufen kann.}.


Wurde bei dem zweiten Aufruf von \ShowDVI{} ein Filename angegeben
(Wichtig: Filename {\it einziger} Parameter), so wird nach dem Ctrl-E
Signal noch das ARexx Kommando
$$\hbox{\tt address "showdvi" "loadnew \%s"}$$
ausgef\"uhrt, wobei f\"ur {\tt \%s} der Filename eingesetzt wird, der
als Parameter dem Programm mit \"ubergeben wurde.
Dabei ist allerdings zu beachten, da\ss{} das File bez\"uglich dem Directory
gesucht wird, das bei dem als erstes gestarteten \ShowDVI{} eingestellt ist.

Noch ein weiteres Signal verwendet \ShowDVI{} -- das Ctrl-F Signal.
Wenn \ShowDVI{} dieses Signal empf\"angt, so wird der \ShowDVI{} Screen
nach vorne geholt und das aktuelle File neu geladen.

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, aktivieren und das bereits geladene
DVI-File neu einlesen. Die Signale 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.

Noch ein Wort zum automatischen Aktivieren von \ShowDVI{}. Wenn man mittels
Ctrl-E oder Ctrl-F \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}
Im Gegensatz zu fr\"uheren \ShowDVI{} Versionen gibt sich diese nun mit
4000 Bytes Stack zufrieden.

\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. Dort wird dann zum Beispiel auch angegeben, wo
die einzelnen Fonts gefunden wurden.
\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}

Das Abbrechen der Ausdruckfunktion kann zu Abst\"urzen f\"uhren.

Dies ist der einzige richtige Fehler des Programms (der mir bekannt ist).
Allerdings gibt es noch ein paar Unsch\"onheiten.
Zum Beispiel, 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.

\vskip 1cm
{\hfill $($\it Der Rest der Seite bleibt frei f\"ur eigene Fehler Notizen$)$}
\bye
