Projekt

Allgemein

Profil

Index » Historie » Version 17

Marcus Hottenroth, 28.12.2023 12:03

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 17 Marcus Hottenroth
Natürlich wird die reguläre Word-Indexfunktion unterstützt. Mit dem Schalter @\f@ kann zudem der Indextyp angegeben werden:
10 7 Martin Kraetke
11
!index.png!
12
13 17 Marcus Hottenroth
Xerif erstellt das Indexverzeichnis aus den Indexeinträgen selbst. Die Funktion _Index einfügen_ im Word-Ribbon _Referenzen_ mit der man ein Word-Indexverzeichnis erstellen kann, dient also nur zur Kontrolle.
14 1 Patrick Schulz
15 11 Martin Kraetke
Wenn man mit Word ein Indexverzeichnis erstellt, enthält dieses zunächst nicht Indexeinträge, die mit "\f" einen bestimmten Indextyp haben. 
16
Hier ist aber eine Anleitung, wie man für [[Indexverzeichnis-Typ|Indexeinträge mit Typ ein Index-Verzeichnis erstellen]] kann.
17 9 Martin Kraetke
18 7 Martin Kraetke
h3. (2) Auszeichnen des Indexeintrags per Zeichenformat
19
20 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.
21 7 Martin Kraetke
22
h3. (3) Konkordanzliste
23
24
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.
25
26
h3. (4) Statischer Index
27
28
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!
29
30
h3. Index-Überschriften und Index-Position steuern
31
32
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.
33
34
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.
35
36
37
h2. Hub
38
39
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:
40
41
<pre><code class="xml">
42
<indexterm remap="e" type="Tiere">
43
  <primary>Wolf</primary>
44
  <secondary>Lamm</secondary>
45
</indexterm></code></pre>
46
47
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.
48
49
<pre><code class="xml">
50
<index type="Tiere" remap="e">
51
  <title role="tsindexheadingTiere">Tiere</title>
52
</index>
53
</code></pre>
54
55
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.
56
57
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]].
58
59
<pre><code class="xml">
60
<index remap="c" type="Orte">
61
  <title role="tsindexheadingOrte">Ortsregister</title>
62
  <indexdiv>
63
    <title>B</title>
64
    <indexentry>
65
      <primaryie>Bertelé, <xref xlink:href="page-93"/>, <xref xlink:href="page-94"/></primaryie>
66
    </indexentry>
67
    <!-- (…) -->
68
  </indexdiv>
69
</index>
70
</code></pre>
71
72
73
h2. TeX
74
75 17 Marcus Hottenroth
h3. Auszeichnung multipler Indexe und ihrer Überschriften
76 7 Martin Kraetke
77 17 Marcus Hottenroth
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.
78 1 Patrick Schulz
79 17 Marcus Hottenroth
h4. Deklaration der Indextypen
80 1 Patrick Schulz
81 17 Marcus Hottenroth
Das Paket erlaubt mehrere Indexe. Diese werden mit dem @\newindex@- bzw. @\renewindex@-Befehl deklariert:
82 1 Patrick Schulz
<pre><code class="text">
83 17 Marcus Hottenroth
\newindex{<Typ>}{<Endung, Rohindex>}{<Endung, fertiger Index>}{<Überschrift>}
84 1 Patrick Schulz
</code></pre>
85 17 Marcus Hottenroth
Damit der Skriptaufruf später korrekt funktioniert, müssen die beiden Endungen bei *Nichtstandardtypen* dem Schema @<Typ>_idx@ (Rohindex) bzw. @<Typ>_ind@ (fertiger Index) entsprechen.
86 1 Patrick Schulz
87 17 Marcus Hottenroth
Der Standard- oder Hauptindex bekommt das Label @default@, dessen Überschrift sich wie folgt überdefinieren lässt:
88 1 Patrick Schulz
<pre><code class="text">
89
\renewindex{default}{idx}{ind}{Personenregister}
90
</code></pre>
91 17 Marcus Hottenroth
Die Indexeinträge für diesen Index werden  mittels 
92 1 Patrick Schulz
<pre><code class="text">
93
\index{<Lemma>}
94
</code></pre>
95 17 Marcus Hottenroth
deklariert. Ausgegeben wird der Hauptindex über 
96 1 Patrick Schulz
<pre><code class="text">
97
\printindex
98
</code></pre>
99
100 17 Marcus Hottenroth
Soll zusätzlich zum Hauptindex bspw. ein Ortsverzeichnis erstellt werden, muss in der Präambel der TeX-Datei ein neuer Indextyp deklariert werden:
101 1 Patrick Schulz
<pre><code class="text">
102
\newindex{o}{o_idx}{o_ind}{Ortsverzeichnis}
103
</code></pre>
104 17 Marcus Hottenroth
Die Indexeinträge werden dann über 
105 1 Patrick Schulz
<pre><code class="text">
106 17 Marcus Hottenroth
\index[o]{<Begriff>}
107 1 Patrick Schulz
</code></pre>
108 17 Marcus Hottenroth
deklariert, der Index selbst mittels 
109 1 Patrick Schulz
<pre><code class="text">
110
\printindex[o]
111
</code></pre>
112
ausgegeben.
113
114 16 Marcus Hottenroth
h4. Aufruf des Indexskripts
115 1 Patrick Schulz
116
Mit dem optionalen Argument kann angegeben werden, welcher Index generiert werden soll. Wird das optionale Argument weggelassen, wird der Hauptindex erzeugt:
117
<pre><code class="text">
118 16 Marcus Hottenroth
bash ./index.sh <tex-Dateiname ohne Endung>
119 1 Patrick Schulz
</code></pre>
120 16 Marcus Hottenroth
Der Aufruf mit optionalen Argument erzeugt den Nebenindex, z. B.
121 1 Patrick Schulz
<pre><code class="text">
122 16 Marcus Hottenroth
bash ./index.sh <tex-Dateiname ohne Endung> o
123 1 Patrick Schulz
</code></pre>
124 16 Marcus Hottenroth
würde das als <code>o</code> angelegte Ortsverzeichnis aus obigem Beispiel erzeugen. Das Skript muss also für jeden Index einzeln aufgerufen werden.
125 3 Patrick Schulz
126 7 Martin Kraetke
h3. Generierung des Index
127 5 Patrick Schulz
128 14 Marcus Hottenroth
h4. Generierung der Indexe durch TeX
129 3 Patrick Schulz
130 14 Marcus Hottenroth
siehe "Kompilierung":https://redmine.le-tex.de/projects/transpect-typesetter/wiki/Dokumentaufbau#Kompilierung
131 3 Patrick Schulz
132 15 Marcus Hottenroth
h4. Statische Indexdateien
133 3 Patrick Schulz
134 15 Marcus Hottenroth
Im Falle eines statischen Index werden die Einträge über Indexdateien mit dem Namensschema @<basename>.<typ>_ind@ geliefert. Der Kompilationsschritt des Aufrufens von @index.sh@ darf dann nicht ausgeführt werden, da dieser die vorgefertigte(n) Indexdatei(en) überschreiben würde. Auch ein statischer Index erfordert im TeX-Dokument die Verwendung des @\newindex{…}{…}{…}{…}@-Makros in der Präambel, da @\printindex[…]@ sonst einen Fehler wegen eines unbekannten Indextyps erzeugen würde.