10 Schritte zu deiner EPUB

10 Schritte zu deiner EPUB #2 opf und ncx

1. März 2017
.opf und .ncx

Die beiden kryptischen Dateien .opf und .ncx

In der letzten Woche habe ich euch gezeigt, wie eine einfache Ordnerstruktur in einer EPUB aussieht. Heute werfe ich einen Blick auf die beiden interessanten Dateien content.opf und toc.ncx an, die in dem OEBPS-Ordner liegen. Da er die .opf-Datei enthält, wird er zum Stammordner der EPUB. Alle Verlinkungen innerhalb der EPUB werden immer relativ zu diesem Ordner angegeben.

Was ist jetzt so spannend an der content.opf-Datei?

Wie der Name schon vermuten lässt, geht es hier um den Content=Inhalt der EPUB. In der content.opf sind sämtliche Dateien verzeichnet, die im E-Book vorhanden ist. Und hier ist angegeben, wo sie abgelegt sind und in welcher Reihenfolge sie dargestellt werden sollen.

Öffnet man die content.opf mit einem Texteditor (z.B Notepad, Textwrangler oder in meinem Fall Dreamweaver) erhält man folgendes Bild:

<?xml version="1.0" encoding="UTF-8"?>
 <package xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookID" version="2.0">

<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
 <dc:title>ePub Template</dc:title>
 <dc:creator opf:role="aut">Uwe Carow</dc:creator>
 <dc:publisher>Red Bug Books</dc:publisher>
 <dc:date opf:event="publication">2016-05-21</dc:date>
 <dc:language>de_DE</dc:language>
 <dc:identifier id="BookID" opf:scheme="UUID">urn:isbn:123-4-567890-12-3</dc:identifier>
 <meta name="cover" content="Coverbild.jpeg"/>
 </metadata>

<manifest>
 <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
 <item id="verlagslogo.png" href="images/verlagslogo.png" media-type="image/png"/>
 <item id="coverbild.jpeg" href="images/coverbild.jpeg" media-type="image/jpeg"/>
 <item id="autorenfoto.png" href="images/autorenfoto.png" media-type="image/png"/>
 <item id="redbug-styling.css" href="styles/redbug-styling.css" media-type="text/css"/>
 <item id="sec_001_cover.xhtml" href="text/sec_001_cover.xhtml" media-type="application/xhtml+xml"/>
 <item id="sec_002_titel.xhtml" href="text/sec_002_titel.xhtml" media-type="application/xhtml+xml"/>
 <item id="sec_003_impressum.xhtml" href="text/sec_003_impressum.xhtml" media-type="application/xhtml+xml"/>
 <item id="sec_004_widmung.xhtml" href="text/sec_004_widmung.xhtml" media-type="application/xhtml+xml"/>
 <item id="sec_005_kapitel-1.xhtml" href="text/sec_005_kapitel-1.xhtml" media-type="application/xhtml+xml"/>
 <item id="sec_006_kapitel-2.xhtml" href="text/sec_006_kapitel-2.xhtml" media-type="application/xhtml+xml"/>
 <item id="sec_007_autor.xhtml" href="text/sec_007_autor.xhtml" media-type="application/xhtml+xml"/>
 </manifest>

<spine toc="ncx">
 <itemref idref="sec_001_cover.xhtml"/>
 <itemref idref="sec_002_titel.xhtml"/>
 <itemref idref="sec_003_impressum.xhtml"/>
 <itemref idref="sec_004_widmung.xhtml"/>
 <itemref idref="sec_005_kapitel-1.xhtml"/>
 <itemref idref="sec_006_kapitel-2.xhtml"/>
 <itemref idref="sec_007_autor.xhtml"/>
 </spine>

<guide>
 <reference type="cover" title="Cover" href="text/sec_001_cover.xhtml"/>
 <reference type="text" title="Textanfang" href="text/sec_005_kapitel-1.xhtml"/>
 <reference type="copyright-page" title="Impressum" href="text/sec_003_impressum.xhtml"/>
 </guide>

</package>

Ups, das sieht kompliziert aus? Ist es aber eigentlich nicht. Zunächst einmal sehen wir, es handelt sich um eine XML-Datei. In der zweiten Zeile heißt es version=“2.0″. Das zeigt an, dass es sich um eine EPUB2 handelt. Danach folgen vier Blöcke, die ich der Übersicht halber durch Leerzeilen getrennt habe. metadata, manifest, spine und guide.

