E-books erstellen: Noch mehr aufräumen, sections.
This commit is contained in:
parent
4ca6275948
commit
bf7aee663a
|
@ -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:
|
||||
|
||||
* ` class="calibre[0-9]*"`
|
||||
* ` class="p-[^"]+"`
|
||||
* `<a id="anchor[0-9]+"></a>`
|
||||
- ` 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
|
||||
|
|
Loading…
Reference in New Issue
Block a user