Projekt

Allgemein

Profil

Index » Historie » Version 9

Martin Kraetke, 19.03.2021 13:01

1 1 Patrick Schulz
h1. Index
2
3 7 Martin Kraetke
h2. Word
4 1 Patrick Schulz
5 7 Martin Kraetke
Es werden vier miteinander kombinierbare Varianten unterstützt, einen Index in Word zu kodieren:
6
7
h3. (1) Word-Indexfunktion
8
9
Natürlich wird die reguläre Word-Indexfunktion unterstützt, Mit dem Schalter @\f@ kann zudem der Indextyp angegeben werden:
10
11
!index.png!
12
13 9 Martin Kraetke
transpect erstellt das Indexverzeichnis aus den Indexeinträgen. Die Funktion _Index einfügen_ im Word-Ribbon _Referenzen_ dient also nur zur Kontrolle. Hier ist aber eine Anleitung, wie man "für verschiedene Indextypen in Word Indexverzeichnisse erstellen":https://redmine.le-tex.de/projects/transpect-typesetter/wiki/Index/Indexverzeichnis-Typ kann.
14
15 7 Martin Kraetke
h3. (2) Auszeichnen des Indexeintrags per Zeichenformat
16
17 8 Martin Kraetke
Indexeinträge können festgelegt werden, indem Wörter oder Wortgruppen mit einem Zeichenformat (Regex: @[a-z]{1,3}_index_mark@) ausgezeichnet werden. Indexeinträge die bereits mit der Word-Indexfunktion kodiert wurden, werden ignoriert.
18 7 Martin Kraetke
19
h3. (3) Konkordanzliste
20
21
Indexeinträge können anhand einer Konkordanzliste automatisch kodiert werden. Dafür muss eine Liste von Indexeinträgen am Ende des Dokuments eingefügt werden. Überall wo im restlichen Dokument Wörter oder Wortgruppen aus dieser Liste gefunden werden, wird automatisch ein Indexeintrag kodiert. Dafür muss ein Indexeintrag mit dem Absatzformat (Regex: @[a-z]{1,3}_index_list@) verwendet werden. Jeder Eintrag muss in einem separaten Absatz stehen. Indexeinträge die bereits mit der Word-Indexfunktion oder via Zeichenformat index kodiert wurden, werden ignoriert.
22
23
h3. (4) Statischer Index
24
25
Sollen nicht automatisch im Text Fundstellen für Einträge im Index gesucht werden, kann man auch einen statischen Index einfügen. Dafür zeichnet man einfach eine Liste mit Indexeinträgen mit dem Format index_static aus. Seitenzahlen in der Form Eintrag 144, 156, 192 werden dann nur mit der Seite verknüpft, d.h. hier muss man selbst dafür Sorge tragen, dass die Seitenreferenz auch richtig ist!
26
27
h3. Index-Überschriften und Index-Position steuern
28
29
Man kann individuelle Index-Überschriften mit einem Absatzformat (Regex: @[a-z]{1,3}_index_heading@) auszeichnen. Der Index wird an der Stelle gerendert,  wo die Überschrift im Dokument steht.
30
31
Bei Konkordanzlisten und statischen Registern muss die Überschrift über dem Index stehen und das Format (Regex: @[a-z]{1,3}_index_heading@) haben. Sonst funktioniert die Zuordnung nicht. Bei Indexen mit einem Typ muss der Typ als Zusatz am Absatzformat stehen, also z.B. @[a-z]{1,3}_index_heading_Tiere@. Wenn keine Index-Überschrift ausgezeichnet ist, wird ein Standardtext eingefügt (z.B. _Index_) und der Index am Ende des Dokuments eingefügt.
32
33
34
h2. Hub
35
36
Es können alle vier Varianten einen Index zu erstellen miteinander kombiniert werden. Im Hub-Format erhalten Indexeinträge im Text ein @remap@-Attribut, was sie einem bestimmten Index zuordnet:
37
38
<pre><code class="xml">
39
<indexterm remap="e" type="Tiere">
40
  <primary>Wolf</primary>
41
  <secondary>Lamm</secondary>
42
</indexterm></code></pre>
43
44
Für jeden Index wird zudem ein @<index>@-Element erzeugt. Entweder steht das an der Stelle, wo die Indexüberschrift gesetzt wurde, oder am Ende. In dem Überschriftenformat kann man am Ende auch den Indextyp anhängen.
45
46
<pre><code class="xml">
47
<index type="Tiere" remap="e">
48
  <title role="tsindexheadingTiere">Tiere</title>
