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 toc: true
--- ---
:source-highlighter: pygments
:idprefix:
:experimental: true
:toc:
:toclevels: 2
:note-caption: pass:[<abbr title="Anmerkung">Anm.</abbr>] :note-caption: pass:[<abbr title="Anmerkung">Anm.</abbr>]
:tip-caption: Tipp :tip-caption: Tipp
:important-caption: Wichtig :important-caption: Wichtig
@ -35,6 +30,13 @@ toc: true
:url-pandoc: https://pandoc.org/ :url-pandoc: https://pandoc.org/
:url-libreoffice-handbuch: https://de.libreoffice.org/get-help/documentation/ :url-libreoffice-handbuch: https://de.libreoffice.org/get-help/documentation/
:url-regex: https://www.keycdn.com/support/regex-cheatsheet :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 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 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-libreoffice}[LibreOffice], link:{url-gedit}[gedit] oder
link:{url-kate}[Kate]) und entweder link:{url-calibre}[Calibre] oder link:{url-kate}[Kate]) und entweder link:{url-calibre}[Calibre] oder
link:{url-sigil}[Sigil]. Alle diese programme sollten über die paketverwaltung 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] [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 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 leider nicht eingehen, weil ich da noch keine ahnung von habe. LaTeX muss auch
außen vor bleiben, um den rahmen nicht zu sprengen. 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 unterschiedlich gut in e-books umzuwandeln. link:{url-odt}[ODT]-dateien (Wie sie
LibreOffice schreibt) eignen sich gut. Aber auch reine textformate wie LibreOffice schreibt) eignen sich gut. Aber auch reine textformate wie
AsciiDocfootnote:[Um AsciiDoc in ein e-book umzuwandeln, wird AsciiDocfootnote:[Um AsciiDoc in ein e-book umzuwandeln, wird
link:{url-asciidoctor-epub3}[asciidoctor-epub3] benötigt.], Org oder MarkDown link:{url-asciidoctor-epub3}[asciidoctor-epub3] benötigt.], Org oder
sind geeignetfootnote:[Um Org oder MarkDown in ein e-book zu verwandeln, wird MarkDownfootnote:[Um Org oder MarkDown in ein e-book zu verwandeln, wird
link:{url-pandoc}[pandoc] benötigt.]. Beispieldateien für LibreOffice, AsciiDoc, link:{url-pandoc}[pandoc] benötigt.] sind geeignet. Beispieldateien für
Org und MarkDown finden sich link:#beispieldateien[am ende des posts]. 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 Achte darauf, die elemente des texts semantisch zu gestalten, also sie mit
maschinenlesbarer bedeutung zu verknüpfen. Das heißt, wenn du eine überschrift 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 „Alle Textdateien“ aus. Nun klicke auf btn:[Alle ersetzen]. Wiederhole das ganze
mit folgenden werten im „Suchen“-feld: mit folgenden werten im „Suchen“-feld:
* `&nbsp;class="calibre[0-9]*"` - `&nbsp;class="calibre[0-9]*"`
* `&nbsp;class="p-[^"]+"` - `&nbsp;class="p-[^"]+"`
* `<a id="anchor[0-9]+"></a>` - `<a id="anchor[0-9]+"></a>`
[TIP] [TIP]
Wenn du mehr über reguläre ausdrücke (auch „regex“ genannt) erfahren möchtest, Wenn du mehr über reguläre ausdrücke (auch „regex“ genannt) erfahren möchtest,
schaue mal bei link:{url-regex}[] (englisch) vorbei. 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 == Beispieldateien
- LibreOffice: buch.odt - LibreOffice: buch.odt