Namensverzeichnis

Wenzel Matiaske^{∗}

1995/05/16

Abstract

The package makendx provides some commands which help to produce a name index. To use makendx you must put the commands \makenameindex and \printnameindex in your document. Put the command \makenameindex in the preamble and the command \printnameindex where you want the name index to appear. Before you use \printnameindex it is useful to change the index name,

e. g. \renewcommand{\indexname}{Nameindex}.

The command \nameindex{name} is provided to produce an index entry. If you want that the name appears not only in the index but also in the text use the command \name{name}. This command provides an option which is useful if the index entry differs from the name in the text, e. g. \name[Knuth, Donald E.]{Knuth}. The name Knuth is printed in the text, the entry “Knuth, Donald E.” appears in your name index. For default, the \name command emphasizes the name. Use the command \fontname{font} to change the font. The ⋆-form \name*{name} suppresses the index entry. After you have run L^{A}TEX on your document call MakeIndex by typing:

makeindex -s nameind.ist  -o myfile.nin myfile.ndx

1 Namensverzeichnisse

Das Paket makendx erleichtert die Erstellung eines Namensverzeichnisses. Die Verwendung des Paketes verlangt die Aufnahme folgender Befehle:

\makenameindex • Der Befehl \makenameindex ist in die Preamble des Dokumentes aufzunehmen.

\printnameindex • Der Befehl \printnameindex ist an der Stelle zu spezifizieren, an der das Namensverzeichnis erscheinen soll. Vor diesem Befehl sollte man die Bezeichnung des Namensverzeichnisses durch die Definition

∗TU-Berlin, FB 14, WW 6, Uhlandstr. 4–5, 10623 Berlin, Tel. 030-314 225 74, email:

mati1831@perform.ww.tu-berlin.de.

     \renewcommand{\indexname}{name} festlegen.

Ferner werden zwei Befehle zur Verfügung gestellt, die die Einträge in das

\nameindex Verzeichnis übernehmen. Der Befehl \nameindex{name} dient in Analogie

zum \index-Befehl der Spezifikation eines Eintrages in das Namensver- \name zeichnis. In der Regel soll der Name auch im laufenden Text erscheinen. In

diesen Fällen ist der Befehl \name{name} nützlich. Der spezifizierte Namenseintrag erscheint im Text und im Namensverzeichnis. Wird ein vom Text abweichender Namenseintrag gewünscht, kann dieser optional spezifiziert werden, beispielsweise: \name[Knuth, Donald E.]{Knuth}. Im laufenden Text erscheint der Name Knuth, im Namensverzeichnis der Eintrag ”Knuth, Donald E.“. Soll der Verzeichniseintrag unterbleiben, ist die Sternform des Kommandos zu wählen; \name*{name} erzeugt nur den Namen im laufenden Text.

\namefont Die Schriftart, in welcher der Name im laufenden Text gesetzt wird, kann mittels des Kommandos \namefont{schriftart} verändert werden, beispielsweise: \namefont{\bfseries}. Voreingestellt ist die Hervorhebung von Namen durch kursiven Satz. In Anschluß an die Formatierung des Dokumentes durch L^{A}TEX erfolgt die Bearbeitung durch MakeIndex. Das Programm ist folgendermaßen aufzurufen:

     makeindex -s nameind.ist  -o myfile.nin myfile.ndx

Bei einer weiteren Formatierung durch L^{A}TEX wird das Namensverzeichnis eingelesen.

2 Implementation

1 ⟨∗package⟩

Das Makro beginnt mit der Terminalausgabe.

 2 \ProvidesPackage{makendx}
 3  [\filedate\space\fileversion\space%
 4  LaTeX2e package (wm)]

Erweiterung des \nofiles-Kommandos.

 5 \def\nofiles{\@fileswfalse

 6 \typeout{No auxiliary output files.^^J}%
 7 \long\def\protected@write##1##2##3{}%
 8 \let\makeindex\relax
 9 \let\makeglossary\relax
10 \let\makenameindex\relax}

\makenameindex Defintion einer Ausgabedatei.

