template-ebook/README.md

290 lines
10 KiB
Markdown
Raw Permalink Normal View History

2025-06-21 14:46:00 +02:00
# Vorlage eBook
2025-05-18 19:33:42 +02:00
2025-06-21 14:46:00 +02:00
![Buch-Logo](./media/logo/logo.png)
2025-05-18 19:33:42 +02:00
## Inhalt
2025-06-21 14:46:00 +02:00
- [Vorlage eBook](#vorlage-ebook)
2025-05-18 19:33:42 +02:00
- [Inhalt](#inhalt)
- [Infos](#infos)
- [Struktur](#struktur)
- [Installation und Build](#installation-und-build)
- [Nötige Software für den Build](#nötige-software-für-den-build)
2025-06-21 14:46:00 +02:00
- [Schriftarten](#schriftarten)
2025-05-18 19:33:42 +02:00
- [Templates](#templates)
- [PDF](#pdf)
- [eBook (epub)](#ebook-epub)
- [DOCX (Office/ Word)](#docx-office-word)
- [Build](#build)
2025-06-25 21:29:57 +02:00
- [=== CSS-Datei für das eBook ===](#-css-datei-für-das-ebook-)
- [=== LaTeX-Vorlage für das eBook ===](#-latex-vorlage-für-das-ebook-)
- [=== LaTeX-Vorlage für den Druck ===](#-latex-vorlage-für-den-druck-)
- [=== Logo für das eBook ===](#-logo-für-das-ebook-)
- [=== Pfad zu Hilfswerkzeugen ===](#-pfad-zu-hilfswerkzeugen-)
- [=== LaTeX Geometrie-Einstellungen (z.B. A5-Papier) ===](#-latex-geometrie-einstellungen-zb-a5-papier-)
- [=== Schriftart für LaTeX ===](#-schriftart-für-latex-)
- [=== Python Index für make toc ===](#-python-index-für-make-toc-)
- [=== Verzeichnistiefe im eBook ===](#-verzeichnistiefe-im-ebook-)
- [](#)
2025-06-21 14:46:00 +02:00
- [Erklärung zum Makefile](#erklärung-zum-makefile)
- [Struktur beim schreiben des Buchs](#struktur-beim-schreiben-des-buchs)
- [Schreiben mit VS-Code](#schreiben-mit-vs-code)
- [Projektinterne Tastenkombinationen mit `.vscode/keybindings.json`](#projektinterne-tastenkombinationen-mit-vscodekeybindingsjson)
- [Zweck](#zweck)
- [Einbindung in Visual Studio Code](#einbindung-in-visual-studio-code)
- [🔧 Vorgehen](#-vorgehen)
- [Empfehlung](#empfehlung)
- [Hinweis zur Konsistenz](#hinweis-zur-konsistenz)
- [Nützliche Links und Tipps für den Author](#nützliche-links-und-tipps-für-den-author)
2025-05-18 19:33:42 +02:00
- [Lizenz](#lizenz)
---
## Infos
---
## Struktur
```plaintext
2025-06-21 14:46:00 +02:00
📁 . #
├── 📁 build # Ausgabeordner (wird vom Build-Prozess befüllt)
├── 📁 manuscript #
│ ├── 📄 00_deckblatt.md #
│ ├── 📄 05_vorwort.md #
│ ├── 📄 10_kapitel1.md #
├── 📁 media # Bilder, Grafiken, Diagramme usw. NICHT im Manuskript enthalten sind.
│ ├── 📁 logo #
│ │ ├── 📄 logo.png #
│ └── 📄 favicon.ico #
├── 📁 metadata # Metadaten für eBook, Titelblatt, Author etc
│ ├── 📄 author.txt #
│ └── 📄 ebook.yaml #
├── 📁 styles # Pandoc-Templates, LaTeX-Vorlagen, CSS
│ ├── 📄 ebook-template.tex #
│ ├── 📄 ebook.css #
│ ├── 📄 print-template.tex #
│ └── 📄 reference.docx #
├── 📁 tools #
│ ├── 📄 bmp-emojis.md #
│ ├── 📄 cli-emojis.md #
│ ├── 📄 dev-setup.sh #
│ ├── 📄 gitcopy.bat #
│ └── 📄 tocgen.py #
├── 📄 .gitignore #
├── 📄 CHANGELOG.md #
├── 📄 desktop.ini #
├── 📄 LICENSE # Lizenz für das Buch (z.B. CC-BY)
├── 📄 Makefile # Automatisierter Build-Prozess mit Pandoc etc.
├── 📄 README.md # Diese Datei - Erklärung zum Build des Buchs
└── 📄 VERSION # Paketversion (ohne Zeilenumbruch einzeilig 0.0.0)
2025-05-18 19:33:42 +02:00
```
---
## Installation und Build
### Nötige Software für den Build
**Hinweis: TeX unter Windows?**
Obwohl es grundsätzlich möglich ist, TeX unter Windows zu installieren und auch entsprechende Distributionen wie MiKTeX oder TeX Live für Windows existieren rate ich dringend davon ab, auf diesem Weg zu starten.
2025-06-21 14:46:00 +02:00
Für einen stabilen und reproduzierbaren Build-Prozess empfiehlt sich stattdessen der Einsatz eines Linux-Systems. Wenn du kein dediziertes Linux verwendest, ist das Windows Subsystem for Linux (`WSL`) eine ausgezeichnete Alternative.
2025-05-18 19:33:42 +02:00
2025-06-21 14:46:00 +02:00
>Voraussetzung:
>Du solltest mit `apt` umgehen können und wissen, dass ein `update` vor dem `install` obligatorisch ist.
2025-05-18 19:33:42 +02:00
Falls der Build trotzdem scheitert oder du dir den Aufwand sparen möchtest, lade dir einfach die fertige PDF-Version herunter oder bestelle dir direkt ein gedrucktes Exemplar des Buchs.
2025-06-21 14:46:00 +02:00
- **✅ Pandoc installieren:**
2025-05-18 19:33:42 +02:00
```sh
sudo apt install pandoc
```
2025-06-21 14:46:00 +02:00
- **✅ Empfohlene Installation: TeX Live Full** (ca.8GB)
2025-05-18 19:33:42 +02:00
```sh
sudo apt install texlive-full
```
Wenn NICHT `texlive-full`, dann aber:
- Zusätzlich deutsche Sprache (falls babel fehlt):
```bash
2025-06-25 21:29:57 +02:00
sudo apt install Texlive-lang-german
2025-05-18 19:33:42 +02:00
```
Ich empfehle aber dringend `texlive-full` zu installieren da man erfahrungsgemäss am Anfang auf viele Fehler mit fehlenden Abhängigkeiten stößt wenn man Templates testet.
- **✅ Make installieren:**
2025-06-25 21:29:57 +02:00
Make oder besser die Anwendung `make` wird benötigt um die Erstellung der Ziele wie PDF zu automatisieren.
2025-05-18 19:33:42 +02:00
Dafür liegt auch das vorbereitete Skript `Makefile` im Hauptverzeichnis. Die ist nur optional und man kann es selbstverständlich auch manuell durchführen.
```sh
sudo apt install make
```
Ich verwende Version:
```sh
> make -v
GNU Make 4.3
Built for x86_64-pc-linux-gnu
```
2025-06-21 14:46:00 +02:00
#### Schriftarten
2025-05-18 19:33:42 +02:00
2025-06-21 14:46:00 +02:00
```sh
sudo apt install fonts-noto-color-emoji fonts-firacode
sudo apt install fonts-symbola
```
2025-05-21 22:28:40 +02:00
2025-06-21 14:46:00 +02:00
### Templates
2025-05-18 19:33:42 +02:00
2025-06-21 14:46:00 +02:00
#### PDF
2025-05-21 22:28:40 +02:00
2025-05-18 19:33:42 +02:00
#### eBook (epub)
#### DOCX (Office/ Word)
### Build
2025-06-25 21:29:57 +02:00
Schau mal ins [`Makefile`](./Makefile), dort findest Du einige Kandidaten, um aus dem vorliegenden Markdown Manuskript eine entsprechende Version zu konvertieren.
Es stehen zum aktuellen Zeitpunkt folgende zur Verfügung:
2025-05-18 19:33:42 +02:00
```sh
make pdf
make epub
make docx
```
2025-06-25 21:29:57 +02:00
Du musst in der config.mk zwingend ein paar Einstellungen vornehmen:
: Table with multiline cells
:--------------------------:
| **Variable** | **Funktion** |
|--------------------------------------------|-------------------------------------------|
| `TITLE := Vorlage_eBook` | Titel des eBooks |
| `MANUSCRIPT := manuscript` | Verzeichnis mit den Markdown-Dateien |
| `OUTPUT := build` | Ausgabeordner für Builds |
| `METADATA := metadata/ebook.yaml` | Metadaten für das eBook |
| `EXCLUDE_prod := \`
`$(MANUSCRIPT)/00_deckblatt.md \` | Dateien auslassen im MODE prod |
$(MANUSCRIPT)/00_Deckblatt.md \
$(MANUSCRIPT)/99_test.md
# === CSS-Datei für das eBook ===
CSS := styles/ebook.css
# === LaTeX-Vorlage für das eBook ===
TEX_EBOOK := styles/ebook-template.tex
# === LaTeX-Vorlage für den Druck ===
TEX_PRINT := styles/print-template.tex
# === Logo für das eBook ===
LOGO := media/logo/logo.png
# === Pfad zu Hilfswerkzeugen ===
TOOLPATH := tools
# === LaTeX Geometrie-Einstellungen (z.B. A5-Papier) ===
GEOMETRY := geometry:a4paper
# === Schriftart für LaTeX ===
FONT := Noto Sans CJK SC
# === Python Index für make toc ===
INDEXFILE := INHALT
# === Verzeichnistiefe im eBook ===
TOCDEPTH := 3
#
2025-06-21 14:46:00 +02:00
---
#### Erklärung zum Makefile
---
## Struktur beim schreiben des Buchs
1. Kapitel sind in Dateien die jeweils von 00 aufsteigend sortiert sind. Pandoc baut sie aufsteigend ins Buch.
Kapitel 1 zB in `10_kapitel1.md`. Die vorstehende 10 steht für 1. Sollte zB Kapitel 1.1 hinzukommen,
dann man diese `11_kapitel1.md` benennen. Hoffe es ist verständlich.
2. Bilder sind nach Kapitel und fortlaufender Nummer sowie einem Hinweis benannt.
---
## Schreiben mit VS-Code
### Projektinterne Tastenkombinationen mit `.vscode/keybindings.json`
Zur Vereinfachung und Vereinheitlichung der Bedienung ist in diesem Projekt eine Datei `.vscode/keybindings.json` enthalten. Diese Datei definiert projektweit gültige Tastenkombinationen, die bestimmte Aufgaben in Visual Studio Code auslösen beispielsweise den PDF-Build aus Markdown heraus.
> ⚠ Diese Datei ist **verpflichtender Bestandteil des Projekts** und muss bei jeder lokalen Arbeitskopie vorhanden sein.
---
#### Zweck
Die `keybindings.json` im Projektordner ermöglicht es, projektbezogene Aktionen wie das Erzeugen von PDF-Dokumenten über eine einfache Tastenkombination aufzurufen. Sie ergänzt die zentrale Datei `tasks.json`, in der die ausführbaren Aktionen definiert sind.
Ein typischer Anwendungsfall ist die Kombination mit einem WSL-basierten Build-Befehl:
```json
{
"key": "ctrl+alt+p",
"command": "workbench.action.tasks.runTask",
"args": "Markdown → PDF (Pandoc via WSL)",
"when": "editorLangId == markdown"
}
```
Diese Tastenkombination führt den Build-Task `Markdown → PDF (Pandoc via WSL)` aus, der wiederum intern `wsl make pdf` ausführt.
#### Einbindung in Visual Studio Code
Visual Studio Code erlaubt von Haus aus keine automatische Nutzung Projektinterne `keybindings.json`-Dateien. Daher muss der Inhalt aus `.vscode/keybindings.json` **manuell** in das globale Benutzerprofil übernommen werden:
#### 🔧 Vorgehen
1. Öffne in VS Code die Tastenkombination `Strg + Shift + P`
2. Wähle:
`Preferences: Open Keyboard Shortcuts (JSON)`
3. Kopiere den Inhalt aus der Datei `.vscode/keybindings.json` ins geöffnete Profil
4. Speichern, fertig
> 💬 Alternativ kann die Datei bei einer Neuinstallation auch einfach in den globalen Pfad kopiert werden. Unter Windows befindet sich dieser unter `%APPDATA%\Code\User\keybindings.json`.
#### Empfehlung
Es wird empfohlen, regelmäßig zu prüfen, ob die Projektinterne `keybindings.json` aktualisiert wurde (z.B. durch einen Pull). Neue Funktionen oder Workflows können dort neue Tastenkombinationen erhalten.
#### Hinweis zur Konsistenz
Um eine konsistente Bedienbarkeit zu gewährleisten, sollte **ausschließlich die im Projekt enthaltene `keybindings.json` verwendet werden**. Eigene globale Kürzel sollten nach Möglichkeit vermieden oder dokumentiert angepasst werden.
---
## Nützliche Links und Tipps für den Author
- **Zeichen Testen**
-> <https://r12a.github.io/uniview/>
Oder `hexdump` aus:
```sh
sudo apt install bsdmainutils
```
2025-05-18 19:33:42 +02:00
---
## Lizenz
**(C) 2025 - Adam Skotarczak**
---