237 lines
11 KiB
Plaintext
237 lines
11 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
|
|
|
|
:abbr-GUI: pass:[<abbr title="Graphical User Interface = Grafische benutzeroberfläche">GUI</abbr>]
|
|
|
|
: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
|
|
` 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:
|
|
|
|
- ` class="calibre[0-9]*"`
|
|
- ` 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` oder in der {abbr-GUI} von
|
|
Calibre 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:
|