E-books erstellen: Noch mehr aufräumen, sections.

This commit is contained in:
tastytea 2021-07-27 21:25:57 +02:00
parent 4ca6275948
commit bf7aee663a
Signed by: tastytea
GPG Key ID: CFC39497F1B26E07
1 changed files with 113 additions and 14 deletions

View File

@ -11,11 +11,6 @@ tags:
toc: true
---
:source-highlighter: pygments
:idprefix:
:experimental: true
:toc:
:toclevels: 2
:note-caption: pass:[<abbr title="Anmerkung">Anm.</abbr>]
:tip-caption: Tipp
:important-caption: Wichtig
@ -35,6 +30,13 @@ toc: true
: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
@ -51,10 +53,11 @@ 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.
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
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.
@ -66,10 +69,11 @@ 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 MarkDown
sind geeignetfootnote:[Um Org oder MarkDown in ein e-book zu verwandeln, wird
link:{url-pandoc}[pandoc] benötigt.]. Beispieldateien für LibreOffice, AsciiDoc,
Org und MarkDown finden sich link:#beispieldateien[am ende des posts].
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
@ -109,14 +113,109 @@ __Ersetzen__-feld leer. Stelle den _Modus_ auf „Regex“ und wähle rechts dan
„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>`
- `&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