Quote:
Originally Posted by Josch91
Targor hat hier ein eBook mit mehrstufigem Inhaltsverzeichnis vorgestellt. Da habe ich mir die Frage gestellt, wie dass eigentlich funktioniert.
|
Als erstes musst du mit den <h>-Tags aufpassen, dass die verschieden sind. Bei dem von dir genannten Beispiel sind z.B. "Erstes Buch" .... "Anhang" <h1> Überschriften, während die Paragraphen (also in dem Fall die Kapitel, in §1-§71) als <h2> deklariert sind. Überschriften, die kein Kapitel bekommen sollten, waren in dem Beispiel <h4>, ist zur Beantwortung der Frage aber nicht von Bedeutung.
Wenn du in calibre zur automatischen ERstellung der Kapitel gehst, siehst du hinter "
XPath:" im Normalfall das hier
Code:
//*[re:match(name(), 'h[1-2]') and re:test(., 'chapter|book|section|part', 'i')] | //*[@class = 'chapter']
Das sagt calibre: Mach aus jedem h1-h2 Block einen Vermerk im Inhaltsverzeichnis, wenn darin chapter, book, section oder part vorkommt. Ich für meinen Teil streiche das hier rot markierte weg, da bei mir nur Überschriften als <h1> bzw. <h2> deklariert sind, die wirklich ein Kapitel werden sollen. Ansonsten hätte ich z.B. dort für Schopenhauer § reinschreiben können, da die Kapitel Paragraphen sind.
Code:
//*[re:match(name(), 'h[1-2]') )] | //*[@class = 'chapter']
Das macht aus
jedem <h1> oder <h2> Tag ein Kapitel, bis jetzt noch gleichberechtigte.
Zur Mehrstufigkeit:
Unten siehst du "Ebene
1 Inhaltsverzeichnis" selbiges für
2 und
3.
In das erste Fenster gibst du
Code:
//*[re:match(name(), 'h[1]') )] | //*[@class = 'chapter']
Damit werden
nur Überschriften mit <h1> Tag als Kapitel erster Ordnung erkannt, während
Code:
//*[re:match(name(), 'h[2]') )] | //*[@class = 'chapter']
Im Ebene 2 Inhaltsverzeichnisfenster alle <h2> Überschriften in Kapitel zweiter Ordnung umwandelt.
Zur besseren Veranschaulichung habe ich in meiner geradezu unendlich künstlerischen Begabung (
)
dieses Bild angefertigt