Sie werden immer durch sogenannte einleitende und schließende TAGS markiert.TAGS stehen immer in spitzen Klammern. Schließende TAGS werden immer mit einem Schrägstrich / eingeleitet. Also hier z.B. <manifest>   </manifest>. Mehr zu XML- und HTML-Syntax in der nächsten Woche, in der ich die HTML-Seiten eines E-Books ansehen werde.

metadata

Unter metadata hat man – wer hätte es gedacht – die Möglichkeit, Angaben zu den Metadaten des Buches zu machen. Das sind bei einem Buch üblicherweise Angaben zum Autor, zum Verlag, zu anderen Mitwirkenden, der ISBN etc. Folgende Elemente stehen optional zur Verfügung.

dc.title   — dc.creator — dc.subject — dc.description — dc.publisher — 

dc.contributors — dc.date — dc.type — dc.format — dc.identifier — 

dc.source — dc.language — dc.relation — dc.coverage — dc.rights

Wichtig: die Angabe, die man in der Zeile dc.title macht, wird auf einigen E-Readern am oberen Rand eingeblendet. Da ich oft vor der Veröffentlichung mehrere Testdurchläufe mit unterschiedlichen Versionen auf verschiedenen E-Readern mache, hat es sich als hilfreich erwiesen, in der Titelzeile Versionsnummern anzugeben. Das hat den Vorteil, dass die Reader jede Version als völlig neues Buch behandeln und so Markierungen und Notizen, die ich mir während der Testphase im E-Book gemacht habe, nicht in die nächste Version übernommen werden.

Kleiner Tipp: Fall man einem geschätzten Leser eine Freude machen will, kann man hinter dem Titel, auch für xy einsetzen. Oder man kann dort bestimmte Exemplare als Rezensionsexemplare auszeichnen.

.opf und .ncx   

 

manifest

Im Abschnitt manifest werden sämtliche Dateien aufgeführt, die im EPUB-Ordner vorhanden sind. Jede Datei bekommt eine item id, die sinnvollerweise der Dateiname ist. Dann wird auf die Stelle verwiesen, an der die Datei innerhalb der Ordnerhierarchie liegt, und es wird angegeben, um welche Art von Datei es sich handelt.

Die Zeile für das Verlagslogo: <item id=“verlagslogo.png“ href=“images/verlagslogo.png“ media-type=“image/png“/> gibt also an, dass das Bild des Verlagslogos die id „verlagslogo.png“ hat. Dass sie sich im Ordner images auf der gleichen Ebene befindet und es sich dabei um ein Bild handelt – und zwar im .png-Format.

Das gleiche gilt für die anderen Bilder, die CSS-Datei, alle Buchabschnitte etc. Wichtig ist hier auf die richtige Schreibweise – z.B. auf Groß- und Kleinbuchstaben – zu achten. Der Ordner images ist etwas anderes als der Ordner Images, die Dateiendung .jpeg ist etwas anderes als .jpg.

spine

Im Abschnitt spine wird die Reihenfolge angegeben, in der die XHTML-Dateien vom E-Reader aufgerufen werden sollen. In unserem Fall also zuerst die Datei mit dem Cover, dann die mit der Titelseite, dann das Impressum usw. Natürlich kann die Reihenfolge auch anders sein. Man kann das Impressum nach hinten stellen, ein Vorwort voranstellen, eine Danksagung einfügen, Hinweise auf weitere Bücher etc.

guide

Im letzten Abschnitt kann man dem E-Reader Hinweise geben, wo er bestimmte wichtig Dateien des E-Books findet. Hier etwa die Coverseite, die Seite auf der der Buchtext beginnt und das Impressum.

Die toc.ncx Datei oder das interaktive Inhaltsverzeichnis

Oft findet man in E-Books Inhaltsverzeichnisse. Wenn man sich für ein solches Inhaltsverzeichnis entscheidet, wird es als XHTML-Datei am Anfang oder am Ende des Buches eingefügt. Wie so ein Inhaltsverzeichnis aufgebaut ist, und wie es im Buch verlinkt wird, erkläre ich in einem späteren Beitrag.

Ob man einem Roman ein Inhaltsverzeichnis mit den einzelnen Kapitelnummern oder Kapitelüberschriften voranstellen möchte oder nicht, ist aus meiner Sicht Geschmackssache. In einem Sachbuch, das gegebenenfalls aus mehreren Teilen, Kapiteln, Paragraphen und Absätzen besteht und das nicht darauf angelegt ist, dass man es von vorn nach hinten durchliest, macht das mehr Sinn.

