View Single Post
Old 05-25-2009, 12:25 AM   #23
Targor
The cake is a lie
Targor ought to be getting tired of karma fortunes by now.Targor ought to be getting tired of karma fortunes by now.Targor ought to be getting tired of karma fortunes by now.Targor ought to be getting tired of karma fortunes by now.Targor ought to be getting tired of karma fortunes by now.Targor ought to be getting tired of karma fortunes by now.Targor ought to be getting tired of karma fortunes by now.Targor ought to be getting tired of karma fortunes by now.Targor ought to be getting tired of karma fortunes by now.Targor ought to be getting tired of karma fortunes by now.Targor ought to be getting tired of karma fortunes by now.
 
Targor's Avatar
 
Posts: 440
Karma: 354408
Join Date: May 2009
Device: PB 360
Quote:
Originally Posted by Josch91 View Post
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 "Ebene1 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

Last edited by Targor; 05-25-2009 at 01:06 AM.
Targor is offline   Reply With Quote