Verwendung der Umgebungsvariablen

{\manual META}{\manual FONT} kennt und verwendet zahlreiche Umgebungsvariablen bei der Suche nach den unterschiedlichen Eingabedateien, für den Aufruf des Systemeditors als Antwort auf das ,E`-Kommando im Fehlerfall und zur Einstellung der Bildschirmanzeige. IniMF und VirMF verwenden einen Algorithmus zur rekursiven Suche nach base-Kommandodateien, der Konfigurationsdatei mfmemory.config, den Zeichensatzbeschreibungsprogrammen und der Textdatei mf.pool. Auch die zugehörigen Hilfsprogramme kennen diese und weitere Umgebungsvariablen und verwenden sie entsprechend. In der alten Version kam es an einigen Stellen zu unerwünschten Überschneidungen in der Verwendung von Umgebungsvariablen, die mit dieser neuen Version beseitigt sind.

Sie können die Umgebungsvariablen wie üblich entweder mit dem Systemaufruf

    SetEnv <Variable> <Ersetzung>
setzen oder verändern, um die bei Ihnen gültige Konfiguration zu berücksichtigen, oder Sie können die internen Standardwerte beibehalten. Hier ist eine Liste der Suchpfad-Umgebungen, ihrer Vorgabewerte und dessen, was {\manual META}{\manual FONT} in den jeweiligen Verzeichnissen zu finden hofft.

Variable Vorgabewert Dateien
MFBASES "MF:bases" *.base Kommandodateien
MFINPUTS "MF:inputs/*,"  
  "MF:mfinputs/*,"  
  "MF:inputs/amsfonts/sources/*,"  
  "MF:mfinputs/amsfonts/sources/*,"  
  "MF:inputs/old-german/*,"  
  "MF:mfinputs/old-german/*" *.mf Programmdateien
MFPOOL "MF:,MF:pool" mf.pool Textverzeichnis
MFCONFIG "MF:config" mfmemory.config

Zusätzlich dazu wurden auch für die Hilfsprogramme einige Umgebungsvariable eingerichtet, die insbesondere die Unterscheidung zwischen den verschiedenen Arten von Zeichensatzkodierungen ermöglichen.

Variable Vorgabewert Dateien
GFFONTS "TEX:gf/*,"  
  "TEX:fonts/gf/*,"  
  "TEX:texfonts/gf/*" *.*gf Dateien
PKFONTS "TEX:pk/*,"  
  "TEX:fonts/pk/*,"  
  "TEX:texfonts/pk/*,"  
  "TEX:pk/amiga/*,"  
  "TEX:fonts/pk/amiga/*,"  
  "TEX:texfonts/pk/amiga/*,"  
  "TEX:pk/deskjet/*,"  
  "TEX:fonts/pk/deskjet/*,"  
  "TEX:texfonts/pk/deskjet/*,"  
  "TEX:pk/cx/*,"  
  "TEX:fonts/pk/cx/*,"  
  "TEX:textfonts/pk/cx/*,"  
  "TEX:pk/ljfour/*,"  
  "TEX:fonts/pk/ljfour/*,"  
  "TEX:texfonts/pk/ljfour/*" *.*pk Dateien
VFFONTS "TEX:vf,"  
  "TEX:fonts/vf,"  
  "TEX:texfonts/vf" *.vf Dateien
PLFONTS "TEX:pl,"  
  "TEX:fonts/pl,"  
  "TEX:texfonts/pl" *.[v]pl Dateien

Alle Programme in der neuen Version suchen ohne Berücksichtigung dieser Pfade immer zuerst im aktuellen Verzeichnis nach den jeweiligen Dateien. Dadurch konnte insbesondere das Problem mit der Notation für das „aktuelle`` Verzeichnis beseitigt werden. Zwar ist weiterhin die leere Zeichenkette und zusätzlich der Punkt "." erlaubt, jedoch bringt dies keinerlei Gewinn; eine Datei wird stets von der ersten Stelle ihres Auftretens im Gesamtsuchpfad aus benutzt.

Die umständliche Angabe von mehrfach geschachtelten Unterverzeichnissen ist nicht mehr notwendig. An jeden beliebigen Eintrag in einer Umgebungsvariablen kann jetzt ein Stern * angehängt werden, wodurch sowohl in diesem Pfad als auch in jedem direkten Unterpfad nach der erforderlichen Datei gesucht wird (siehe den obigen Eintrag für MFINPUTS). Beliebig tiefe Suche im Verzeichnisbaum ist durch Anhängen eines Doppelsterns ** möglich, kann aber bei stark verzweigten Verzeichnissen beim Aufruf der Programme etwas Zeit kosten.

Eine weitere positive Eigenschaft der neuen Pfadsuchroutinen ist, daß Sie die obigen Vorgabewerte nicht in die Umgebungsvariablen aufnehmen müssen. Wenn Ihre Konfiguration die Verwendung anderer oder zusätzlicher Pfade erfordert, genügt die Angabe der fehlenden Einträge in die entsprechende Umgebungsvariable. Sämtliche internen Vorgaben werden dann einfach daran angehängt, also im Suchprozeß zum Schluß auf jeden Fall berücksichtigt.

An dieser Stelle möchte ich mich bei Giuseppe Ghibò bedanken, der mir freundlicherweise den Quelltext seines EVPATHS-Paketes zur Verfügung gestellt hat. Ohne diese konstruktive Mitwirkung würde es die elegante Implementierung der rekursiven Pfadsuche für {\manual META}{\manual FONT} nicht geben. Insgesamt verdankt die neue Version ihre Existenz und den erweiterten Umfang dem hartnäckigen Fordern aus Italien.

Tritt bei der Verarbeitung ein Fehler auf oder unterbrechen Sie {\manual META}{\manual FONT} bei seiner Arbeit, so meldet sich {\manual META}{\manual FONT} mit dem Fragezeichen als Eingabemarke. Geben Sie in solch einem Fall ,e` (oder ,E`) ein, so wird dadurch Ihr Texteditor aufgerufen. Welcher das in Ihrem Fall ist, wird durch die Umgebungsvariable MFEDIT gesteuert, die ein Aufrufmuster enthält, um Ihren bevorzugten Systemeditor in der gerade bearbeiteten Datei an der fehlerhaften Stelle zu positionieren. Dies ist nicht notwendigerweise die Datei, mit der Sie {\manual META}{\manual FONT} aufgerufen haben. Geben Sie als Wert von MFEDIT einen beliebigen Programmaufruf oder ein beliebiges Skript an, der/das Ihren Editor in der Datei ,%s` und der Zeile ,%d` positioniert. Die Standardeinstellung lautet folgendermaßen und startet den mit dem Betriebssystem gelieferten Editor MEmacs:

   EDITOR "MEmacs goto %d %s"
Im rexx-Verzeichnis finden Sie einige ARexx-Skripten zur Verwendung des Cygnus Ed Professional Editors. Wenn Sie diese verwenden wollen, müssen Sie einfach der Umgebungsvariablen MFEDIT die Zeichenkette
   "rx MF:rexx/MFEdit.rexx %s %d"
zuweisen. Das zweite Skript NameStruc müssen Sie in das REXX:-Verzeichnis kopieren, da es direkt aus MFEdit.rexx aufgerufen wird.

Wie schon in der vorangegangenen Version, können Generierungsläufe für die virtuellen Gerätetreiber proof und smoke am Bildschirm mitverfolgt werden, so wie es im ,{\manual META}{\manual FONT}book` von Don Knuth [4] beschrieben ist. Da dies aber einige erweiterte Bibliotheksroutinen verwendet, die in älteren Versionen des Betriebssystems nicht vorhanden sind, funktioniert dies nur ab AmigaDOS 2.0 und höher. Die explizite Aktivierung durch Setzen der Umgebungsvariablen MFWTERM auf den Wert ,amiterm` ist nicht mehr notwendig, da dies zu Mißverständnissen führte.