Neben diesem  optionalem Inhaltsverzeichnis gibt es aber in jedem E-Book ein Inhaltsverzeichnis, das von jedem Punkt innerhalb des Buches erreicht werden kann. Zum Beispiel auf meinem Kindle über den Gehe-zu-Button.

 

   

Dieses Inhaltsverzeichnis ist also nicht Teil des Textkörpers. Es wird gesteuert von der toc.ncx. 

Und so sieht sie aus:

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN"
 "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd">

<ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
 <head>
 <meta name="dtb:uid" content="bb87a644-bf8d-44ef-95a5-b180282ea679"/>
 <meta name="dtb:depth" content="1"/>
 <meta name="dtb:totalPageCount" content="0"/>
 <meta name="dtb:maxPageNumber" content="0"/>
 </head>
 <docTitle>
 <text>ePub-template</text>
 </docTitle>
 
<navMap>
<navPoint id="navPoint-1" playOrder="1">
 <navLabel>
 <text></text>
 </navLabel>
 <content src="text/sec_001_cover.xhtml"/>
 </navPoint>

<navPoint id="navPoint-2" playOrder="2">
 <navLabel>
 <text>Titel</text>
 </navLabel>
 <content src="text/sec_002_titel.xhtml"/>
 </navPoint>

<navPoint id="navPoint-3" playOrder="3">
 <navLabel>
 <text>Impressum</text>
 </navLabel>
 <content src="text/sec_003_impressum.xhtml#toc-anchor"/>
 </navPoint>

<navPoint id="navPoint-4" playOrder="4">
 <navLabel>
 <text>Widmung</text>
 </navLabel>
 <content src="text/sec_004_widmung.xhtml"/>
 </navPoint>

<navPoint id="navPoint-5" playOrder="5">
 <navLabel>
 <text>Kapitel 1</text>
 </navLabel>
 <content src="text/sec_005_kapitel-1.xhtml"/>
 </navPoint>

<navPoint id="navPoint-6" playOrder="6">
 <navLabel>
 <text>Kapitel 2</text>
 </navLabel>
 <content src="text/sec_006_kapitel-2.xhtml"/>
 </navPoint>

<navPoint id="navPoint-7" playOrder="7">
 <navLabel>
 <text>Über den Autor</text>
 </navLabel>
 <content src="text/sec_007_autor.xhtml"/>
 </navPoint>

</navMap>
</ncx>

Wir sehen wieder in den ersten Zeilen: Hallo ich bin eine XML-Datei und zwar ein .ncx (navigation control file)

Das eigentliche Inhaltsverzeichnis liegt in dem <navMap> Abschnitt. Für jeden Abschnitt des Buches gibt es einen <navPoint> mit eigener id und der playOrder. Also der Angabe, an welcher Reihenfolge die Abschnitte des Buches angeordnet sind.

 <navPoint id="navPoint-4" playOrder="4">
  <navLabel>
   <text>Widmung</text>
  </navLabel>
  <content src="text/sec_004_widmung.xhtml"/>
 </navPoint>
 

Der navPoint oben mit der id=“navPoint-4″ verweist hier auf die Datei, die die Widmung enthält. Sie erscheint an (playOrder=“4″)  an vierter Stelle in dem E-Book. (nach dem Cover, dem Titel und dem Impressum). Der Text zwischen den text-TAGS, also die Kapitelüberschrift, erscheint auf dem Display des Readers. In diesem Fall steht dort: Widmung.  

Die Zeile content src bezeichnet die Stelle, an der die entsprechende HTML-Datei – in diesem Fall die Seite mit der Widmung – in der Ordnerhierarchie liegt.

Kleiner Tipp: Schon Minifehler in diesen Dateien führen dazu, dass die EPUB nicht mehr funktioniert und nicht mehr valide ist. Mit etwas Erfahrung lassen sich solche Fehler aber oft leicht beheben. Zur Fehlersuche und Validierung von EPUB kommt in den nächsten Wochen ein extra Beitrag.

In der nächsten Woche werde ich euch aber erst einmal die eigentlichen Buchseiten zeigen.

Bis dahin eine gute Woche!

Uwe

#rbpub #redbugwriting

You Might Also Like

No Comments

Leave a Reply