257 lines
9.5 KiB
Markdown
Raw Permalink Normal View History

2025-07-07 23:25:12 +02:00
# Codesys ST Handbuch
![Buch-Logo](./media/logo/logo.png)
**Version:** [VERSION](VERSION)
## Inhalt
- [Codesys ST Handbuch](#codesys-st-handbuch)
- [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)
- [Schriftarten](#schriftarten)
- [Templates](#templates)
- [PDF](#pdf)
- [eBook (epub)](#ebook-epub)
- [DOCX (Office/ Word)](#docx-office-word)
- [Build](#build)
- [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)
- [Lizenz](#lizenz)
---
## Infos
---
## Struktur
```plaintext
📁 . #
├── 📁 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)
```
---
## 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.
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.
>Voraussetzung:
>Du solltest mit `apt` umgehen können und wissen, dass ein `update` vor dem `install` obligatorisch ist.
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.
- **✅ Pandoc installieren:**
```sh
sudo apt install pandoc
```
- **✅ Empfohlene Installation: TeX Live Full** (ca.8GB)
```sh
sudo apt install texlive-full
```
Wenn NICHT `texlive-full`, dann aber:
- Zusätzlich deutsche Sprache (falls babel fehlt):
```bash
sudo apt install texlive-lang-german
```
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:**
Make oder besser die Anwendung `make` wird benötigt um die Erstellung der Ziele wie PDF zu automatisiern.
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
```
#### Schriftarten
```sh
sudo apt install fonts-noto-color-emoji fonts-firacode
sudo apt install fonts-symbola
```
### Templates
#### PDF
#### eBook (epub)
#### DOCX (Office/ Word)
### Build
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:
```sh
make pdf
make epub
make docx
```
Du musst im Kopfbereich der Datei zwingend ein paar Einstellungen vornehmen:
| Parameter | Beschreibung |
|-------------------------------------------|-------------------------------------------------------------|
| `# === Allgemeine Konfiguration ===` | |
| `TITLE := rust-tutorial` | Dateiname ohne Erweiterung für die Ausgabe nach dem Build |
| `MANUSCRIPT := manuscript` | |
| `MANUSCRIPT := manuscript` | |
| `OUTPUT := build` | |
| `METADATA := metadata/ebook.yaml` | |
| `CSS := styles/ebook.css` | |
| `TEX_EBOOK := styles/ebook-template.tex` | |
| `TEX_PRINT := styles/print-template.tex` | |
| `LOGO := media/logo/logo.png` | Logo für den epub Build |
---
#### 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
```
---
## Lizenz
**(C) 2025 - Adam Skotarczak**
---