11 \def\makenameindex{%
12  \newwrite\@nameindexfile
13  \immediate\openout\@nameindexfile=\jobname.ndx
14  \def\nameindex{\@bsphack\begingroup
15  \@sanitize
16  \@wrnameindex}\typeout
17  {Writing nameindex file \jobname.ndx }%

18 }

19 \def\@wrnameindex#1{%
20  \protected@write\@nameindexfile{}%
21  {\string\nameindexentry{#1}{\thepage}}%
22  \endgroup
23  \@esphack

24 }

\nameindex In Analogie zum \index-Kommando wird der Befehlt \nameindex definiert.

25 \def\nameindex{\@bsphack\begingroup\@sanitize\@index}

\namefont Befehl zur Einstellung der Schriftart, in der die Namen im laufenden Text erscheinen.

26 \providecommand{\namefont}[1]{\def\name@font{#1}}
27 \def\name@font{}              \namefont{\slshape}

\name Der Befehl setzt den übergebenen Namen im laufenden Text und erzeugt einen Indexeintrag. Die Sternform unterdrückt den Eintrag ins Namensverzeichnis.

28 \def\name{\@ifstar{\@sname[]}{\@ifnextchar [
29 {\@tempswatrue\@name}{\@tempswafalse\@name[]}}}
30 \def\@name[#1]#2{{\name@font #2}%
31 \if@tempswa%
32  \nameindex{#1}%
33 \else%
34  \namenindex{#2}%
35 \fi}
36 \def\@sname[#1]#2{\emph{#2}}

\printnameindex Das Kommando liest die mittels makeindex erzeugte Datei ein.

37 %\newcommand{\printglossary}{\@input@{\jobname.gls}}
38 %\let\theglossary\theindex
39 \newcommand{\printnameindex}{\@input@{\jobname.nin}}
40 \let\thenameindex\theindex

Erweiterung des Inhaltsverzeichnisses.

41 \long\def\addtocontents#1#2{%
42 \protected@write\@auxout
43  {\let\label\@gobble    \let\index\@gobble%
44  \let\glossary\@gobble \let\makenameindex\@gobble}%
45  {\string\@writefile{#1}{#2}}%

46 }

47 ⟨/package⟩

48 ⟨∗ist⟩

49 %% MakeIndex style file makendx.ist
50 %% 1995/10/29  Wenzel Matiaske
51 %%
52 %% keyword for nameindex entry
53 keyword   "\\nameindexentry"
54 %% Begin nameindex entries
55 preamble  "\n \\begin{thenameindex}\n"
56 %% End   nameindex entries
57 postamble "\n \\end{thenameindex}\n"

58 ⟨/ist⟩

3 Treiber-Datei

Der letzte Abschnitt enthält die Treiberdatei zur Erstellung der Dokumentation.

59 ⟨∗driver⟩

60 \typeout{*********************************************}
61 \typeout{* Documentation for LaTeX package `makendx' *}
62 \typeout{*********************************************}

63

64 \documentclass[11pt]{ltxdoc}
65 \usepackage{german}

66

67 \makeatletter
68 \newif\ifsolodoc
69 \@ifundefined{solo}{\solodoctrue}{\solodocfalse}

70 \IndexPrologue{\section*{Index}%
71  \markboth{Index}{Index}%
72  Die kursiv gesetzten Seitenzahlen
73  verweisen auf Beschreibungen der Makros,
74  unterstrichene Programmzeilennummern
75  auf deren Definitionen.}
76 \GlossaryPrologue{\section*{Neuerungen}%
77  \markboth{Neuerungen}{Neuerungen}}
78 \def\saved@macroname{Neuerung}
79 \renewenvironment{theglossary}{%
80  \glossary@prologue%
81  \GlossaryParms \let\item\@idxitem \ignorespaces}%
82 {}
83 \makeatother
84 \setcounter{StandardModuleDepth}{1}
85 %   \OnlyDescription
86 %   \CodelineIndex
87 \CodelineNumbered
88 \RecordChanges
89 \setlength{\parindent}{0pt}
90 \begin{document}
91 \DocInput{makendx.dtx} \newpage \PrintChanges % \newpage \PrintIndex
92 \end{document}
93 \endinput

94 ⟨/driver⟩