49
</index>
50
</code></pre>
51
52
Bei statischen Indexen wird davon ausgegangen, dass die Überschrift über den Indexeinträgen steht. Über den Formatzusatz kann hier aber auch der Typ des Indexes angegeben werden. Seitenzahlen werden später auf die Seite verlinkt.
53
54
Für statische Indexe wird schon bei der XML-Konvertierung eine passende @.x_ind@-Datei erzeugt. Bei dynamischen Indexen im Text muss diese erst noch über die @index.sh@ erzeugt werden. Siehe dazu weiter unten [[Index#Aufruf-des-Index-Skripts]].
55
56
<pre><code class="xml">
57
<index remap="c" type="Orte">
58
  <title role="tsindexheadingOrte">Ortsregister</title>
59
  <indexdiv>
60
    <title>B</title>
61
    <indexentry>
62
      <primaryie>Bertelé, <xref xlink:href="page-93"/>, <xref xlink:href="page-94"/></primaryie>
63
    </indexentry>
64
    <!-- (…) -->
65
  </indexdiv>
66
</index>
67
</code></pre>
68
69
70
h2. TeX
71
72
h3. Auszeichnung multipler Indexes und deren Überschriften
73
74 1 Patrick Schulz
Wir verwenden das LaTeX-Paket "index":https://mirror.dogado.de/tex-archive/macros/latex/contrib/index/index.pdf für die Rohindexerzeugung, sowie Xindy zum Generieren des fertigen Registers.
75
76 7 Martin Kraetke
h4. Deklaration der Index-Typen
77 1 Patrick Schulz
78
Das Paket erlaubt mehrere Indexe. Diese werden mit dem \(re)newindex-Befehlen deklariert:
79
<pre><code class="text">
80
\newindex{<typ>}{<endung rohindex>}{<endung fertiger index>}{<Überschrift>}
81
</code></pre>
82
Damit der Skriptaufruf später korrekt funktioniert, müssen die beiden Endungen bei *nicht-default-Typen* dem Schema @<typ>_idx@ (Rohindex) bzw. @<typ>_ind@ (fertiger Index) entsprechen.
83
84
Der Default- oder Hauptindex kriegt das Label @default@, dessen ÜS lässt sich wie folgt überdefinieren:
85
<pre><code class="text">
86
\renewindex{default}{idx}{ind}{Personenregister}
87
</code></pre>
88
Die Index-Einträge für diesen Index werden  mit 
89
<pre><code class="text">
90
\index{<Lemma>}
91
</code></pre>
92
deklariert. Ausgegeben wird der Hauptindex wird mit 
93
<pre><code class="text">
94
\printindex
95
</code></pre>
96
97
Angenommen, wir wollen zusätzlich zu diesem noch ein Ortsverzeichnis, dann müssen wir in der Präambel der tex-Datei einen neuen Index-Typ deklarieren:
98
<pre><code class="text">
99
\newindex{o}{o_idx}{o_ind}{Ortsverzeichnis}
100
</code></pre>
101
Die Index-Einträge würden dann mit 
102
<pre><code class="text">
103
\index[o]{<Term>}
104
</code></pre>
105
deklariert, der Index mit 
106
<pre><code class="text">
107
\printindex[o]
108
</code></pre>
109
ausgegeben.
110
111 7 Martin Kraetke
h4. Aufruf des Index-Skripts
112 1 Patrick Schulz
113
Mit dem optionalen Argument kann angegeben werden, welcher Index generiert werden soll. Wird das optionale Argument weggelassen, wird der Hauptindex erzeugt:
114
<pre><code class="text">
115
./index.sh <tex-Dateiname ohne Endung>
116
</code></pre>
117
Der Aufruf mit optionalen Argument erzeugt den Neben-Index, z.B.
118
<pre><code class="text">
119
./index.sh <tex-Dateiname ohne Endung> o
120
</code></pre>
121 4 Patrick Schulz
würde das Ortsverzeichnis aus o.g. Beispiel erzeugen. Das Skript muss also für jeden Index einzeln aufgerufen werden.
122 3 Patrick Schulz
123 7 Martin Kraetke
h3. Generierung des Index
124 5 Patrick Schulz
125 7 Martin Kraetke
h4. Generieung der Indexe durch TeX
126 3 Patrick Schulz
127
Heißt: Indexeinträge sind mittels \index[<typ>]{<Lemma>} in TeX kodiert.
128
129
<pre><code class="xml">
130
lualatex <tex-Dateiname>.tex     %% Initialer TeX-Lauf; einsammeln der ÜSen
131
lualatex <tex-Dateiname>.tex     %% Erzeugen des IHV; seitenzahlen verschieben sich ggf. 
132
lualatex <tex-Dateiname>.tex     %% Zur Sicherheit... 
133
./index.sh <tex-Dateiname>       %% OHNE Endung!
134 1 Patrick Schulz
./index.sh <tex-Dateiname> <typ> %% Zweites, optionales Argument für Index-Typ anders als default, s.u.
135 3 Patrick Schulz
lualatex  <tex-Dateiname>.tex    %% Index wird erstmalig ausgegeben, ÜS wird geschrieben
136
lualatex  <tex-Dateiname>.tex    %% ÜS(en) für Index(e) in IHV gerendert
137
lualatex  <tex-Dateiname>.tex    %% Zur Sicherheit...
138
</code></pre>
139
140 7 Martin Kraetke
h4. Statische Index-Dateien
141 3 Patrick Schulz
142
Heißt: @<basename>.<typ>_ind@ kommt vom Konverter
143
144
Bei statischen Indexes darf die @index.sh@ *nicht aufgerufen* werden, da sonst die *ind-Dateien überschrieben würden! Alle anderen Schritte sind dieselben; @\(re)newindex{}{}{}{}@ muss auch hier verwendet werden. Zum einen für die ÜSen, und zum anderen damit @\printindex[<typ>]@ keine "unknown index type"-Fehler auswirft.