blog/content/posts/E-books erstellen schritt f...

234 lines
10 KiB
Plaintext

---
title: "E-books erstellen schritt für schritt"
slug: "e-books-erstellen-schritt-fuer-schritt"
description: "Von nichts zum fertigen E-book mit freier software. Diese anleitung fängt beim ersten wort an, behandelt grundlagen der gestaltung, legt besonderen wert auf barrierefreiheit und endet mit dem fertigen EPUB 3 e-book."
date: 2021-07-10T15:01:09+02:00
type: posts
draft: true
tags:
- E-books
- Calibre
toc: true
---
:note-caption: pass:[<abbr title="Anmerkung">Anm.</abbr>]
:tip-caption: Tipp
:important-caption: Wichtig
:caution-caption: Vorsicht
:warning-caption: Warnung
:url-EPUB: https://de.wikipedia.org/wiki/EPUB
:url-xhtml: https://de.wikibooks.org/wiki/Websiteentwicklung:_XHTML
:url-css: https://de.wikibooks.org/wiki/Websiteentwicklung:_CSS
:url-libreoffice: https://de.libreoffice.org/
:url-gedit: https://wiki.gnome.org/Apps/Gedit
:url-kate: https://kate-editor.org/de/
:url-calibre: https://calibre-ebook.com/
:url-sigil: https://sigil-ebook.com/sigil/
:url-odt: https://de.wikipedia.org/wiki/OpenDocument
:url-asciidoctor-epub3: https://asciidoctor.org/docs/asciidoctor-epub3/
:url-pandoc: https://pandoc.org/
:url-libreoffice-handbuch: https://de.libreoffice.org/get-help/documentation/
:url-regex: https://www.keycdn.com/support/regex-cheatsheet
:url-epub-structure: https://idpf.github.io/epub-vocabs/structure/
:url-aria-roles: https://www.accessiblepublishing.ca/epub-semantic-aria-roles/#ARIA
:url-epub-aria: https://idpf.github.io/epub-guides/epub-aria-authoring/
// Die suchen/ersetzen liste sieht sonst scheußlich aus.
[pass]
<style>li {text-align: left; }</style>
Als ich anfing, e-books zu bauen, fand ich leider keine guten anleitungen, die
mir schritt für schritt erklären, was ich tun soll. Ich musste mir alles mühsam
zusammensuchen. Dies ist der versuch, die gesammelten informationen
übersichtlich an einer stelle zu präsentieren. Diese anleitung fängt beim ersten
wort an, behandelt grundlagen der gestaltung, legt besonderen wert auf
barrierefreiheit (beziehungsweise barrierearmut) und endet mit dem fertigen
link:{url-epub}[EPUB] 3 e-book. Ich freue mich über kritik und
verbesserungsvorschläge.
Vorraussetzungen zum mitmachen sind grundlegende kenntnisse in
link:{url-xhtml}[XHTML] und link:{url-css}[CSS]. Benötigte programme sind ein
textverabeitungsprogramm deiner wahl (zum beispiel
link:{url-libreoffice}[LibreOffice], link:{url-gedit}[gedit] oder
link:{url-kate}[Kate]) und entweder link:{url-calibre}[Calibre] oder
link:{url-sigil}[Sigil]. Alle diese programme sollten über die paketverwaltung
deiner Linux-distribution verfügbar sein. Englischkenntnisse sind von vorteil,
da es weitergehende informationen häufig nur auf englisch gibt.
[NOTE]
Ich konzentriere mich hier auf *LibreOffice* und *Calibre*, andere programme und
methoden behandle ich nur am rande. Auf Desktop-Publishing programme kann ich
leider nicht eingehen, weil ich da noch keine ahnung von habe. LaTeX muss auch
außen vor bleiben, um den rahmen nicht zu sprengen.
== Den text schreiben
Wenn du noch nicht angefangen hast zu schreiben, lohnt es sich über das
dateiformat nachzudenken. Unterschiedliche dateiformate lassen sich
unterschiedlich gut in e-books umzuwandeln. link:{url-odt}[ODT]-dateien (Wie sie
LibreOffice schreibt) eignen sich gut. Aber auch reine textformate wie
AsciiDocfootnote:[Um AsciiDoc in ein e-book umzuwandeln, wird
link:{url-asciidoctor-epub3}[asciidoctor-epub3] benötigt.], Org oder
MarkDownfootnote:[Um Org oder MarkDown in ein e-book zu verwandeln, wird
link:{url-pandoc}[pandoc] benötigt.] sind geeignet. Beispieldateien für
LibreOffice, AsciiDoc, Org und MarkDown finden sich link:#beispieldateien[am
ende des posts].
Achte darauf, die elemente des texts semantisch zu gestalten, also sie mit
maschinenlesbarer bedeutung zu verknüpfen. Das heißt, wenn du eine überschrift
einfügen willst, mache nicht einfach die schrift größer, sondern wähle in
LibreOffice die vorlage „Überschrift 1“ oder „Überschrift 2“ und so
weiter aus. Wenn du eine fußnote einfügen willst, mache das über
menu:Einfügen[Fuß-/Endnote].footnote:[Näheres kannst du im
link:{url-libreoffice-handbuch}[handbuch von LibreOffice] nachlesen.] So weiß
das umwandlungsprogramm später, wie das EPUB strukturiert werden soll.
== Umwandlung in ein E-book
Füge die ODT-datei in Calibre hinzu, indem du menu:Bücher hinzufügen[Füge Bücher
aus einem Ordner hinzu] auswählst. Das menü erreichst du über den kleinen pfeil
neben dem grünen icon ganz links. Nun klicke mit der rechten maustaste auf das
buch und dann menu:Bücher konvertieren[Einzeln konvertieren]. Stelle sicher,
dass als zielformat „EPUB“ ausgewählt ist und ergänze die metadaten auf der
rechten seite. Wenn der umwandlungsprozess abgeschlossen ist, klicke mit der
rechten maustaste auf das buch und wähle menu:Buch bearbeiten[] aus. Klicke im
editor auf menu:Werkzeuge[Buchstrukturen upgraden] und im folgenden dialog auf
btn:[Behalte NCX]. Das ist nötig, um kompatibel mit alten lesegeräten zu
bleiben.
=== XHTML und CSS aufräumen
Lösche alle CSS-dateien. Nun klicke auf das käfer-icon in der werkzeugleiste
oder menu:Werkzeuge[Check book]. Du wirst einen haufen fehlermeldungen wegen den
fehlenden CSS-dateien kriegen. Klicke auf der rechten seite auf „Alle behebbaren
Fehler automatisch zu korrigieren versuchen“. Die verweise auf die CSS-dateien
sind nun entfernt.
Als nächstes löschen wir alle überflüssigen sachen, die Calibre uns in die
XHTML-dateien geklatscht hat. Öffne dazu eine beliebige XHTML-datei. Nun klicke
auf menu:Suchen[Suchen/Ersetzen]. Schreibe in das __Suchen__-feld
`&nbsp;id="calibre_pb_[0-9]+"` (beachte das leerzeichen am anfang) und lasse das
__Ersetzen__-feld leer. Stelle den _Modus_ auf „Regex“ und wähle rechts daneben
„Alle Textdateien“ aus. Nun klicke auf btn:[Alle ersetzen]. Wiederhole das ganze
mit folgenden werten im „Suchen“-feld:
- `&nbsp;class="calibre[0-9]*"`
- `&nbsp;class="p-[^"]+"`
- `<a id="anchor[0-9]+"></a>`
[TIP]
Wenn du mehr über reguläre ausdrücke (auch „regex“ genannt) erfahren möchtest,
schaue mal bei link:{url-regex}[] (englisch) vorbei.
Nun ersetzen wir alle vorkommen von:
- `xmlns:epub="http://www.idpf.org/2007/ops">` mit +
`xmlns:epub="http://www.idpf.org/2007/ops" lang="de" xml:lang="de">`
- `<title>Unbekannt</title>` mit +
`<title>Dein Titel</title>`
- `+<sup><a href="([^"]+)#[^"]+" class="citation" id="[^"]+">([0-9]+)</a></sup>+`
mit +
`<sup id="fn\2-backlink"><a epub:type="noteref" role="doc-noteref" href="\1#fn\2">\2</a></sup>`
- `+<dt id="footnote-([0-9]+)">\[<a href="([^"]+)#[^"]+">←1</a>\]</dt>\s+<dd>(.+)</dd>+` mit +
`+<li epub:type="endnote" id="fn\1">\3<a href="\2#fn\1-backlink">←</a></li>+`
- `<dl class="notes">` mit +
`<section epub:type="endnotes" role="doc-endnotes" class="fussnoten">\n<ol>`
Und dann in der datei mit den „Anmerkungen“ (normalerweise die letzte) das
`</dl>` ganz unten mit `<ol></section>` ersetzen.
// TODO: Erklärungen für ersetzungen.
=== Um handarbeit kommen wir nicht herum
Wir öffnen jetzt die titelseite (üblicherweise `index_split_000.xhtml`) und
geben dem titel und untertitel IDs, damit wir sie per CSS stylen
können. Anschließend packen wir beide in eine _section_ mit
`epub:type="titlepage"` ein.
.Das ganze sollte dann ungefähr so aussehen:
[source,html]
--------------------------------------------------------------------------------
<?xml version='1.0' encoding='utf-8'?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" lang="de" xml:lang="de">
<head>
<title>Das Testbuch</title>
</head>
<body>
<section epub:type="titlepage" aria-label="Titel">
<p id="titel" epub:type="title">Das Testbuch</p>
<p id="untertitel" epub:type="subtitle">Ein Beispieldokument für eine E-book-Anleitung</p>
</section>
</body>
</html>
--------------------------------------------------------------------------------
Die möglichen werte für `epub:type` kannst du in link:{url-epub-structure}[EPUB
3 Structural Semantics Vocabulary] (englisch) nachlesen. Was es mit `aria-label`
auf sich hat, erfährst du in link:{url-aria-roles}[EPUB Semantics, ARIA Roles, &
Metadata] (englisch).
Gehe nun alle dateien nacheinander durch, und gebe jeder überschrift eine
eindeutige ID. Zum beispiel „kapitel1“ für das erste kapitel und „kapitel1_1“
für das erste unterkapitel des ersten kapitels. Nun packe jedes kapitel in eine
_section_ mit `epub:type="chapter"` und `role="doc-chapter"` ein. Das attribut
`aria-labelledby` setzen wir auf die ID der kapitelüberschrift. Das machen wir,
damit assistenztechnologien einen besseren überblick anbieten
könnenfootnote:[link:{url-epub-aria}#sec-hd[EPUB Type to ARIA Role Authoring
Guide, sektion „Supply Labels“ (englisch)]].
.Beispieldatei mit den richtigen _section_-attributen:
[source,html]
--------------------------------------------------------------------------------
<?xml version='1.0' encoding='utf-8'?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" lang="de" xml:lang="de">
<head>
<title>Das Testbuch</title>
</head>
<body>
<section epub:type="chapter" role="doc-chapter" aria-labelledby="kapitel2">
<h1 id="kapitel2">Zweites Kapitel</h1>
<section epub:type="chapter" role="doc-chapter" aria-labelledby="kapitel2_1">
<h2 id="kapitel2_1">Unterkapitel des zweiten Kapitels</h2>
<p>Lorem ipsum dolor sit amet, […]</p>
<section epub:type="chapter" role="doc-chapter" aria-labelledby="kapitel2_1_1">
<h3 id="kapitel2_1_1">Unterkapitel des Unterkapitels des zweiten Kapitels</h3>
<p>Lorem ipsum dolor sit amet, […]</p>
</section>
</section>
</section>
</body>
</html>
--------------------------------------------------------------------------------
[TIP]
Für manche elemente gibt es besser passende ``epub:type``s und/oder
``role``s. Zum beispiel könnte eine einleitung mit „introduction“ und
„doc-introduction“ markiert werden. Siehe die
link:{url-epub-aria}#sec-mappings[EPUB Type to ARIA Role Authoring Guide]
(englisch) für weitergehende informationen.
=== Neues CSS schreiben
== Beispieldateien
- LibreOffice: buch.odt
** Kann mit `ebook-convert buch.odt buch.epub` umgewandelt werden.
- AsciiDoc: buch.adoc
** Kann mit `asciidoctor-epub3 -o buch.epub buch.adoc` umgewandelt werden.
- Org: buch.org
** Kann mit `pandoc -o buch.epub buch.org` umgewandelt werden.
- MarkDown: buch.md
** Kann mit `pandoc -o buch.epub buch.md` umgewandelt werden.
// Local Variables:
// ispell-local-dictionary: "de_DE"
// End: