GloTEX und IdxTEX

Fred Hantelmann Universität der Bundeswehr Hamburg Institut für Informatik Holstenhofweg 85 D-2000 Hamburg 70 w mf@unibw-hamburg.de

Zusammenfassung

GloTEX und IdxTEX sind keine Prä- oder Postprozessoren zum TEX-System; es sind vielmehr Programme, die den Anwendungsbereich des LaTEX-Makropakets um Möglichkeiten ergänzt, die Leslie Lamport in article.sty und report.sty bereits vorbereitet hat. GloTEX automatisiert die Produktion von Glossaren zu einem LaTEX-Dokument. IdxTEX gestattet die Erstellung eines komfortablen Index-Verzeichnisses mit Unterstützung von Seitenbereichen und Querverweisen. Außerdem kann IdxTEX zu einem mehrbändigen Werk ein Masterindex generieren.

1 Auftakt

GloTEX und IdxTEX wurden 1986 von Richard L. Aurbach für Vax C-Compiler programmiert. Der Autor dieses Artikels hat sich interessenhalber die Quellen geordert und dann die Vax-spezifischen Kommandos zur Bearbeitung von Zeichenketten (Strings) für C-Compiler unter Unix und MS-DOS angepaßt. Die Konvertierung war bereits nach zwei Wochen Arbeit im Mai 1991 abgeschlossen und wird nun im Rahmen der TEX-Tagung DANTE ’92 zur Verbreitung an die Public Domain übergeben.

Die Funktionalität von GloTEXund IdxTEX wurde nicht verändert; die von Richard L. Aurbach produzierten jeweiligen User’s Guides enthalten weiterhin die vollständige Beschreibung der Programme. Der Umgang mit Dateien ist in den User’ Guides für Vax-Systeme angegeben, bei Anwendung der Programme unter MS-DOS oder Unix sind die dort üblichen Konventionen anzuwenden. Der nun folgende Teil des Artikels enthält eine kompakte Übersicht zum Einsatzbereich beider Programme. Außerdem werden einige Unzulänglichkeiten von insbesondere IdxTEX erläutert, die allerdings nur bedingt als Probleme anzusehen sind. Zum Abschluß sind dem Artikel ein Beispiel eines GloTEX Glossars und eines IdxTEX Indexverzeichnises angehängt.

2 Regieanweisungen

Leslie Lamport hat im Abschnit 4.5 seines LaTEX User’s Guide & Reference Manual den Gebrauch der LaTEX-Makros \glossary, \makeglossary, \index und \makeindex erläutert. Die Angabe von \makeglossary veranlaßt LaTEX zu einem Dokument file.tex eine Datei file.glo anzulegen, in welcher alle in file.tex mit \glossary{referenz} markierten Textstellen als

     \glossaryentry{referenz}{seite}

