diff --git a/.gitignore b/.gitignore index e262f0d..62530b1 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ INHALT.md .gitkeep desktop.ini +#NOTES.md # Pandoc missfont.log diff --git a/.vscode/cspell.json b/.vscode/cspell.json index dca3a0c..942bfba 100644 --- a/.vscode/cspell.json +++ b/.vscode/cspell.json @@ -43,6 +43,7 @@ "realAscot", "Schottky", "Skotarczak", + "texlive", "tocgen" ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index dd5dda6..2ec4bc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,14 @@ # Changelog - Elektrotechnik Handbuch +- **2025-06-25** + - **Hinzugefügt:** + - [x] Variablen aus Makefile in config.mk ausgelagert + - **2025-05-19** - **Hinzugefügt:** - - basis Konfiguration + - [x] Basis Konfiguration - **Geändert:** - - [X] Verzeichnistiefe über Makefile nun einstellbar (TOCDEPTH) + - [X] Verzeichnistiefe über Makefile nun einstellbar (TOCDEPTH) - **2025-05-18** - initial commit diff --git a/Makefile b/Makefile index 310b57f..b9405b6 100644 --- a/Makefile +++ b/Makefile @@ -1,46 +1,12 @@ # Makefile für Markdown-eBook-Projekt Rust Handbuch mit Pandoc # (C) 2025 - Adam Skotarczak - 19/06/2025 -# === Allgemeine Konfiguration === +# === load Configfile === +include config.mk -# === Titel des eBooks === -TITLE := Vorlage_eBook - -# === Verzeichnis mit Markdown-Dateien === -MANUSCRIPT := manuscript - -# === Ausgabeordner für Builds === -OUTPUT := build - -# === Metadaten für das eBook === -METADATA := metadata/ebook.yaml - -# === 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 +ifndef OUTPUT +$(error Bitte config.mk definieren!) +endif # === Automatische Konfiguration === VERSION := $(shell cat VERSION) @@ -60,13 +26,6 @@ endif MODE ?= prod MD_ALL = $(wildcard $(MANUSCRIPT)/*.md) - -# Dateien auslassen im MODE prod -EXCLUDE_prod := \ - $(MANUSCRIPT)/00_deckblatt.md \ - $(MANUSCRIPT)/00_Deckblatt.md \ - $(MANUSCRIPT)/99_test.md - MD_FILES_prod := $(filter-out $(EXCLUDE_prod), $(MD_ALL)) MD_FILES_dev = $(MD_ALL) @@ -205,7 +164,7 @@ toc: # === Bereinigen der Ausgaben === clean: @rm -rf $(OUTPUT)/* - @echo "🧹 alle Builds unter $(OUTPUT)\ gelöscht." + @echo "🧹 alle Builds unter $(OUTPUT)/ gelöscht." @rm -f $(INDEXFILE).md @echo "🧹 $(INDEXFILE).md gelöscht." diff --git a/README.md b/README.md index 973282b..3c3eab8 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,16 @@ - [eBook (epub)](#ebook-epub) - [DOCX (Office/ Word)](#docx-office-word) - [Build](#build) +- [=== 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-) +- [](#) - [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) @@ -106,14 +116,14 @@ Falls der Build trotzdem scheitert oder du dir den Aufwand sparen möchtest, lad - Zusätzlich deutsche Sprache (falls babel fehlt): ```bash - sudo apt install texlive-lang-german + 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. + Make oder besser die Anwendung `make` wird benötigt um die Erstellung der Ziele wie PDF zu automatisieren. 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 @@ -145,7 +155,8 @@ sudo apt install fonts-symbola ### 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: +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 @@ -153,20 +164,44 @@ Schau mal ins [`Makefile`](./Makefile), dort findest Du einige Kandidaten um aus make docx ``` -Du musst im Kopfbereich der Datei zwingend ein paar Einstellungen vornehmen: +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 +# -| 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 | --- diff --git a/VERSION b/VERSION index 0ea3a94..9325c3c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.2.0 +0.3.0 \ No newline at end of file diff --git a/config.mk b/config.mk new file mode 100644 index 0000000..ce12b5e --- /dev/null +++ b/config.mk @@ -0,0 +1,33 @@ +# === Allgemeine Konfiguration === + +# === Titel des eBooks === +TITLE := Vorlage_eBook +# === Verzeichnis mit Markdown-Dateien === +MANUSCRIPT := manuscript +# === Ausgabeordner für Builds === +OUTPUT := build +# === Metadaten für das eBook === +METADATA := metadata/ebook.yaml +# === 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 +# Dateien auslassen im MODE prod +EXCLUDE_prod := \ + $(MANUSCRIPT)/00_deckblatt.md \ + $(MANUSCRIPT)/00_Deckblatt.md \ + $(MANUSCRIPT)/99_test.md diff --git a/desktop.ini b/desktop.ini deleted file mode 100644 index 71bc8d0..0000000 --- a/desktop.ini +++ /dev/null @@ -1,6 +0,0 @@ -[.ShellClassInfo] -IconResource=.\media\favicon.ico,0 -[ViewState] -Mode= -Vid= -FolderType=Documents diff --git a/gitcopy.bat b/gitcopy.bat deleted file mode 100644 index 4439cf8..0000000 --- a/gitcopy.bat +++ /dev/null @@ -1,160 +0,0 @@ -@echo off -setlocal enabledelayedexpansion -chcp 65001 >nul - -REM Skript, um aus einem Projekt mit git-repo, ein portables .zip zu erstellen -REM -REM (C) 2025 MIT Adam Skotarczak -REM -REM Version: v1.1.2 -REM Github: https://github.com/realAscot/gitcopy -REM ------------------------------------------------------------------- - - -rem --- Git-Verfügbarkeit prüfen --- -where git >nul 2>nul -if errorlevel 1 ( - echo. - echo [⚠️] Git ist nicht installiert oder nicht im PATH. - echo [📦] Bitte installiere Git von https://git-scm.com/download/win - call :show_help - echo. - exit /b 1 -) - -rem --- Git-Version anzeigen --- -for /f "tokens=*" %%i in ('git --version') do set "GIT_VERSION=%%i" - -if defined GIT_VERSION ( - echo. - echo [✅] Gefundene Git-Version: %GIT_VERSION% -) else ( - echo([⚠️] Konnte Git-Version nicht ermitteln. -) - -rem Prüfe auf optionalen Parameter "--debug" -set DEBUG=0 - -if NOT "%~1"=="" ( - if "%~1"=="--debug" ( - set DEBUG=1 - echo [⚠️] Debug-Modus aktiv: Ignoriere offene Commits. - exit /b 0 - ) else if "%~1"=="-d" ( - set DEBUG=1 - echo [⚠️] Debug-Modus aktiv: Ignoriere offene Commits. - exit /b 0 - ) else if "%~1"=="-h" ( - call :show_help - exit /b 0 - ) else if "%~1"=="--help" ( - call :show_help - exit /b 0 - ) else ( - rem Parameter vorhanden aber nicht erkannt. - call :kein_Parameter "%~1" - exit /b 1 - ) -) else ( - call :go "%~1" -) - -exit /b 0 - -:go - -call :generate_timestamp -set ZIP_NAME=projektarchiv-%TIMESTAMP%.zip - -rem ------------------------------------------------------------------- - -pushd %~dp0 - -if %DEBUG%==0 ( - echo [🔍] Prüfe auf uncommitted oder ungetrackte Änderungen... - set "hasChanges=" - for /f "delims=" %%i in ('git status --porcelain') do ( - set "hasChanges=1" - goto :has_changes - ) - echo [✅] Arbeitsverzeichnis ist sauber. -) else ( - echo [⚠️] Prüfschritt übersprungen. -) - -goto :create_zip - -:has_changes -echo. -echo [⚠️] Es sind uncommitted oder ungetrackte Änderungen vorhanden: -echo. -git status --short -echo. -echo [❌] Bitte committe oder stash diese Änderungen, bevor du ein ZIP erstellst. -echo [⚠️] versuche --debug um diese Prüfung zu umgehen aber dann wird das Archiv unvollständig. -echo. -endlocal -pause -exit /b 1 - -:create_zip -echo [💾] Erstelle ZIP-Archiv von HEAD... -git archive --format=zip --output="%ZIP_NAME%" HEAD -if errorlevel 1 ( - echo [⚠️] Fehler beim Erstellen des Archivs. - pause - exit /b 1 -) -echo [✅] Archiv erfolgreich erstellt: %CD%\%ZIP_NAME% -popd -endlocal -pause -exit /b 0 - -:generate_timestamp -rem Erzeugt einen Zeitstempel TTMMJJHHMM sicher und universell -for /f "tokens=1-4 delims=. " %%d in ('echo %DATE%') do ( - set "TAG=0%%d" - set "MONAT=0%%e" - set "JAHR=%%f" -) - -for /f "tokens=1-2 delims=: " %%g in ('echo %TIME%') do ( - set "STUNDE=0%%g" - set "MINUTE=0%%h" -) - -set "TAG=!TAG:~-2!" -set "MONAT=!MONAT:~-2!" -set "JAHR=!JAHR:~-2!" -set "STUNDE=!STUNDE:~-2!" -set "MINUTE=!MINUTE:~-2!" - -set "TIMESTAMP=!TAG!!MONAT!!JAHR!!STUNDE!!MINUTE!" -goto :eof - -:kein_Parameter -echo. -echo [⚠️] Unbekannter Parameter: "%~1" abbruch ... -echo. -call :show_help -exit /b 1 - -:show_help -echo. -echo ℹ️ GitCopy – Hilfe -echo ===================== -echo Erstellt ein ZIP-Archiv vom aktuellen HEAD-Stand des Git-Repositories. -echo. -echo Verwendung: -echo gitcopy.bat [Option] -echo. -echo Optionen: -echo --debug / -d Überspringt die Prüfung auf uncommitted oder ungetrackte Änderungen. -echo -h / --help Zeigt diese Hilfe an. -echo. -endlocal -pause -goto :eof - -endlocal \ No newline at end of file