This commit is contained in:
Adam Skotarczak 2025-06-25 21:29:57 +02:00
parent b4b06cd7e0
commit 415446e688
Signed by: realAscot
GPG Key ID: 4CB9B8D93A96A538
9 changed files with 99 additions and 232 deletions

1
.gitignore vendored
View File

@ -5,6 +5,7 @@
INHALT.md INHALT.md
.gitkeep .gitkeep
desktop.ini desktop.ini
#NOTES.md
# Pandoc # Pandoc
missfont.log missfont.log

1
.vscode/cspell.json vendored
View File

@ -43,6 +43,7 @@
"realAscot", "realAscot",
"Schottky", "Schottky",
"Skotarczak", "Skotarczak",
"texlive",
"tocgen" "tocgen"
] ]
} }

View File

@ -1,10 +1,14 @@
# Changelog - Elektrotechnik Handbuch # Changelog - Elektrotechnik Handbuch
- **2025-06-25**
- **Hinzugefügt:**
- [x] Variablen aus Makefile in config.mk ausgelagert
- **2025-05-19** - **2025-05-19**
- **Hinzugefügt:** - **Hinzugefügt:**
- basis Konfiguration - [x] Basis Konfiguration
- **Geändert:** - **Geändert:**
- [X] Verzeichnistiefe über Makefile nun einstellbar (TOCDEPTH) - [X] Verzeichnistiefe über Makefile nun einstellbar (TOCDEPTH)
- **2025-05-18** - **2025-05-18**
- initial commit - initial commit

View File

@ -1,46 +1,12 @@
# Makefile für Markdown-eBook-Projekt Rust Handbuch mit Pandoc # Makefile für Markdown-eBook-Projekt Rust Handbuch mit Pandoc
# (C) 2025 - Adam Skotarczak - 19/06/2025 # (C) 2025 - Adam Skotarczak - 19/06/2025
# === Allgemeine Konfiguration === # === load Configfile ===
include config.mk
# === Titel des eBooks === ifndef OUTPUT
TITLE := Vorlage_eBook $(error Bitte config.mk definieren!)
endif
# === 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
# === Automatische Konfiguration === # === Automatische Konfiguration ===
VERSION := $(shell cat VERSION) VERSION := $(shell cat VERSION)
@ -60,13 +26,6 @@ endif
MODE ?= prod MODE ?= prod
MD_ALL = $(wildcard $(MANUSCRIPT)/*.md) 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_prod := $(filter-out $(EXCLUDE_prod), $(MD_ALL))
MD_FILES_dev = $(MD_ALL) MD_FILES_dev = $(MD_ALL)
@ -205,7 +164,7 @@ toc:
# === Bereinigen der Ausgaben === # === Bereinigen der Ausgaben ===
clean: clean:
@rm -rf $(OUTPUT)/* @rm -rf $(OUTPUT)/*
@echo "🧹 alle Builds unter $(OUTPUT)\ gelöscht." @echo "🧹 alle Builds unter $(OUTPUT)/ gelöscht."
@rm -f $(INDEXFILE).md @rm -f $(INDEXFILE).md
@echo "🧹 $(INDEXFILE).md gelöscht." @echo "🧹 $(INDEXFILE).md gelöscht."

View File

@ -16,6 +16,16 @@
- [eBook (epub)](#ebook-epub) - [eBook (epub)](#ebook-epub)
- [DOCX (Office/ Word)](#docx-office-word) - [DOCX (Office/ Word)](#docx-office-word)
- [Build](#build) - [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) - [Erklärung zum Makefile](#erklärung-zum-makefile)
- [Struktur beim schreiben des Buchs](#struktur-beim-schreiben-des-buchs) - [Struktur beim schreiben des Buchs](#struktur-beim-schreiben-des-buchs)
- [Schreiben mit VS-Code](#schreiben-mit-vs-code) - [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): - Zusätzlich deutsche Sprache (falls babel fehlt):
```bash ```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. 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 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. 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 ```sh
@ -145,7 +155,8 @@ sudo apt install fonts-symbola
### Build ### 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 ```sh
make pdf make pdf
@ -153,20 +164,44 @@ Schau mal ins [`Makefile`](./Makefile), dort findest Du einige Kandidaten um aus
make docx 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 |
--- ---

View File

@ -1 +1 @@
0.2.0 0.3.0

33
config.mk Normal file
View File

@ -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

View File

@ -1,6 +0,0 @@
[.ShellClassInfo]
IconResource=.\media\favicon.ico,0
[ViewState]
Mode=
Vid=
FolderType=Documents

View File

@ -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