aufgelistet sind (seite ist dabei einfach die Nummer der Seite im mit LaTEX formatierten Text, auf der \glossary{referenz} gefunden wurde. Analog erzeugt LaTEX eine Datei file.idx, wenn LaTEX mittels \makeindex dazu aufgefordert wurde. In file.idx befinden sich nach einem LaTEX Durchlauf dann Einträge der Form

     \indexentry{referenz}{seite},

falls auf Seite seite im Dokument \index{referenz} steht.

Die Aufbereitung der durch \makeglossary oder \makeindex von LaTEX erzeugten Zwischendateien zu Textsegmenten, die ihrerseits bei der endgültigen Produktion eines LaTEX-Dokuments mit \input{file} an beliebiger Stelle in das Dokument einzubinden sind, überläßt Leslie Lamport dem Anwender bzw. er verweist auf das Local Guide zur verwendeten TEX-Implementation, welche gegebenenfalls Auskunft über die Verfügbarkeit von für diese Aufgabe geeigneten Programmen Aufschluß gibt.

Neben dem allgemein bekannten Programm Makeindex, einem von Pehong Chen programmierten und relativ ansprechenden Werkzeug zum Formatieren von Indexverzeichnissen, bietet IdxTEX eine alternative Lösung zu dieser Aufgabe. GloTEX ist in seiner Arbeitsweise mit BibTEX zu vergleichen, GloTEX arbeitet jedoch nicht mit Bibliographie- sondern mit Glossar-Datenbanken.

3 GloTEX im Rampenlicht

Ein Glossar zu einem Dokument ist eine erhebliche Bereicherung für einen Fachartikel; es bietet dem fachfremden Leser eine kurze Erläuterung zu den im Dokument verwendeten Akronymen. Autoren, die viele Fachartikel erstellen, benötigen ein automatisiertes Verfahren zur Erstellung von Glossaren, zum Beispiel GloTEX.

GloTEX setzt voraus, daß der Benutzer eine (oder mehrere) Glossar-Datenbank(en) file.gdf (Glossary Definition File) angelegt hat und erzeugt aus den vom Anwender im Dokument benutzten Glossar-Schlüsseln eine Datei, welche zu jedem benutzten Glossar- Schlüssel einen Glossar-Eintrag enthält — falls alle verwendeten Schlüssel auch in der (den) Glossar-Datenbank(en) aufgeführt sind. Nach Aufruf von

     $ glotex file [/STYLE={Article | Report | Special}]\
                    /GLOSSARY=(def1[,def2[,...]])

erzeugt glotex aus file.glo eine Datei file.gls, welche an beliebiger Stelle im Dokument mit \input{file.gls} eingebunden werden kann.

Die angegebene Aufrufsyntax ist nicht unbedingt leicht verständlich, sodaß an dieser Stelle ein Kommentar nötig ist. Das $-Zeichen steht für das Prompt einer Unix-Shell. file ist der Name einer von LaTEX erzeugten Glossar-Referenzliste und wird an GloTEX ohne Kennung übergeben. Die angebbare /STYLE-Option bewirkt eine Formatierung von file.gls für wahlweise den Dokumentstil article, report (bzw. book) oder einem alternativen Stil. Hinter /GLOSSARY kann eine Datei oder auch eine Liste von Dateien angegeben sein (ohne Kennung!), welche die von GloTEX zu konsultierenden Glossar-Datenbanken beinhalten.

Im Article-Stil erscheint das Glossar als eigenständige und numerierte Sektion im Dokument. Im Report-Stil wird das Glossar als nichtnumeriertes Kapitel zum Dokument erstellt. In beiden Fällen wird zum Glossar ein Eintrag im Inhaltsverzeichnis getroffen. Standardmäßig arbeitet glotex im Special-Modus, welcher für die Verwendung der seitens der CR&DS Gruppe der Monsanto Company erstellten Dokumentstile pamphlet, manual oder memo gedacht ist. Diese Dokumentstile stellen die für das theglossary-Environment benötigten Definitionen selbst bereit, welche anderenfalls der Datei file.gls vorangestellt werden.

In file.gls finden sich die im Dokument mit \glossary{Referenz} gekennzeichneten Begriffe als \item[Referenz] wieder, falls in den verwendeten Glossary Definition Files der Eintrag

@entry{Referenz,Schlagwort} oder einfach @entry{Referenz} vorhanden ist. Falls Schlagwort

dort zu einer Referenz angegeben ist, setzt glotex dieses als Bezeichner zu einem Glossar-Eintrag ein. Das Glossar erhält eine Formatierung im infomap-Environment, einer von Monsanto CR&DS erweiterten Version des description-Environment.

Wurde keine /GLOSSARY-Spezifikation getroffen, sucht glotex nach file.gdf. Die Verwendung mehrerer Glossar-Datenbanken bietet den Vorteil, die im Dokument referenzierten Begriffe nach Sachthemen geordnet zu verwalten. glotex zeigt auch eine Liste der nicht aufgelösten Schlüssel, sodaß glotex bei der Erstellung von Glossar-Datenbanken helfen kann. Zu einem glotex-Durchlauf wird dazu eine Statistik am Terminal ausgegeben und gleichzeitig in ein Glossary Log File (Endung .glg) geschrieben.

4 Zwischenspiel für IdxTEX

Gemäß der im User’s Guide to the IdxTEX Program angegebenen Aufrufsyntax

     $ idxtex file [/TOC={ARTICLE | REPORT}]

erzeugt IdxTEX zu file.idx eine Datei file.ind. Die Datei file.ind enthält am Kopf die Definition von \indexhead#1#2#3, also einem Makro mit 3 Parametern. Der dritte Parameter für \indexhead ist die Indexüberschrift, welche einleitend bei einem Wechsel des Anfangsbuchstabens innerhalb des Index gesetzt wird. Die beiden anderen Parameter bestimmen den vertikalen Zeilenvorschub zur Indexüberschrift und zum darauf folgenden Text.

Das Aussehen einer Indexüberschrift ist im Programm idxtex fest einprogrammiert und wird beispielsweise für den Buschstaben A gemäß

     \indexhead{2em}{1em}{--- A ---}

an die aktuelle Position der Ergebnisdatei angefügt. Ob das von R. L. Aurbach vorgegebene Aussehen einer Indexüberschrift dem eigenen Geschmack entspricht ist Ansichtssache — Leslie Lamport hat im Index zum LaTEX User’s Guide beim Wechsel zu einem neuen Anfangsbuchstaben lediglich eine Leerzeile gelassen, und daran hat sich bisher wohl kaum jemand gestört. Die von R. L. Aurbach vorgeschlagene Indexüberschrift hat zudem einen Layout-technischen Nachteil, der im folgenden noch erläutert wird.

Zur Unterstützung von Indexverzeichnissen ist im latex.tex das theindex-Environment definiert. idxtex trägt vor dem ersten \indexhead die Angabe \begin{theindex} ein, sodaß der folgende Text gemäß dem im theindex-Environment vorgesehenen zweispaltigen Seitenaufbau gesetzt wird. Hier kommt der im vorigen Absatz angekündigte Nachteil der Indexüberschrift zum tragen: Die Indexüberschrift nimmt nicht zwingend genau den Platz ein, der von einer ganzzahligen Anzahl von Textzeilen beansprucht wird. Im zweispaltigen Druck sieht die Ausgabe nicht gerade so aus, als wäre sie von einem Profi gesetzt: Nebeneinander liegende Zeilen sind gegeneinander nach oben oder unter versetzt (siehe Indexverzeichnis am Ende des Artikels).

Zulässige Textelemente müssen im theindex-Environment wahlweise mit \item, \subitem oder \subsubitem eingeleitet sein. Damit werden Haupt- und Unterbegriffe gekennzeichnet, die LaTEX durch Einrücken voneinander abhebt. Der Gebrauch von genau drei Ebenen ist auch im Index des LaTEX User’s Guide zu finden. Zusätzlich hat Leslie Lamport dort Texte in verbatim gesetzt, mehrfache Referenzen zusammengefaßt und Seitenbereiche durch ein auf die Seitenzahl der ersten Referenz folgendes ff gekennzeichnet.

Diese Arbeit erledigt IdxTEX automatisch. Ergänzend zu den von Leslie Lamport benutzten Text-Attributen für den im Index enthaltenen Text und auch bezüglich der Darstellung der Seitenzahl erlaubt IdxTEX die Attribute boldface und italic. Seitenzahlen können auch \underline{underlined} dargestellt werden, was den gestalterischen Freiheitsgrad bei der Indexerstellung vervollständigt. Die Darstellung einer Seitenzahl in boldface, italic oder \underline{underlined} erzeugt IdxTEX, falls der Anwender folgende simple Konvention bei \index verwendet: Dem im Index zu erscheinenden Text wird eines der Fluchtsymbole ^, ~ oder _vorangestellt. IdxTEX erkennt diese Fluchtsymbole und stellt daraufhin die benötigten TEX-Makros zusammen.

Damit sieht es zunächst so aus, als ob IdxTEX eigentlich nur die \indexentry Angaben innerhalb einer .idx-Datei alphabetisch sortiert, Fluchtsymbole auswertet, und jedem Wechsel des Anfangsbuchstabens eine Indexüberschrift voranstellt. Zusätzlich kann IdxTEX das Symbol & auswerten, welches Querverweise ermöglicht. Die Angabe von

     \index{Referenz&Querverweis}

veranlaßt IdxTEX zur Angabe von Querverweis unter dem im Index erzeugten Begriff Referenz. Im Index zu diesem Artikel sind zwei mögliche Darstellungen für Querverweise angegeben; die jeweils zugehörige Konvention zur Markierung im Text mit \index befindet sich im IdxTEX User’s Guide.

Bei der Arbeit mit idxtex ist zu berücksichtigen, daß im theindex-Environment \thepagestyle auf plain gesetzt wird. Außerdem erhält der Index für das Inhaltsverzeichnis den Status von section*; der Begriff Index taucht nicht in der TOC-Liste auf. Das Umschalten in den \twocolumn-Modus erzwingt einen Seitenvorschub, der allenfalls unterdrückt wird, wenn \input{file.ind} innerhalb einer \vbox oder dem minipage-Environment eingebettet ist. Wen diese Begleiterscheinungen stören, dem bleibt nur eine seinen Vorstellungen entsprechende Definition von theindex anzulegen.

5 Master-Index

Zu einer Sammlung von Dokumenten enthält ein zusammenfassendes Inhaltsverzeichnis eine sortierte Liste der in \underline{allen} Dokumenten verwendeten Stichworte. Im Masterindex ist zusätzlich zur Seitennummer der Verweis auf das Dokument aufzunehmen, welches das Stichwort beschreibt. IdxTEX unterstützt auch diese Aufgabenstellung.

Zur Vorbereitung muß latex zunächst zu jedem Dokument ein .idx-File anlegen. Anschließend erzeugt der Anwender eine Steuer-Datei mit Endung .mdx, beispielsweise file.mdx. Um ein .idx-File in das Masterindex aufzunehmen, muß die Steuerdatei einen Eintrag der Form

     \usefile{Bezeichner}{idx-file}

enthalten (idx-file ist der Name einer von LaTEX erzeugten .idx-Datei und ist ohne Kennung anzugeben). Die Aufforderung an idxtex, das .mdx-File auszuwerten, wird mit der Aufrufsymtax

     $ idxtex file /MASTER

erreicht. Für alle in idx-file auftretenden \indexentry-Angaben erzeugt idxtex daraufhin ein zusammenfassendes Index und schreibt diese nach file.mnd. Der Verweis auf das jeweilige Dokument, auf welches sich das Stichwort bezieht, wird dabei mit \bullet und anschließender Angabe von Bezeichner eingeleitet, gefolgt von der zugehörigen Seitennummer. Zur Aufnahme des Masterindex in das Dokument ist das so von idxtex produzierte .mnd-File an gewünschter Stelle im Dokument mit \input einzuladen.

6 Wiederholte Gastspiele

Die Aufnahme eines Glossars oder Indexverzeichnisses an beliebiger Stelle im Dokument bewirkt gegebenenfalls eine Änderung der von idxtex eingetragenen Seitenzahlen und denen, auf welchen die Referenzen letztendlich stehen. Abhilfe schafft hier ein mehrfacher Durchlauf von idxtex und latex. Nachstehend sei hier eine kurze Anleitung zur Aufbereitung eines Dokuments mit Glossar und Index skizziert:

• Eintragen aller \glossary und \index Befehle im Dokument an den gewünschten Stellen sowie

     der Makros \makeglossary und \makeindex in der Präambel (zwischen \documentstyle und

  \begin{document}).

• Das Dokument ist anschließend zweimal mit LaTEX zu formatieren, damit erstmal die getroffenen Referenzen auf den zugeordneten Seitenzahlen wiederzufinden sind.

• Aufruf von glotex und idxtex, um aus der .glo- und der .idx-Datei die zugehörige .glsund .ind-Datei zu erzeugen.

• Eintragen der \include-Anweisungen in das Dokument.

• Erneuter Durchlauf von LaTEX, damit die .idx-Datei die nach Einbinden von Glossar und Index gültigen Seitenzahlen enthält.

• Nochmaliger Aufruf von idxtex.

• Abschließender zweimaliger Durchlauf von LaTEX (damit gegebenenfalls auch das Inhaltsverzeichnis die richtige Referenz auf den Index zeigt). Nachstehende Grafik bietet eine strukturierte Übersicht zur Arbeit mit GloTEX und IdxTEX.

           [figure: file.tex; LaTEX; file.gdf; file.idx; file.glo; IdxTEX; GloTEX; file.ind; file.gls; LaTEX; file.dvi]

Im User’s Guide to the GloTEX Program und im User’s Guide to the IdxTEX Program finden sich zu jeder seiner Fähigkeiten Beispiele, welche die hier nur in einer Übersicht zusammengestellten Möglichkeiten beim Einsatz von GloTEX und IdxTEX weitergehend erläutern.

7 Nachwort

Das im letzten Abschnitt aufgeführte Rezept zeigt, daß der Anwender das Zusammenspiel von GloTEX, IdxTEX und LaTEX in weiten Bereichen selbst steuern muß. Das scheint auf den ersten Blick nicht sehr komfortabel; außer vielleicht, wenn der Anwender die nötigen Kommandos über eine Batch-Datei oder ein Shell-Skript steuert. Die Qualität der Ergebnisse ist es aber letzlich, welche den Aufwand rechtfertigt.

Richard L. Aurbach gestattet die Modifikation und den Vertrieb seiner Quellen auf nichtkommerzieller Basis. Interessierte TEX-Freunde sind also herzlich eingeladen, ihre Vorstellungen und Ideen in das Konzept von GloTEX und IdxTEX einfließen zu lassen. Die Koordination etwaiger Tätigkeiten ist dabei sicherlich oberstes Gebot, damit die TEX-Welt nicht in Zukunft mit mehreren verschiedenen GloTEX- und IdxTEX-Dialekten konfrontiert wird.

Modifikationen der Programme reichen nach den in diesem Artikel aufgeführten Problemen allein nicht aus, um mit GloTEX oder eher IdxTEX noch bessere Ergebnisse zu erzielen. Die im GloTEX- und IdxTEX-Programm fest eingebauten Zeichenketten, seien es nun TEX-Makros oder auch die bei Querverweisen verwendeten zusätzlichen Angaben von see, see also oder Symbols (siehe Indexverzeichnis), gehören beispielsweise nicht in das Programm sondern in eine Datei, die als Konfigurationsdatei von idxtex zu benutzen ist. Zusätzlich ist eine Sammlung von TEX-Makros erforderlich, mit denen die nun bekannten Probleme umgangen werden können.

8 Glossar

Glossar- Eintrag Zur Kennzeichnung eines Glossar-Eintrags steht in der Glossar-Datenbank einleitend @entry{Referenz, Schlagwort}. Daran anschließend darf ein beliebig umfangreiches Textsegment als Erläuterung zu dem Schlagwort stehen. Referenz ist der Glossar-Schlüssel, Schlagwort ist die Bezeichnung, welche GloTEX als Akronym im Glossar einsetzt.

Glossar- Schlüssel Der Glossar-Schlüssel ist der Bezeichner, welcher im Dokument als Parameter an \glossary übergeben wird. GloTEX sucht die Glossar-Datenbank(en) nach Glossar-Schlüsseln ab, welche dort als erster Parameter der @entry-Anweisung stehen. Falls GloTEX in der Glossar-Datenbank einen aufzulösenden Glossar-Schlüssel findet, wird der zugehörige Glossar-Eintrag in das Glossar übernommen.

Glossary Definition File Ein Glossary Definition File ist eine Glossar-Datenbank. Das Glossary Definition File besteht aus Glossar-Einträgen. GloTEX kann in einem Durchlauf mehrere Glossar-Datenbanken konsultieren.

Stichwortverzeichnis

— Symbole —

/GLOSSARY, 3; siehe auch

• /STYLE
/MASTER, siehe
• idxtex
/STYLE, 2
@entry, 2

— B —

\begin{document}, 5
\begin{theindex}, 3

— D —

Dateikennung

.gdf, 2–3
.glg, 3

.glo, 1–2, 5

.gls, 2, 5

.idx, 1, 3–5

.ind, 3–5
.mdx, 4
.mnd, 4
description, 2
\documentstyle, 4

— E —

Environment

description, 2
infomap, 2
minipage, 4
theglossary, 2
theindex, 3–4

— G —

\glossary, 1–2, 4
\glossaryentry, 1; siehe auch
• \indexentry

glotex, 2–3, 5; siehe auch

• /STYLE

— I —

idxtex, 3ff

\index, 1–2, \underline{3–4} \indexentry, 4; siehe auch

       • \glossaryentry
\indexhead, 3
\infomap, 2
\input, 2, 4
\item, 2–3

— M —

makeglossary, 1–2, 4
makeindex, 1–2, 4
manual, 2
memo, 2
minipage, siehe

• Environment

— P —

pamphlet, 2
plain, 4

— Q —

Querverweis, 1, 4, 6

— S —

Seitenzahl boldface, 3 italic, 3 \underline{underlined}, \underline{3}

\subitem, 3
\subsubitem, 3

— T —

theglossary, 2
theindex, 3–4
\thepagestyle, 4

Inhaltsverzeichnis

1 Auftakt 1 2 Regieanweisungen 1 3 GloTEX im Rampenlicht 2 4 Zwischenspiel für IdxTEX 3 5 Master-Index 4 6 Wiederholte Gastspiele 4 7 Nachwort 6 8 Glossar 6 Stichwortverzeichnis 7