Compare commits

...

48 Commits

Author SHA1 Message Date
Frederik Beimgraben
c3e7877f8b
Merge pull request #1 from frederikbeimgraben/dependabot/github_actions/actions/checkout-5
ci(deps): bump actions/checkout from 4 to 5
2025-11-04 13:35:08 +01:00
Frederik Beimgraben
519be27037
Merge pull request #2 from frederikbeimgraben/dependabot/github_actions/softprops/action-gh-release-2
ci(deps): bump softprops/action-gh-release from 1 to 2
2025-11-04 13:34:54 +01:00
Frederik Beimgraben
4513948e68
Merge pull request #3 from frederikbeimgraben/dependabot/github_actions/actions/upload-artifact-5
ci(deps): bump actions/upload-artifact from 4 to 5
2025-11-04 13:34:43 +01:00
Frederik Beimgraben
42db939502
Merge pull request #4 from jkb018/patch-1
fix/docs[README,.env]: Add .env Instructions and add it to gitignore
2025-11-04 13:31:13 +01:00
Jakob Frey
2cde8a890a
Ignore environment file in .gitignore
Add .env to .gitignore to ignore environment files
2025-11-04 13:16:38 +01:00
Jakob Frey
e4b42696b7
Update README with .env setup instructions
Added instructions for setting up the .env file.
2025-11-04 13:15:10 +01:00
9181409f3d fix[Footer]: move up 3pt 2025-11-03 14:39:53 +01:00
25bf72f0a6 fit[Footer]: move to the right again" 2025-11-03 00:53:10 +01:00
e260a28e8d feat[acronyms]: Add \acr shorthand for \acrlong 2025-11-02 23:14:04 +01:00
27f642f47f fix[Footer]: Move footer[L] to right 2025-11-02 22:31:33 +01:00
1e44cc1ba1 fix[docker]: fix eventual problems with SELinux 2025-11-02 22:08:23 +01:00
ea83231bb9 fix[Titlepage]: Fix spacing between Abstract Heading and Body 2025-11-02 16:53:35 +01:00
9e3d8e224b fix[Content/3.2]: Fix Description 2025-10-31 15:42:19 +01:00
18e7bfae6a Merge branch 'main' of https://github.com/frederikbeimgraben/HSRT-Report 2025-10-31 15:07:27 +01:00
ae388e3e84 Add .cache to .gitignore 2025-10-31 15:07:19 +01:00
Frederik Beimgraben
7fdef6003f
Update README.md 2025-10-31 15:03:28 +01:00
8c03c59014 Change title page data 2025-10-31 14:36:17 +01:00
e368f9f814 fix: self describing content 2025-10-31 13:37:59 +01:00
22a6ba51d4 feat: Correct UID in container (same as folder) 2025-10-31 00:46:26 +01:00
91ef8ad136 fix: Remove ListOfListings due to formatting inconsistency 2025-10-30 23:13:21 +01:00
c3666e9b09 fix: Description of header and footer 2025-10-30 22:24:53 +01:00
c5dc777e8f fix: Fonts listed in self description 2025-10-30 21:56:16 +01:00
41a9f442f4 fix: README 2025-10-30 21:53:15 +01:00
dependabot[bot]
d86c616a9b
ci(deps): bump softprops/action-gh-release from 1 to 2
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 1 to 2.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: '2'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-30 20:51:09 +00:00
c0d2ecae0c fix: Actions file nameing 2025-10-30 21:49:59 +01:00
7aa72ec2cf fix: Actions cleanup properly 2025-10-30 21:45:57 +01:00
dependabot[bot]
897755b123
ci(deps): bump actions/upload-artifact from 4 to 5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-30 20:45:40 +00:00
dependabot[bot]
6888e60f0d
ci(deps): bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-30 20:45:05 +00:00
a8d3ea94ae fix: Actions cleanup 2025-10-30 21:44:15 +01:00
88ee385681 fix: Page numbering method 2025-10-30 21:37:46 +01:00
7d895bb63c fix: README 2025-10-30 21:29:15 +01:00
00134d66f4 fix/comment[.gitignore] 2025-10-30 21:26:47 +01:00
7dccd3e752 fix: Page numbers in glossary 2025-10-30 21:26:20 +01:00
5da35271ae fix: Adjust self describing content 2025-10-30 21:23:49 +01:00
024ae1f172 fix: Broken ZED autocompile 2025-10-30 20:58:27 +01:00
5fc289c096 feat: Editor configs 2025-10-30 20:54:29 +01:00
9db24ee9b6 fix[06]: Remove listing references 2025-10-30 20:21:58 +01:00
b4a80c8510 fix: Make whole citation paranth. content clickable 2025-10-30 19:59:46 +01:00
64ec249fc2 Fix demo chapter 2025-10-30 19:48:07 +01:00
9beb7bbbb5 Fix demo chapter 2025-10-30 19:36:37 +01:00
497d9b151e Update build config 2025-10-30 19:35:19 +01:00
274dfa3a0e Merge branch 'main' of https://github.com/frederikbeimgraben/HSRT-Report 2025-10-30 19:30:09 +01:00
d6c4386f52 adjust footer design 2025-10-30 19:29:56 +01:00
0a990f39ca fix: Ignore chapter backups 2025-10-30 19:10:33 +01:00
Frederik Beimgraben
9c0119d940
Add flow to automatically build using Makefile 2025-10-30 18:59:56 +01:00
31cae0b55b fix: Readme links in ToC 2025-10-30 18:58:13 +01:00
dc9f46ea3a fix: Readme remove deprecated section 2025-10-30 18:56:36 +01:00
2184bd5118 fix: Readme AI-Slop 2025-10-30 18:54:17 +01:00
31 changed files with 1614 additions and 232 deletions

15
.env.example Normal file
View File

@ -0,0 +1,15 @@
# Docker Environment Configuration Example
# =========================================
# Copy this file to .env and adjust values as needed
# User ID and Group ID for the Docker container user
# These should match your local user to avoid permission issues
# You can get your current values by running:
# echo "HOST_UID=$(id -u)"
# echo "HOST_GID=$(id -g)"
HOST_UID=1000
HOST_GID=1000
# Note: When using 'make docker-build', these values are automatically
# detected and passed to docker-compose, so you don't need a .env file.
# This file is only needed if you run docker-compose directly.

49
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,49 @@
# ==============================================================================
# Dependabot Configuration
# ==============================================================================
# Description: Automated dependency updates for GitHub Actions
# Documentation: https://docs.github.com/en/code-security/dependabot
# ==============================================================================
version: 2
updates:
# ------------------------------------------------------------------------------
# GitHub Actions Updates
# ------------------------------------------------------------------------------
# Keep GitHub Actions up to date automatically
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "06:00"
commit-message:
prefix: "ci"
include: "scope"
labels:
- "dependencies"
- "github-actions"
assignees:
- "frederikbeimgraben"
open-pull-requests-limit: 5
# ------------------------------------------------------------------------------
# Docker Updates
# ------------------------------------------------------------------------------
# Keep Docker base images up to date
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "monthly"
day: "monday"
time: "06:00"
commit-message:
prefix: "docker"
include: "scope"
labels:
- "dependencies"
- "docker"
assignees:
- "frederikbeimgraben"
open-pull-requests-limit: 3

93
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,93 @@
name: Create Release with PDF
on:
push:
tags:
- "v*.*.*" # Trigger on version tags like v1.0.0
- "release-*" # Trigger on release tags like release-2024-10
jobs:
build-and-release:
runs-on: ubuntu-latest
permissions:
contents: write # Required for creating releases
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Extract version from tag
id: version
run: |
echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
echo "DATE=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Build document with Docker
run: make docker-build
- name: Verify PDF creation
run: |
if [ ! -f Output/Main.pdf ]; then
echo "Error: PDF was not created"
exit 1
fi
echo "PDF successfully created"
echo "Size: $(du -h Output/Main.pdf)"
- name: Rename PDF with version
run: |
cp Output/Main.pdf "Report_${{ steps.version.outputs.VERSION }}.pdf"
- name: Generate release notes
id: release_notes
run: |
cat << EOF > release_notes.md
## Report Document Release
**Version:** ${{ steps.version.outputs.VERSION }}
**Date:** ${{ steps.version.outputs.DATE }}
### 📄 Document Information
- **Template:** HSRTReport LaTeX Template
- **Institution:** University of Applied Sciences Reutlingen
- **Build System:** Docker-based compilation
### 📦 Included Files
- \`Report_${{ steps.version.outputs.VERSION }}.pdf\` - The compiled document
### 🔧 Build Information
- Built with XeLaTeX
- Bibliography processed with Biber
- Glossaries and acronyms included
### 📝 Recent Changes
Please see the commit history for detailed changes.
---
*This release was automatically generated by GitHub Actions*
EOF
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: |
Report_${{ steps.version.outputs.VERSION }}.pdf
Output/Main.pdf
name: Release ${{ steps.version.outputs.VERSION }}
body_path: release_notes.md
draft: false
prerelease: false
generate_release_notes: true # Append auto-generated notes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload PDF as artifact (backup)
uses: actions/upload-artifact@v5
with:
name: Report-${{ steps.version.outputs.VERSION }}
path: |
Report_${{ steps.version.outputs.VERSION }}.pdf
Output/Main.pdf
retention-days: 90
if-no-files-found: error

32
.gitignore vendored
View File

@ -1,5 +1,6 @@
# Ignore build/
build/*
# Ignore Build/ and Output/
Build/
Output/
*.log
*.aux
*.out
@ -15,7 +16,6 @@ build/*
*.lot
*.xdv
*.bak
svg-inkscape/
*.tex~
*.bib~*
*.nav
@ -32,24 +32,14 @@ svg-inkscape/
*.alg
*.acr
*.acn
Main.pdf
*.pdf
*.lol
# Python
*.pyc
__pycache__/
*.egg-info/
*.egg
*.pyo
*.pyd
*.pyc
# Ignore chapter backups and Temporary PDF files from Inkscape
.chapter-backups/
svg-inkscape/
.config/
.cache/
.env/
.venv/
env/
venv/
Build/
Output/
.vscode/
# Ignore environment file
.env

103
.vscode/README.md vendored Normal file
View File

@ -0,0 +1,103 @@
# VSCode Configuration for LaTeX Project
This directory contains Visual Studio Code workspace settings optimized for LaTeX development with this project.
## Features
### LaTeX Workshop Integration
- Configured to use `make` command for building
- Multiple build recipes available:
- `make` - Standard build using Docker
- `make clean` - Clean auxiliary files
- `make full` - Clean and full rebuild
### Key Settings
- **Auto-build disabled** - Build manually with `Ctrl+Shift+B` (Windows/Linux) or `Cmd+Shift+B` (Mac)
- **PDF viewer** - Opens in a new tab within VSCode
- **Output directory** - Configured to use `Output/` folder
- **Auto-clean** - Cleans auxiliary files after successful build
## Usage
### Building the Document
1. **Quick Build**: Press `Ctrl+Shift+B` / `Cmd+Shift+B`
2. **Build Menu**: Press `Ctrl+Alt+B` / `Cmd+Alt+B` to see all build options
3. **Command Palette**: Press `F1` and type "LaTeX Workshop: Build"
### Viewing the PDF
- After building, the PDF will automatically open in a new tab
- Use `Ctrl+Alt+V` / `Cmd+Alt+V` to manually open the PDF
### Tasks
Additional tasks are available through the Command Palette (`F1`):
- `Tasks: Run Task` shows all available make commands:
- Build LaTeX Document
- Clean Build Files
- Full Build
- View PDF
- Docker Build/Clean
- List Chapters
- Word Count
- Check Prerequisites
## Recommended Extensions
The following extensions are recommended for the best experience:
- **LaTeX Workshop** - Main LaTeX support (required)
- **Code Spell Checker** + German dictionary - Spell checking
- **PDF Viewer** - Enhanced PDF viewing
- **GitLens** - Git integration
- **Docker** - Docker support for containerized builds
Install all recommended extensions:
1. Open Extensions sidebar (`Ctrl+Shift+X` / `Cmd+Shift+X`)
2. Filter by `@recommended`
3. Click "Install Workspace Recommended Extensions"
## Customization
To override any settings for your personal preferences, create a `.vscode/settings.local.json` file (git-ignored) or modify your user settings.
### Enable Auto-Build on Save
If you want to enable automatic building when saving `.tex` files, add this to your user settings:
```json
{
"latex-workshop.latex.autoBuild.run": "onSave"
}
```
### Change PDF Viewer
To use an external PDF viewer instead of the built-in one:
```json
{
"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.external.viewer.command": "your-pdf-viewer",
"latex-workshop.view.pdf.external.viewer.args": ["%PDF%"]
}
```
## Troubleshooting
### Build Fails
1. Ensure Docker is running: `make docker-info`
2. Check prerequisites: `make check`
3. Try a clean build: `make full`
### PDF Doesn't Open
- Check if the PDF was created in `Output/Main.pdf`
- Try manually opening: `make view`
### Extensions Not Working
1. Ensure LaTeX Workshop extension is installed and enabled
2. Reload VSCode window: `F1` → "Developer: Reload Window"
3. Check extension output: View → Output → Select "LaTeX Workshop"
## File Exclusions
The configuration hides common LaTeX auxiliary files from the file explorer:
- `*.aux`, `*.log`, `*.synctex.gz`
- `*.fdb_latexmk`, `*.fls`
- `*.out`, `*.toc`, `*.bbl`, `*.blg`
- Build directory contents (can be shown if needed)
To show hidden files temporarily, use the file explorer's filter settings.

26
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,26 @@
{
// Recommended extensions for LaTeX development
"recommendations": [
// LaTeX Workshop - Main LaTeX extension
"james-yu.latex-workshop",
// PDF viewer
"tomoki1207.pdf",
// Spell checking
"streetsidesoftware.code-spell-checker",
"streetsidesoftware.code-spell-checker-german",
// File icons
"vscode-icons-team.vscode-icons",
// Docker support (for building with Docker)
"ms-azuretools.vscode-docker",
// Path intellisense
"christian-kohler.path-intellisense",
// TODO highlighting
"gruntfuggly.todo-tree"
]
}

114
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,114 @@
{
// LaTeX Workshop Configuration
"latex-workshop.latex.recipes": [
{
"name": "make",
"tools": ["make"]
},
{
"name": "make clean",
"tools": ["make-clean"]
},
{
"name": "make full",
"tools": ["make-full"]
}
],
"latex-workshop.latex.tools": [
{
"name": "make",
"command": "make",
"args": [],
"env": {},
"cwd": "${workspaceFolder}"
},
{
"name": "make-clean",
"command": "make",
"args": ["clean"],
"env": {},
"cwd": "${workspaceFolder}"
},
{
"name": "make-full",
"command": "make",
"args": ["full"],
"env": {},
"cwd": "${workspaceFolder}"
}
],
// Set default recipe
"latex-workshop.latex.recipe.default": "first",
// Use external build command
"latex-workshop.latex.external.build.command": "make",
"latex-workshop.latex.external.build.args": [],
// Disable auto-build on save (optional, remove if you want auto-build)
"latex-workshop.latex.autoBuild.run": "never",
// Clean auxiliary files
"latex-workshop.latex.autoClean.run": "onBuilt",
// PDF viewer settings
"latex-workshop.view.pdf.viewer": "tab",
"latex-workshop.view.pdf.zoom": "auto",
// Output directory
"latex-workshop.latex.outDir": "./Output",
// Root file
"latex-workshop.latex.rootFile.usePolling": true,
"latex-workshop.latex.rootFile.indicator": "\\documentclass",
// Disable other build methods to avoid confusion
"latex-workshop.latex.magic.enabled": false,
"latex-workshop.latex.build.forceRecipeUsage": true,
// File associations
"files.associations": {
"*.tex": "latex",
"*.cls": "latex",
"*.sty": "latex",
"*.bib": "bibtex"
},
// Editor settings for LaTeX files
"[latex]": {
"editor.wordWrap": "on",
"editor.rulers": [80, 100],
"editor.formatOnSave": false,
"editor.suggestSelection": "first"
},
// Spell check settings (optional)
"cSpell.language": "de,en",
"cSpell.enableFiletypes": ["latex", "bibtex"],
// Hide auxiliary files from explorer (optional)
"files.exclude": {
"**/*.aux": true,
"**/*.log": true,
"**/*.synctex.gz": true,
"**/*.fdb_latexmk": true,
"**/*.fls": true,
"**/*.out": true,
"**/*.toc": true,
"**/*.bbl": true,
"**/*.blg": true,
"**/*.lof": true,
"**/*.lot": true,
"**/*.nav": true,
"**/*.snm": true,
"**/*.vrb": true,
"Build/**": false
},
// Search exclude patterns
"search.exclude": {
"Build/**": true,
"Output/**": false
}
}

169
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,169 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Build LaTeX Document",
"type": "shell",
"command": "make",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Clean Build Files",
"type": "shell",
"command": "make",
"args": ["clean"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Full Build (Clean + Build)",
"type": "shell",
"command": "make",
"args": ["full"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "View PDF",
"type": "shell",
"command": "make",
"args": ["view"],
"group": "none",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Docker Build",
"type": "shell",
"command": "make",
"args": ["docker-build"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Docker Clean",
"type": "shell",
"command": "make",
"args": ["docker-clean"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "List Chapters",
"type": "shell",
"command": "make",
"args": ["chapters"],
"group": "none",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Word Count",
"type": "shell",
"command": "make",
"args": ["count"],
"group": "none",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Check Prerequisites",
"type": "shell",
"command": "make",
"args": ["check"],
"group": "none",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Docker Info",
"type": "shell",
"command": "make",
"args": ["docker-info"],
"group": "none",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
}
]
}

169
.zed/README.md Normal file
View File

@ -0,0 +1,169 @@
# Zed Configuration for LaTeX Project
This directory contains Zed editor workspace settings optimized for LaTeX development with this project.
## Features
### Build System Integration
- Configured to use `make` command for all builds
- **Auto-compile on save is DISABLED** as requested
- Manual build triggers only
### Key Settings
- **Format on save** - Disabled for LaTeX files
- **Auto-save** - Disabled to prevent unwanted builds
- **Build command** - Uses `make` via Docker
- **PDF viewer** - Uses system default (xdg-open on Linux)
- **Word wrap** - Enabled for better readability
## Usage
### Building the Document
1. **Default Build**: Press `Cmd+B` (Mac) / `Ctrl+B` (Linux)
2. **Full Build**: Press `Cmd+Shift+B` (Mac) / `Ctrl+Shift+B` (Linux)
3. **Command Palette**: Press `Cmd+Shift+P` and select a task
### Available Tasks
- **Build LaTeX Document** - Standard build using Docker
- **Clean Build Files** - Remove auxiliary files
- **Full Build** - Clean and rebuild from scratch
- **View PDF** - Open the generated PDF
- **Docker Build** - Explicit Docker build
- **Docker Clean** - Clean Docker containers
- **Word Count** - Show document statistics
- **List Chapters** - Show all chapters
- **Check Prerequisites** - Verify system requirements
### Keyboard Shortcuts
| Action | Mac | Linux/Windows |
|--------|-----|---------------|
| Build | `Cmd+B` | `Ctrl+B` |
| Full Build | `Cmd+Shift+B` | `Ctrl+Shift+B` |
| Clean | `Cmd+K Cmd+C` | `Ctrl+K Ctrl+C` |
| View PDF | `Cmd+K Cmd+V` | `Ctrl+K Ctrl+V` |
## Configuration Details
### LaTeX Language Settings
```json
{
"LaTeX": {
"format_on_save": false, // No auto-formatting
"autosave": false, // No auto-save
"tab_size": 2, // 2-space indentation
"soft_wrap": "editor_width", // Wrap at editor width
"enable_language_server": true // Enable LSP support
}
}
```
### Build Configuration
The project is configured to use `make` for all build operations:
- Build command: `make`
- Working directory: Project root
- Output directory: `Output/`
### File Exclusions
The following files are hidden from the file tree:
- Build artifacts (`*.aux`, `*.log`, `*.synctex.gz`)
- Bibliography files (`*.bbl`, `*.blg`)
- Table of contents (`*.toc`, `*.lof`, `*.lot`)
- Build directory contents
## LSP Configuration (texlab)
If you have `texlab` language server installed, it's configured with:
- Build on save: **DISABLED**
- Forward search: Disabled
- ChkTeX: Enabled on open and save
- Formatter: latexindent
To install texlab:
```bash
# macOS
brew install texlab
# Linux (via cargo)
cargo install texlab
# Or download from GitHub releases
```
## Customization
### Enable Auto-Save (Not Recommended)
If you want to enable auto-save (will NOT trigger builds):
```json
{
"autosave": {
"after_delay": 1000
}
}
```
### Change PDF Viewer
To use a different PDF viewer:
```json
{
"preview": {
"pdf_viewer": {
"open_command": "your-pdf-viewer"
}
}
}
```
### Enable Build on Save (Not Recommended)
If you really want to build on every save:
```json
{
"lsp": {
"texlab": {
"initialization_options": {
"build": {
"onSave": true
}
}
}
}
}
```
## Troubleshooting
### Build Doesn't Start
1. Ensure Docker is running
2. Check that `make` command works in terminal
3. Try running `make docker-info` in terminal
### Tasks Not Available
1. Ensure you're in the project root
2. Reload Zed: `Cmd+Q` and restart
3. Check tasks.json is properly loaded
### PDF Doesn't Open
1. Check if PDF exists in `Output/Main.pdf`
2. Verify system PDF viewer is configured
3. Try manually: `make view` in terminal
### Language Server Issues
1. Install texlab if not already installed
2. Check Zed's language server logs
3. Disable and re-enable language server in settings
## Important Notes
1. **Auto-compile is intentionally disabled** - You must manually trigger builds
2. **Format on save is disabled** - LaTeX formatting can break documents
3. **Use Docker builds** - Ensures consistent environment
4. **Check git status** - Some files are auto-generated and should not be committed
## File Structure
```
.zed/
├── settings.json # Zed workspace settings
├── tasks.json # Build task definitions
└── README.md # This file
```
These configuration files are workspace-specific and should be committed to the repository so all team members have the same settings.

86
.zed/settings.json Normal file
View File

@ -0,0 +1,86 @@
{
"languages": {
"LaTeX": {
"tab_size": 2,
"hard_tabs": false,
"soft_wrap": "editor_width",
"show_whitespaces": "selection",
"use_autoclose": true,
"enable_language_server": true
}
},
"file_scan_exclusions": [
"Build/",
"*.aux",
"*.log",
"*.out",
"*.toc",
"*.lof",
"*.lot",
"*.lol",
"*.bbl",
"*.blg",
"*.synctex.gz",
"*.fdb_latexmk",
"*.fls",
"*.idx",
"*.ind",
"*.ilg",
"*.glo",
"*.gls",
"*.glg",
"*.nav",
"*.snm",
"*.vrb",
"*.bcf",
"*.run.xml"
],
"show_line_numbers": true,
"relative_line_numbers": false,
"cursor_blink": true,
"git": {
"git_gutter": "tracked_files",
"inline_blame": {
"enabled": false
}
},
"lsp": {
"texlab": {
"settings": {
"texlab": {
"build": {
"executable": "/bin/echo",
"args": ["Skipping auto-build - use 'make' in terminal instead"],
"onSave": false,
"forwardSearchAfter": false
},
"chktex": {
"onEdit": false,
"onOpenAndSave": false
},
"diagnostics": {
"allowedPatterns": []
},
"formatterLineLength": 120,
"latexFormatter": "none",
"experimental": {
"followPackageLinks": true,
"mathEnvironments": ["align", "align*", "equation", "equation*"],
"verbatimEnvironments": ["verbatim", "lstlisting", "minted"]
}
}
}
}
},
"task_aliases": {
"build": "make",
"clean": "make clean",
"full": "make full",
"view": "make view"
}
}

170
.zed/tasks.json Normal file
View File

@ -0,0 +1,170 @@
[
{
"label": "Build LaTeX Document",
"command": "make",
"args": [],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Clean Build Files",
"command": "make",
"args": ["clean"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Full Build (Clean + Build)",
"command": "make",
"args": ["full"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "View PDF",
"command": "make",
"args": ["view"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "never"
},
{
"label": "Docker Build",
"command": "make",
"args": ["docker-build"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Docker Build (Cached)",
"command": "make",
"args": ["docker-build-cached"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Docker Clean",
"command": "make",
"args": ["docker-clean"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Docker Shell",
"command": "make",
"args": ["docker-shell"],
"use_new_terminal": true,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Docker Info",
"command": "make",
"args": ["docker-info"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "always"
},
{
"label": "List Chapters",
"command": "make",
"args": ["chapters"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "always"
},
{
"label": "Word Count",
"command": "make",
"args": ["count"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "always"
},
{
"label": "Check Prerequisites",
"command": "make",
"args": ["check"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "always"
},
{
"label": "Project Structure",
"command": "make",
"args": ["structure"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "always"
},
{
"label": "Help",
"command": "make",
"args": ["help"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "always"
},
{
"label": "Watch (Continuous Build)",
"command": "make",
"args": ["watch"],
"use_new_terminal": true,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Draft Build",
"command": "make",
"args": ["draft"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Local Build (No Docker)",
"command": "make",
"args": ["local"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Compile Only",
"command": "make",
"args": ["compile"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Clean Output",
"command": "make",
"args": ["clean-output"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Clean Auxiliary Files",
"command": "make",
"args": ["clean-aux"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Distribution Clean",
"command": "make",
"args": ["distclean"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
}
]

View File

@ -98,10 +98,10 @@
\listoftables
% List of Listings
\vspace{1em}
\chapter*{\oldlstlistlistingname}
\offsetB
\lstlistoflistings
% \vspace{1em}
% \chapter*{\oldlstlistlistingname}
% \offsetB
% \lstlistoflistings
% List of Equations
\vspace{1em}
@ -113,10 +113,10 @@
% ------------------------------------------------------------------------------
% Glossary Section
% ------------------------------------------------------------------------------
% Generate glossary and list of acronyms
% Generate glossary and list of abbreviations
% Two separate glossaries are printed:
% 1. Main glossary with technical terms
% 2. Acronym list with abbreviations
% 2. List of abbreviations
% ------------------------------------------------------------------------------
{
\noindent
@ -132,14 +132,14 @@
\printglossary
}
% --- Acronym List ---
% Print acronym glossary with German header "Abkürzung"
% --- List of Abbreviations ---
% Print abbreviation glossary with German header "Abkürzung"
{
\renewcommand*{\entryname}{Abkürzung}
\newpage
\pagestyle{fancy}
\vspace*{-2.25em}
\printglossary[type=\acronymtype]
\printglossary[type=\acronymtype,title=Abkürzungen]
}
}

View File

@ -0,0 +1,31 @@
%7 Eidesstattliche Erklärung
%Hiermit erkläre ich an Eides statt, dass ich die vorliegende Arbeit selbstständig erstellt, keine nicht genannte fremde Hilfe in Anspruch genommen und alle von mir verwendeten Hilfsmittel und Quellen in der Arbeit benannt und kenntlich gemacht habe. Die Arbeit oder Teile davon wurden in keinem Prüfungsmodul zur Prüfung vorgelegt und verletzt in keiner Weise Rechte Dritter.
%Mir ist bekannt, dass eine unwahre Erklärung als Täuschung gewertet wird.
%
%
%Nicht ausfüllen Nicht ausfüllen Nicht ausfüllen
%______________ ___________ ________________________
%Ort, Datum Unterschrift
% (Vor- und Nachname)
%
%
\chapter{Eidesstattliche Erklärung}
\label{chap:eidesstattliche}
Hiermit erkläre ich an Eides statt, dass ich die vorliegende Arbeit selbstständig erstellt, keine nicht genannte fremde Hilfe in Anspruch genommen und alle von mir verwendeten Hilfsmittel und Quellen in der Arbeit benannt und kenntlich gemacht habe. Die Arbeit oder Teile davon wurden in keinem Prüfungsmodul zur Prüfung vorgelegt und verletzt in keiner Weise Rechte Dritter.
Mir ist bekannt, dass eine unwahre Erklärung als Täuschung gewertet wird.
\begin{center}
\vspace{2cm}
\begin{tabular}{ccc}
\hline
\textbf{Ort} \hspace{2cm} &
\textbf{Datum} \hspace{2cm} &
\hspace{2cm} \textbf{Unterschrift} \hspace{2cm} \\
&
&
\textbf{(Vor- und Nachname)} \\
\end{tabular}
\end{center}

View File

@ -28,7 +28,7 @@ Die Seitenränder sind wie folgt definiert:
\item Automatische Berechnung des Satzspiegels durch KOMA-Script
\end{itemize}
Jeder neue Absatz hat zum vorhergehenden Absatz einen Abstand von 6 Punkten (konfiguriert in \texttt{Settings/General.tex}). Zusätzlich wird ein erhöhter Abstand vor Sections (4,5ex) und Subsections (3,5ex) eingefügt, um eine bessere visuelle Gliederung zu erreichen \parencite{theisen2013}. Für Listen gibt es die Formatvorlage \texttt{itemize}, bei der kein Abstand zwischen den Listenelementen enthalten ist.
Jeder neue Absatz hat zum vorhergehenden Absatz einen Abstand von 6 Punkten (konfiguriert in \texttt{Settings/General.tex}). Zusätzlich wird ein erhöhter Abstand vor Sections (4,5ex) und Subsections (3,5ex) eingefügt, um eine bessere visuelle Gliederung zu erreichen \parencite{theisen2013}. Für Listen gibt es die züsätzliche Formatvorlage \texttt{listenabsatz}, bei der kein Abstand zwischen den Listenelementen enthalten ist.
Die Ausrichtung des Textes und aller Überschriften erfolgt im Blocksatz. Die Silbentrennung wird automatisch eingesetzt, um ein ausgewogenes Schriftbild zu erreichen.
@ -55,12 +55,12 @@ Zwischen den einzelnen Absätzen ist ein Abstand von 6 Punkten einzuhalten. Der
\section{Kopfzeile}
\label{sec:kopfzeile}
Der Aufbau der Kopfzeile erfolgt, mit Ausnahme der Titelseite, automatisch und beinhaltet die Kapitelnummer und -überschrift der ersten Ebene auf der linken Seite sowie den Dokumenttitel auf der rechten Seite.
Der Aufbau der Kopfzeile erfolgt, mit Ausnahme der Titelseite, automatisch und beinhaltet die Kapitelnummer und -überschrift der ersten Ebene auf der rechten Seite sowie den Dokumenttitel auf der linken Seite.
\section{Fußzeile}
\label{sec:fusszeile}
Der Aufbau der Fußzeile erfolgt, mit Ausnahme der Titelseite, automatisch und zeigt: Autorname | Modulname | Seite X von Y.
Der Aufbau der Fußzeile erfolgt, mit Ausnahme der Titelseite, automatisch und zeigt: Autorname, Modulname und Seite X von Y.
\section{Seitennummerierung}
\label{sec:seitennummerierung}
@ -72,7 +72,7 @@ Die Seitennummerierung erfolgt automatisch. Die Zählung beginnt bei 0 für das
Fußnoten\footnote{Dies ist ein Beispiel für eine Fußnote.} werden im Text durch eine hochgestellte Ziffer grundsätzlich nach einem Satzzeichen (Komma, Strichpunkt, Punkt, Fragezeichen, Ausrufungszeichen, Gedankenstrich) referenziert. Die Fußnotennummerierung erfolgt fortlaufend über die gesamte Arbeit.
Erläuterungen zu den Fußnoten erfolgen oberhalb der Fußzeile und reduzieren die Zeilenzahl des Textkörpers. Der Beginn einer Fußnote wird durch einen linksbündigen horizontalen Strich, dessen Länge ca. 30\,\% der Breite des Textblockes beträgt, vom Textkörper abgetrennt.
Erläuterungen zu den Fußnoten erfolgen oberhalb der Fußzeile und reduzieren die Zeilenzahl des \glsgen{Textkörper}. Der Beginn einer Fußnote wird durch einen linksbündigen horizontalen Strich, dessen Länge ca. 30\,\% der Breite des Textblockes beträgt, vom \gls{Textkörper} abgetrennt.
Die Fußnotentexte sollten nicht länger als 4 Zeilen sein. Ebenso sollte vermieden werden, den Umbruch der Fußnoten auf die nächste Seite zu erzwingen.
@ -89,7 +89,7 @@ Beispiel für die Mitternachtsformel:
\end{equation}
\myequations{Mitternachtsformel zur Lösung quadratischer Gleichungen}
Die Formel~\ref{eq:mitternachtsformel} zeigt die bekannte Lösungsformel für quadratische Gleichungen.
Die \cref{eq:mitternachtsformel} zeigt die bekannte Lösungsformel für quadratische Gleichungen.
\section{Abbildungen}
\label{sec:abbildungen}
@ -99,11 +99,11 @@ Abbildungen können an beliebiger Stelle im Text eingebaut werden. Jede Abbildun
\begin{figure}[h]
\centering
\fbox{\parbox{0.6\textwidth}{\centering\vspace{3cm}Beispielabbildung\vspace{3cm}}}
\caption{Auswahlmenü auf der Website der HS Reutlingen}
\label{fig:hs_website}
\caption{Beispielabbildung}
\label{fig:ex01}
\end{figure}
Die Nummer kann in Verbindung mit der Abkürzung Abb. oder dem Wort Abbildung zur Referenzierung einer Abbildung im Text eingesetzt werden. Hierzu werden im Text runde Klammern verwendet, z.\,B. (Abbildung~\ref{fig:hs_website}) oder (Abb.~\ref{fig:hs_website}).
Die Nummer kann in Verbindung mit der Abkürzung Abb. oder dem Wort Abbildung zur Referenzierung einer Abbildung im Text eingesetzt werden. Hierzu werden im Text runde Klammern verwendet, z.\,B. (\cref{fig:ex01}) oder (Abb.~\ref{fig:ex01}).
Alle Abbildungsnummern und -überschriften werden automatisch im Abbildungsverzeichnis referenziert.
@ -120,17 +120,17 @@ Tabellen können an beliebiger Stelle im Text eingebaut werden. Die erste Zeile
\label{tab:formatvorlagen}
\begin{tabular}{|l|l|c|c|}
\hline
\textbf{Formatbezeichner} & \textbf{Schrift} & \textbf{Größe} & \textbf{kursiv} \\
\textbf{Formatbezeichner} & \textbf{Schrift} & \textbf{Größe} & \textbf{kursiv} \\
\hline
Überschrift 1 & Franklin Gothic Book & 16 & nein \\
Eigennamen & Times New Roman & 12 & ja \\
Überschrift 1 & DIN-Regular & \texttt{\textbackslash normalsize} & nein \\
Eigennamen & DIN-Regular & \texttt{\textbackslash normalsize} & ja \\
\hline
\end{tabular}
\end{table}
Es ist darauf zu achten, dass innerhalb einer Tabellenzeile kein Seitenumbruch erfolgt. Das Template verwendet automatische Seitenumbruchkontrolle, um Tabellen möglichst auf einer Seite zu halten. Bei sehr langen Tabellen, die einen Seitenumbruch erfordern, muss auf der nächsten Seite die Beschriftung der Spalten wiederholt werden.
Auch die Tabellen werden in gleicher Form wie die Abbildungen nummeriert und beschriftet (siehe Tabelle~\ref{tab:formatvorlagen}). Der Nummer wird hierbei das Präfix Tabelle oder Tab. vorangestellt. Aus den Referenznummern und der Beschreibung wird das am Anfang der Ausarbeitung stehende Tabellenverzeichnis automatisch erstellt.
Auch die Tabellen werden in gleicher Form wie die Abbildungen nummeriert und beschriftet (siehe \cref{tab:formatvorlagen}). Der Nummer wird hierbei das Präfix Tabelle oder Tab. vorangestellt. Aus den Referenznummern und der Beschreibung wird das am Anfang der Ausarbeitung stehende Tabellenverzeichnis automatisch erstellt.
\section{Abkürzungen}
\label{sec:abkuerzungen}

View File

@ -17,23 +17,22 @@ Die Gestaltung des Titelblattes erfolgt automatisch durch das Template. Alle erf
\label{subsec:titel_arbeit}
Der Titel der Arbeit wird mit folgenden Eigenschaften formatiert:
\begin{listenabsatz}
\item Abstand zum oberen Blattrand: 6\,cm
\item Ausrichtung: zentriert
\item Schriftgröße: 24 Punkte
\item E-Mail-Anschrift: Als Hyperlink kenntlich gemacht
\end{listenabsatz}
\begin{itemize}
\item Abstand zum oberen Blattrand: 6,5\,cm
\item Ausrichtung: linksbündig
\item Schriftgröße: \texttt{\textbackslash Huge}
\end{itemize}
\subsection*{Abstract}
\label{subsec:abstract}
Das Abstract wird auf der Titelseite platziert und hat folgende Eigenschaften:
\begin{listenabsatz}
\item Schriftart: Times New Roman kursiv
\item Schriftgröße: 10 Punkte
\item Maximale Länge: 150--250 Wörter
\begin{itemize}
\item Schriftart: DIN-Regular
\item Schriftgröße: \texttt{\textbackslash normalsize}
\item Maximale Länge: 150250 Wörter
\item Inhalt: Zielsetzung, Methoden und Ergebnisse der Arbeit
\end{listenabsatz}
\end{itemize}
Das Abstract soll es den Lesern und Leserinnen ermöglichen, innerhalb von wenigen Augenblicken zu erfassen, welcher Inhalt hinter der Überschrift steckt und ob das Thema zur weiteren Bearbeitung lohnt.
@ -41,17 +40,19 @@ Das Abstract soll es den Lesern und Leserinnen ermöglichen, innerhalb von wenig
\label{sec:inhaltsverzeichnis_format}
Das Inhaltsverzeichnis wird automatisch generiert und umfasst:
\begin{listenabsatz}
\item Maximal 3 Gliederungsebenen
\item Schriftgröße: 10 Punkte
\begin{itemize}
\item Maximal 3 Gliederungsebenen (\texttt{\textbackslash chapter}, \texttt{\textbackslash section} und \texttt{\textbackslash subsection*} \texttt{*} sorgt dafür, dass die Überschriften nicht in die Nummerierung einbezogen werden)
\item Schriftgröße: \texttt{\textbackslash normalsize} (11pt)
\item Schriftart: Blender-Medium (Wirkt u.U. eher wie 10pt)
\item Automatische Seitenzahlen mit Punktführung
\item Struktur so flach wie möglich halten
\end{listenabsatz}
\end{itemize}
\newpage
\section{Abbildungsverzeichnis}
\label{sec:abbildungsverzeichnis}
Das Abbildungsverzeichnis wird automatisch aus allen mit \texttt{\textbackslash caption} versehenen Abbildungen erstellt. Die Formatierung erfolgt analog zum Inhaltsverzeichnis mit 10 Punkt Schriftgröße.
Das Abbildungsverzeichnis wird automatisch aus allen mit \texttt{\textbackslash caption} versehenen Abbildungen erstellt. Die Formatierung erfolgt analog zum Inhaltsverzeichnis mit 11pt Schriftgröße.
\section{Tabellenverzeichnis}
\label{sec:tabellenverzeichnis}
@ -62,12 +63,13 @@ Das Tabellenverzeichnis wird automatisch aus allen mit \texttt{\textbackslash ca
\label{sec:abkuerzungsverzeichnis}
Das Abkürzungsverzeichnis wird durch das \texttt{glossaries}-Paket verwaltet und hat folgende Eigenschaften:
\begin{listenabsatz}
\begin{itemize}
\item Tabellarische Darstellung mit drei Spalten
\item Alphabetische Sortierung
\item Allgemein bekannte Abkürzungen werden nicht aufgenommen
\item Schriftgröße: 10 Punkte
\end{listenabsatz}
\item Schriftgröße: \texttt{\textbackslash normalsize} (11pt)
\item Schriftart: DIN-Regular
\end{itemize}
\section{Glossar}
\label{sec:glossar}
@ -75,23 +77,25 @@ Das Abkürzungsverzeichnis wird durch das \texttt{glossaries}-Paket verwaltet un
Das Glossar dient dazu, dem Leser vermutlich nicht bekannte Fachbegriffe zu erläutern. Das Glossar ist nicht zu verwechseln mit dem Index, welcher im Rahmen dieser Seminararbeit nicht zur Anwendung kommt.
Das Glossar wird ebenfalls durch das \texttt{glossaries}-Paket verwaltet:
\begin{listenabsatz}
\item Tabellarische Darstellung mit zwei Spalten
\begin{itemize}
\item Tabellarische Darstellung mit drei Spalten
\item Alphabetische Sortierung
\item Schriftgröße: 10 Punkte
\end{listenabsatz}
\item Allgemein bekannte Fachbegriffe werden nicht aufgenommen
\item Schriftgröße: \texttt{\textbackslash normalsize} (11pt)
\item Schriftart: DIN-Regular
\end{itemize}
\section{Textkörper}
\label{sec:textkoerper}
Die Gestaltung und Unterteilung des Textkörpers in verschiedene Abschnitte muss entsprechend der Beschreibung der Inhalte erfolgen. Der Haupttext verwendet:
\begin{listenabsatz}
\item Schriftart: Franklin Gothic Book (oder Systemalternative)
\item Schriftgröße: 12 Punkte
Die Gestaltung und Unterteilung des \glsgen{Textkörper} in verschiedene Abschnitte muss entsprechend der Beschreibung der Inhalte erfolgen. Der Haupttext verwendet:
\begin{itemize}
\item Schriftart: DIN-Regular
\item Schriftgröße: \texttt{\textbackslash normalsize} (ca. 11 Punkte)
\item Zeilenabstand: 1,5-fach
\item Absatzabstand: 6 Punkte
\item Ausrichtung: Blocksatz mit Silbentrennung
\end{listenabsatz}
\item Ausrichtung: Blocksatz
\end{itemize}
\section{Literaturverzeichnis}
\label{sec:literaturverzeichnis_format}
@ -110,11 +114,11 @@ Für die Qualität des Literaturverzeichnisses ist entscheidend, dass der gewäh
\label{sec:eidesstattliche_erklaerung}
Die eidesstattliche Erklärung muss:
\begin{listenabsatz}
\begin{itemize}
\item Den vorgegebenen Text verwenden
\item Unterschrieben werden (z.\,B. durch PDF-Unterschriftsfunktion)
\item Als letzte Seite vor dem Anhang eingefügt werden
\end{listenabsatz}
\end{itemize}
Der Wortlaut der Erklärung ist vorgegeben und darf nicht verändert werden.

View File

@ -21,26 +21,26 @@ Die folgende Tabelle gibt eine Übersicht über alle verwendeten Zeichenformate:
\label{tab:zeichenformate}
\begin{tabular}{|l|l|c|}
\hline
\textbf{Element} & \textbf{Schriftart} & \textbf{Größe} \\
\textbf{Element} & \textbf{Schriftart} & \textbf{Größe} \\
\hline
Titel & Blender-Bold & \textbackslash Huge \\
Standardtext & DIN-Regular & \textbackslash normalsize \\
Kapitel (Chapter) & Blender-Bold & \textbackslash LARGE \\
Überschrift 1 (Section) & Blender-Bold & \textbackslash Large \\
Überschrift 2 (Subsection) & Blender-Bold & \textbackslash large \\
Überschrift 3 (Subsubsection) & Blender-Bold & \textbackslash large \\
Titel & Blender-Bold & \texttt{\textbackslash Huge} \\
Standardtext & DIN-Regular & \texttt{\textbackslash normalsize} \\
Kapitel (Chapter) & Blender-Bold & \texttt{\textbackslash LARGE} \\
Überschrift 1 (Section) & Blender-Bold & \texttt{\textbackslash Large} \\
Überschrift 2 (Subsection) & Blender-Bold & \texttt{\textbackslash large} \\
Überschrift 3 (Subsubsection) & Blender-Bold & \texttt{\textbackslash large} \\
\hline
Inhaltsverzeichnis & Blender-Bold & \textbackslash normalsize \\
Abb.-verzeichnis & Blender-Bold & \textbackslash normalsize \\
Tab.-verzeichnis & Blender-Bold & \textbackslash normalsize \\
Abk.-verzeichnis & Blender-Bold & \textbackslash normalsize \\
Glossar & Blender-Bold & \textbackslash normalsize \\
Inhaltsverzeichnis & Blender-Medium & \texttt{\textbackslash normalsize} \\
Abb.-verzeichnis & Blender-Medium & \texttt{\textbackslash normalsize} \\
Tab.-verzeichnis & Blender-Medium & \texttt{\textbackslash normalsize} \\
Abk.-verzeichnis & Blender-Medium & \texttt{\textbackslash normalsize} \\
Glossar & Blender-Medium & \texttt{\textbackslash normalsize} \\
\hline
Zitate & DIN-Regular & \textbackslash normalsize \\
Kopfzeilen & Blender-Bold & \textbackslash normalsize \\
Fußzeilen & Blender-Bold & \textbackslash normalsize \\
Fußnoten & DIN-Regular & \textbackslash footnotesize \\
Abstract & DIN-Regular & \textbackslash normalsize \\
Zitate & DIN-Regular & \texttt{\textbackslash normalsize} \\
Kopfzeilen & Blender-Medium & \texttt{\textbackslash normalsize} \\
Fußzeilen & Blender-Medium & \texttt{\textbackslash normalsize} \\
Fußnoten & DIN-Regular & \texttt{\textbackslash footnotesize} \\
Abstract & DIN-Regular & \texttt{\textbackslash normalsize} \\
\hline
\end{tabular}
\end{table}
@ -58,10 +58,10 @@ Der Standardtext verwendet Franklin Gothic Book (oder die in \LaTeX{} konfigurie
Die Hierarchie der Überschriften wird durch unterschiedliche \LaTeX{}-Schriftgrößenbefehle und vertikale Abstände deutlich gemacht:
\begin{itemize}
\item Kapitel (Chapter): \textbackslash LARGE mit 3ex Abstand davor
\item Überschrift 1. Ebene (Section): \textbackslash Large mit 4,5ex Abstand davor
\item Überschrift 2. Ebene (Subsection): \textbackslash large mit 3,5ex Abstand davor
\item Überschrift 3. Ebene (Subsubsection): \textbackslash large mit 2ex Abstand davor
\item Kapitel (Chapter): \texttt{\textbackslash LARGE}mit 3ex Abstand davor
\item Überschrift 1. Ebene (Section): \texttt{\textbackslash Large}mit 4,5ex Abstand davor
\item Überschrift 2. Ebene (Subsection): \texttt{\textbackslash large}mit 3,5ex Abstand davor
\item Überschrift 3. Ebene (Subsubsection): \texttt{\textbackslash large}mit 2ex Abstand davor
\end{itemize}
Die großzügigen vertikalen Abstände vor Sections und Subsections sorgen für eine klare visuelle Gliederung des Dokuments. Alle Überschriften verwenden Fettdruck (\texttt{\textbackslash bfseries}) zusätzlich zur \texttt{blenderfont}.
@ -77,7 +77,7 @@ Alle Verzeichnisse (Inhalts-, Abbildungs-, Tabellen-, Abkürzungsverzeichnis und
\label{subsec:spezielle_formatierungen}
\subsubsection{Eigennamen}
Bei der Nennung von Eigennamen kann eine Kursivschrift mit Serifen verwendet werden, beispielsweise \emph{Times New Roman} in kursiv. Dies hebt Eigennamen vom restlichen Text ab.
Bei der Nennung von Eigennamen \textit{kann} eine Kursivschrift mit Serifen verwendet werden, beispielsweise \emph{Times New Roman} in kursiv. Dies hebt Eigennamen vom restlichen Text ab.
\subsubsection{Hervorhebungen}
Auf Hervorhebungen von Text mittels Fettdruck, Unterstreichungen etc. soll generell verzichtet werden. Ausnahmen bilden:
@ -87,8 +87,6 @@ Auf Hervorhebungen von Text mittels Fettdruck, Unterstreichungen etc. soll gener
\item Eigennamen (kursiv mit Serifen)
\end{itemize}
\subsubsection{Abstract}
Das Abstract auf der Titelseite verwendet als einziges Element \emph{Times New Roman} in kursiv mit 10 Punkt Schriftgröße. Diese Formatierung hebt das Abstract visuell vom restlichen Dokument ab.
\section{Tabulatoren und Abstände}
\label{sec:tabulatoren}

View File

@ -17,25 +17,26 @@ Dieses Kapitel demonstriert die verschiedenen Funktionen und Möglichkeiten des
\label{subsec:textauszeichnungen}
Das Template unterstützt verschiedene Textauszeichnungen:
\begin{listenabsatz}
\begin{itemize}
\item \textbf{Fetter Text} für wichtige Begriffe
\item \emph{Kursiver Text} für Betonungen und Eigennamen
\item \texttt{Maschinenschrift} für Code und Befehle
\item \textsf{Serifenlose Schrift} für spezielle Hervorhebungen
\item \textsc{Kapitälchen} für besondere Formatierungen
\end{listenabsatz}
\end{itemize}
\subsection*{Spezielle Zeichen und Symbole}
\label{subsec:spezielle_zeichen}
Das Template unterstützt korrekte Typografie:
\begin{listenabsatz}
Das Template unterstützt übliche Typografie:
\begin{itemize}
\item Gedankenstriche -- so wie hier -- für Einschübe
\item Anführungszeichen: "`deutsche Anführungszeichen"' und ``englische Quotes''
\item Auslassungspunkte \ldots{} mit korrektem Spacing
\item Geschützte Leerzeichen: z.\,B. oder 10\,cm oder S.\,42
\item Mathematische Symbole: $\alpha$, $\beta$, $\gamma$, $\sum$, $\int$
\end{listenabsatz}
\end{itemize}
\newpage
\section{Listen und Aufzählungen}
\label{sec:listen_demo}
@ -134,7 +135,7 @@ Matrix-Darstellung:
\label{fig:demo_abbildung}
\end{figure}
Die Abbildung~\ref{fig:demo_abbildung} zeigt einen Platzhalter für eine echte Grafik. Abbildungen werden automatisch nummeriert und im Abbildungsverzeichnis aufgeführt.
Die \cref{fig:demo_abbildung} zeigt einen Platzhalter für eine echte Grafik. Abbildungen werden automatisch nummeriert und im Abbildungsverzeichnis aufgeführt.
\subsection*{Subfigures}
\label{subsec:subfigures}
@ -209,7 +210,7 @@ Mit dem \texttt{subcaption}-Paket können mehrere Abbildungen nebeneinander plat
\label{subsec:python_code}
%TC:Ignore
\begin{lstlisting}[caption={Python-Beispiel: Fakultätsfunktion},label={lst:python_factorial},language=Python]
\begin{lstlisting}[caption={Python-Beispiel: Fakultätsfunktion},language=Python]
def factorial(n):
"""Berechnet die Fakultät einer Zahl rekursiv."""
if n <= 1:
@ -227,7 +228,7 @@ for i in range(10):
\label{subsec:latex_code}
%TC:Ignore
\begin{lstlisting}[caption={LaTeX-Beispiel: Dokumentstruktur},label={lst:latex_example},language=TeX]
\begin{lstlisting}[caption={LaTeX-Beispiel: Dokumentstruktur},language=TeX]
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
@ -250,14 +251,13 @@ Dies ist ein Beispieltext mit einer Formel: $x^2 + y^2 = r^2$
\label{subsec:querverweise_intern}
Das Template unterstützt intelligente Querverweise mit dem \texttt{cleveref}-Paket:
\begin{listenabsatz}
\begin{itemize}
\item Verweis auf Kapitel: siehe \cref{chap:template_demo}
\item Verweis auf Abschnitt: siehe \cref{sec:formeln_demo}
\item Verweis auf Gleichung: siehe \cref{eq:maxwell1}
\item Verweis auf Abbildung: siehe \cref{fig:demo_abbildung}
\item Verweis auf Tabelle: siehe \cref{tab:messwerte}
\item Verweis auf Listing: siehe \cref{lst:python_factorial}
\end{listenabsatz}
\end{itemize}
\subsection*{Fußnoten}
\label{subsec:fussnoten_demo}
@ -271,12 +271,12 @@ Fußnoten\footnote{Dies ist eine Beispiel-Fußnote mit zusätzlichen Information
\label{subsec:glossar_verwendung}
Das Template nutzt das \texttt{glossaries}-Paket für die Verwaltung von Fachbegriffen und Abkürzungen:
\begin{listenabsatz}
\begin{itemize}
\item Erster Aufruf eines Glossarbegriffs: \gls{Textkörper}
\item Zweiter Aufruf desselben Begriffs: \gls{Textkörper}
\item Verwendung einer Abkürzung: \gls{MPG}
\item Nochmalige Verwendung: \gls{MPG}
\end{listenabsatz}
\end{itemize}
Die Begriffe werden automatisch in das entsprechende Verzeichnis aufgenommen.
@ -287,25 +287,30 @@ Die Begriffe werden automatisch in das entsprechende Verzeichnis aufgenommen.
\label{subsec:theoreme}
Obwohl nicht standardmäßig aktiviert, können bei Bedarf Theorem-Umgebungen definiert werden für:
\begin{listenabsatz}
\begin{itemize}
\item Definitionen
\item Sätze (Theoreme)
\item Lemmata
\item Korollare
\item Beweise
\item Beispiele
\end{listenabsatz}
\end{itemize}
\subsection*{Infoboxen und Warnungen}
\label{subsec:infoboxen}
Das Template kann erweitert werden um spezielle Boxen für:
\begin{listenabsatz}
\item Wichtige Hinweise
\item Warnungen
\item Tipps und Tricks
\item Zusammenfassungen
\end{listenabsatz}
\begin{InfoBox}{}
Das ist der Inhalt der Info-Box.
Boxen können auch geschachtelt werden:
\begin{InfoBox}{}
Das ist der Inhalt der geschachtelten Info-Box.
\end{InfoBox}
\end{InfoBox}
\vspace{\fill}
\pagebreak
\section{Erweiterte Features}
\label{sec:erweiterte_features}
@ -324,25 +329,25 @@ SVG-Dateien können direkt eingebunden werden mit dem \texttt{\textbackslash inc
\label{subsec:hyperlinks}
Das Template unterstützt:
\begin{listenabsatz}
\begin{itemize}
\item Automatische Verlinkung von Querverweisen
\item Klickbare URLs: \url{https://www.example.com}
\item E-Mail-Links: \href{mailto:example@domain.com}{example@domain.com}
\item Verlinktes Inhaltsverzeichnis im PDF
\end{listenabsatz}
\end{itemize}
\section{Zusammenfassung der Template-Features}
\label{sec:template_zusammenfassung}
Das HSRTReport-Template bietet eine umfassende Lösung für wissenschaftliche Arbeiten mit:
\begin{listenabsatz}
\begin{itemize}
\item Automatischer Formatierung gemäß den Vorgaben
\item Konsistenter Typografie und Layout
\item Intelligenter Verwaltung von Verzeichnissen
\item Flexiblen Möglichkeiten für Formeln, Abbildungen und Tabellen
\item Professioneller PDF-Ausgabe mit Hyperlinks
\item Einfacher Anpassbarkeit über Konfigurationsdateien
\end{listenabsatz}
\end{itemize}
Alle diese Features tragen dazu bei, dass sich der Autor auf den Inhalt konzentrieren kann, während das Template die korrekte Formatierung übernimmt.

View File

@ -1,14 +1,14 @@
% !TEX root = Main.tex
% ==============================================================================
% Glossary and Acronym Definitions
% Glossary and Abkürzung Definitions
% ==============================================================================
% Description: This file contains all glossary entries and acronyms used in
% the document. Entries are automatically sorted and formatted.
% Usage: Reference entries in text using:
% - \gls{label} for glossary entries
% - \acrshort{label} for acronym short form
% - \acrlong{label} for acronym long form
% - \acrfull{label} for full acronym (short and long)
% - \acrshort{label} for abbreviation short form
% - \acrlong{label} for abbreviation long form
% - \acrfull{label} for full abbreviation (short and long)
% Author: [Your Name]
% Date: [Date]
% ==============================================================================
@ -48,31 +48,31 @@
% }
% ==============================================================================
% Acronym Definitions
% Abkürzung Definitions
% ==============================================================================
% Define abbreviations and acronyms that appear in the document
% Define abbreviations that appear in the document
% Syntax: \newacronym{label}{SHORT}{Long Form}
% ------------------------------------------------------------------------------
% Document-related acronyms
% Document-related abbreviations
\newacronym{a:Abb}{Abb.}{Abbildung}
\newacronym{a:Tab}{Tab.}{Tabelle}
% Legal and regulatory acronyms
% Legal and regulatory abbreviations
\newacronym{MPG}{MPG}{Medizinproduktegesetz}
% Company and organization acronyms
% Company and organization abbreviations
\newacronym{a:MS}{MS}{Microsoft®}
% ------------------------------------------------------------------------------
% Add more acronyms here (alphabetically sorted recommended)
% Add more abbreviations here (alphabetically sorted recommended)
% ------------------------------------------------------------------------------
% Technical acronyms
% Technical abbreviations
% \newacronym{a:API}{API}{Application Programming Interface}
% \newacronym{a:CPU}{CPU}{Central Processing Unit}
% \newacronym{a:GPU}{GPU}{Graphics Processing Unit}
% Academic acronyms
% Academic abbreviations
% \newacronym{a:BSc}{B.Sc.}{Bachelor of Science}
% \newacronym{a:MSc}{M.Sc.}{Master of Science}
% \newacronym{a:PhD}{Ph.D.}{Doctor of Philosophy}

View File

@ -0,0 +1,106 @@
% !TEX root = ../HSRTReport.cls
% ==============================================================================
% Bibliography Configuration Module
% ==============================================================================
% Description: Configure BibLaTeX citation formatting and hyperlink behavior
% Author: Frederik Beimgraben
% License: Creative Commons CC BY 4.0
% ==============================================================================
% ==============================================================================
% BibLaTeX Hyperlink Configuration
% ==============================================================================
% Make entire citation content clickable, not just parts of it
% Load hyperref support for biblatex
\ExecuteBibliographyOptions{
hyperref=true,
backref=false,
url=true,
doi=true,
isbn=false
}
% ------------------------------------------------------------------------------
% Make entire citation clickable (not just author or year)
% ------------------------------------------------------------------------------
% This works with APA style to make the complete "Author, Year" clickable
% Redefine how hyperlinks are created in citations
\DeclareFieldFormat{citehyperref}{%
\bibhyperref{#1}%
}
% Make cite command create single hyperlink
\DeclareCiteCommand{\cite}
{\usebibmacro{prenote}}
{\bibhyperref{\usebibmacro{citeindex}\usebibmacro{cite}}}
{\multicitedelim}
{\usebibmacro{postnote}}
% Make parencite create single hyperlink for entire content
\DeclareCiteCommand{\parencite}[\mkbibparens]
{\usebibmacro{prenote}}
{\bibhyperref{\usebibmacro{citeindex}\usebibmacro{cite}}}
{\multicitedelim}
{\usebibmacro{postnote}}
% Make textcite create unified hyperlink
\DeclareCiteCommand{\textcite}
{\usebibmacro{prenote}}
{\bibhyperref{%
\usebibmacro{citeindex}%
\printnames{labelname}%
\setunit{\nameyeardelim}%
\printfield{year}%
}}
{\multicitedelim}
{\usebibmacro{postnote}}
% Alternative simple command for fully linked citations
\newcommand{\fcite}[1]{%
\hyperlink{cite.#1}{\citeauthor{#1}, \citeyear{#1}}%
}
% Make footcite also use single hyperlink
\DeclareCiteCommand{\footcite}[\mkbibfootnote]
{\usebibmacro{prenote}}
{\bibhyperref{\usebibmacro{citeindex}\usebibmacro{cite}}}
{\multicitedelim}
{\usebibmacro{postnote}}
% ==============================================================================
% Additional Citation Formatting
% ==============================================================================
% ------------------------------------------------------------------------------
% Citation punctuation
% ------------------------------------------------------------------------------
\renewcommand{\nameyeardelim}{\addcomma\space} % Comma between author and year
\renewcommand{\multicitedelim}{\addsemicolon\space} % Semicolon between multiple citations
% ------------------------------------------------------------------------------
% Author name formatting in citations
% ------------------------------------------------------------------------------
\DeclareNameAlias{sortname}{family-given} % Last name first in bibliography
\DeclareNameAlias{default}{given-family} % Normal order in citations
% ------------------------------------------------------------------------------
% URL and DOI formatting
% ------------------------------------------------------------------------------
\DeclareFieldFormat{url}{\url{#1}}
\DeclareFieldFormat{doi}{%
\ifhyperref
{\href{https://doi.org/#1}{\nolinkurl{doi:#1}}}
{\nolinkurl{doi:#1}}%
}
% ------------------------------------------------------------------------------
% Bibliography spacing
% ------------------------------------------------------------------------------
\setlength{\bibitemsep}{0.5\baselineskip} % Space between bibliography entries
\setlength{\bibhang}{2em} % Hanging indent for bibliography
% ==============================================================================
% End of Bibliography Configuration Module
% ==============================================================================

View File

@ -30,7 +30,7 @@
@{}
L{0.30\textwidth-\tabcolsep}
p{0.58\textwidth-\tabcolsep}
R{0.10\textwidth-\tabcolsep}
L{0.10\textwidth-\tabcolsep}
@{}
}}
{\end{longtable}}
@ -87,3 +87,8 @@
{\glsdative}% link cs
{\Glsdative}% link ucfirst cs
{\GLSdative}% link all caps cs
% ------------------------------------------------------------------------------
% Shortcut command for \acrshort
% ------------------------------------------------------------------------------
\newcommand{\acr}{\acrshort}

View File

@ -40,6 +40,24 @@
% Clear all header and footer fields
\fancyhf{}
\newcommand{\fancyfootL}{
\color{gray}\blenderfont
\raisebox{3pt}{
\hspace{-2pt}\@author
}
\newline
\raisebox{3pt}{
\hspace{-2pt}\ifdef{\modulename}{\modulename}{Modul-Name}
}
}
\newcommand{\fancyfootC}{
\color{gray}\blenderfont\newline
\raisebox{3pt}{
Seite~\thepage~von~\pageref*{LastPage}
}
}
% ------------------------------------------------------------------------------
% Header Configuration
% ------------------------------------------------------------------------------
@ -64,13 +82,11 @@
% ------------------------------------------------------------------------------
% Footer format: Author Name | Module Name | Page X of Y
% The footer is centered
\fancyfoot[C]{%
\color{gray}\blenderfont%
\@author%
\footerhorizspacing%
\ifdef{\modulename}{\modulename}{Modul-Name}%
\footerhorizspacing%
Seite~\thepage~von~\pageref{LastPage}%
\fancyfoot[L]{
\fancyfootL
}
\fancyfoot[C]{
\fancyfootC
}
% ==============================================================================
@ -88,13 +104,11 @@
}
\fancyhead[L]{\color{gray}\blenderfont\@title}
% Same footer as regular pages
\fancyfoot[C]{%
\color{gray}\blenderfont%
\@author%
\footerhorizspacing%
\ifdef{\modulename}{\modulename}{Modul-Name}%
\footerhorizspacing%
Seite~\thepage~von~\pageref{LastPage}%
\fancyfoot[C]{
\fancyfootC
}
\fancyfoot[L]{
\fancyfootL
}
\renewcommand{\headrulewidth}{0pt}
}
@ -112,13 +126,11 @@
\ifthenelse{\value{chapter} > 0}{\thechapter~~\leftmark}{}
}
\fancyhead[L]{\color{gray}\blenderfont\@title}
\fancyfoot[C]{%
\color{gray}\blenderfont%
\@author%
\footerhorizspacing%
\ifdef{\modulename}{\modulename}{Modul-Name}%
\footerhorizspacing%
Seite~\thepage~von~\pageref{LastPage}%
\fancyfoot[C]{
\fancyfootC
}
\fancyfoot[L]{
\fancyfootL
}
}

View File

@ -73,6 +73,7 @@
% Configuration Modules
% ------------------------------------------------------------------------------
\input{\classPath/Config/Hyperref}
\input{\classPath/Config/Bibliography}
\input{\classPath/Config/Fonts}
\input{\classPath/Config/PageSetup}
\input{\classPath/Config/Sections}

View File

@ -104,17 +104,17 @@
\begin{tikzpicture}[overlay, remember picture]
% === Main Logo(s) ===
\node[anchor=south east, inner sep=0pt, xshift=-\footerXShift, yshift=\footerYShift, opacity=0.0] (logo0) at (current page.south east) {
\strcompare{\thepage}{1}{}{
\strcompare{\thepage}{0}{}{
\includegraphics[height=\imageHeight]{\imagesPath/DUMMY_FOOT.png}
}
};
\ifnum\thepage=1
\ifnum\thepage=0
\else
% For loop to place all logos
\foreach \i in {1,...,\value{logoCounter}} {
% Calculate name for i-1
\pgfmathtruncatemacro{\prev}{\i-1}
\node[anchor=east, inner sep=0pt, xshift=-0.1cm, opacity=0.3] (logo\i) at (logo\prev.west) {
\node[anchor=east, inner sep=0pt, xshift=-0.1cm, yshift=2pt, opacity=0.3] (logo\i) at (logo\prev.west) {
\makeatletter
\testarray{LogosScales}(\i)
\setlength{\imageHeight}{1.5cm*\real{\temp@macro}*\real{\logosScale}*\real{0.55}}

View File

@ -13,7 +13,7 @@
\begin{titlepage}
\begin{tikzpicture}[overlay, remember picture]
\node[anchor=south east, inner sep=0pt, xshift=-0.1cm, yshift=0.1cm] (heart) at (current page.south east) {
\tiny\color{gray}\blenderfont Made with {\ensuremath\heartsuit} in \LaTeX
\href{https://github.com/frederikbeimgraben/HSRT-Report}{\tiny\color{gray}\blenderfont Made with {\ensuremath\heartsuit} in \LaTeX}
};
\node[anchor=north west, inner sep=0pt, xshift=1.3cm, yshift=-1.5cm, opacity=0] (logo0) at (current page.north west) {
\includegraphics[height=\imageHeight]{\imagesPath/DUMMY_FOOT.png}
@ -67,6 +67,7 @@
\vspace{2em}
\setstretch{1.0}
\section*{Abstract}
\vspace{-0.5em}
\titlepageabstract
{
\vspace*{1em}

View File

@ -37,6 +37,12 @@
% ==============================================================================
\begin{document}
% ------------------------------------------------------------------------------
% Set Page Counter to 0
% ------------------------------------------------------------------------------
% Set page counter to 0, so that the table of contents starts at page 1
\setcounter{page}{0}
% ------------------------------------------------------------------------------
% Title Page
% ------------------------------------------------------------------------------
@ -44,12 +50,6 @@
% Configuration in Settings/General.tex
\maketitle
% ------------------------------------------------------------------------------
% Reset Page Counter
% ------------------------------------------------------------------------------
% Reset page counter after title page so TOC starts at page 1
\setcounter{page}{1}
% ------------------------------------------------------------------------------
% Set Page Style
% ------------------------------------------------------------------------------
@ -69,6 +69,7 @@
\input{Content/00_toc} % Table of contents, lists, and glossaries
\input{Content/01_content} % Main document content
\input{Content/99_bibliography} % Bibliography and references
\input{Content/99_eidesstattliche}
% ------------------------------------------------------------------------------
% Glossary Processing

View File

@ -135,8 +135,8 @@ check-docker:
.PHONY: docker-build
docker-build: check-docker
@echo -e "$(BLUE)=== Building LaTeX Document with Docker ===$(NC)"
@echo -e "$(YELLOW)→ Starting Docker container...$(NC)"
@$(DOCKER_COMPOSE_CMD) up --build || { \
@echo -e "$(YELLOW)→ Starting Docker container with UID=$$(id -u) GID=$$(id -g)...$(NC)"
@HOST_UID=$$(id -u) HOST_GID=$$(id -g) $(DOCKER_COMPOSE_CMD) up --build || { \
echo -e "$(RED)✗ Docker build failed$(NC)"; \
echo -e "$(YELLOW) Try 'make docker-clean' and rebuild$(NC)"; \
exit 1; \

View File

@ -18,6 +18,57 @@
% ------------------------------------------------------------------------------
\addbibresource{Main.bib}
% ------------------------------------------------------------------------------
% Citation Hyperlink Configuration
% ------------------------------------------------------------------------------
% Make entire citation content clickable (Author, Year) instead of just parts
% This uses BibLaTeX's internal commands for better compatibility with APA style
% ------------------------------------------------------------------------------
% Use AtBeginDocument to ensure our settings override the APA style
\AtBeginDocument{%
% Store original definitions
\let\origparencite\parencite
\let\origtextcite\textcite
\let\origcite\cite
% Redefine parencite to make entire content clickable
\DeclareCiteCommand{\parencite}[\mkbibparens]
{\usebibmacro{prenote}}
{\bibhyperref{%
\usebibmacro{citeindex}%
\usebibmacro{cite}%
}}
{\multicitedelim}
{\usebibmacro{postnote}}
% Redefine textcite to make entire content clickable
\DeclareCiteCommand{\textcite}
{\boolfalse{cbx:parens}%
\usebibmacro{prenote}}
{\bibhyperref{%
\usebibmacro{citeindex}%
\printnames{labelname}%
\setunit{\addspace}%
\bibopenparen\usebibmacro{citeyear}\bibcloseparen%
}}
{\ifbool{cbx:parens}
{\bibcloseparen\global\boolfalse{cbx:parens}}
{}%
\multicitedelim}
{\usebibmacro{postnote}}
% Redefine cite to make entire content clickable
\DeclareCiteCommand{\cite}
{\usebibmacro{prenote}}
{\bibhyperref{%
\usebibmacro{citeindex}%
\usebibmacro{cite}%
}}
{\multicitedelim}
{\usebibmacro{postnote}}
}
% ------------------------------------------------------------------------------
% Document Settings Import
% ------------------------------------------------------------------------------
@ -26,6 +77,7 @@
% ------------------------------------------------------------------------------
\input{Settings/General} % General document settings (title, author, etc.)
\input{Settings/Logos} % Logo configuration and positioning
\input{Settings/CleverefNames} % Cleveref cross-reference names configuration
% ------------------------------------------------------------------------------
% Custom Commands and Macros (Optional)

126
README.md
View File

@ -1,21 +1,24 @@
# HSRTReport LaTeX Template
[![Build LaTeX Document](https://github.com/frederikbeimgraben/HSRT-Report/actions/workflows/release.yml/badge.svg)](https://github.com/frederikbeimgraben/HSRT-Report/actions/workflows/release.yml)
[![GitHub release](https://img.shields.io/github/release/frederikbeimgraben/HSRT-Report.svg)](https://github.com/frederikbeimgraben/HSRT-Report/releases/latest)
[![License: CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/)
A professional LaTeX report template for academic papers and theses at the University of Applied Sciences Reutlingen (Hochschule Reutlingen).
## 📋 Table of Contents
- [Overview](#overview)
- [Features](#features)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Project Structure](#project-structure)
- [Usage](#usage)
- [Document Class Options](#document-class-options)
- [Customization](#customization)
- [Building the Document](#building-the-document)
- [Troubleshooting](#troubleshooting)
- [Contributing](#contributing)
- [License](#license)
- [Overview](#-overview)
- [Features](#-features)
- [Prerequisites](#-prerequisites)
- [Installation](#-installation)
- [Project Structure](#-project-structure)
- [Usage](#-usage)
- [Document Class Options](#-document-class-options)
- [Customization](#-customization)
- [Building the Document](#-building-the-document)
- [Troubleshooting](#-troubleshooting)
- [License](#-license)
## 📖 Overview
@ -39,6 +42,7 @@ The HSRTReport class is a customized LaTeX document class based on KOMA-Script's
### Option 1: Docker (Recommended)
- **ENV**: Copy the `.env.example` and rename it to `.env`
- **Docker**: [Install Docker](https://docs.docker.com/get-docker/)
- **Docker Compose**: Supports both variants:
- `docker-compose` (standalone tool)
@ -69,22 +73,22 @@ The template automatically loads all necessary packages. Key dependencies includ
## 📁 Project Structure
```
SAT-WiSe-25-26/
```sh
HSRT-Report/
├── HSRTReport/ # Document class files
│ ├── HSRTReport.cls # Main class definition
│ ├── Assets/ # Fonts and images
├── HSRTReport/ # Document class files
│ ├── HSRTReport.cls # Main class definition
│ ├── Assets/ # Fonts and images
│ │ ├── Fonts/ # Custom fonts
│ │ └── Images/ # Logo and graphics
│ ├── Config/ # Configuration modules
│ │ ├── Fonts.tex # Font settings
│ │ ├── PageSetup.tex # Page layout
│ │ └── ... # Other configurations
│ │ └── ... # Other configurations
│ ├── Imports/ # Package imports
│ │ ├── Core.tex # Core packages
│ │ ├── Document.tex # Document structure
│ │ └── ... # Other imports
│ │ └── ... # Other imports
│ ├── Modules/ # Feature modules
│ │ ├── Content/ # Content-related features
│ │ ├── Layout/ # Layout features
@ -92,7 +96,7 @@ SAT-WiSe-25-26/
│ └── Pages/ # Page templates
│ └── Titlepage.tex # Title page definition
├── Content/ # Document content
├── Content/ # Document content
│ ├── 00_toc.tex # Table of contents and lists
│ ├── 01_content.tex # Chapter loader (auto-managed)
│ ├── 99_bibliography.tex # Bibliography
@ -102,42 +106,31 @@ SAT-WiSe-25-26/
│ │ └── ...
│ └── Images/ # Document images
├── Settings/ # Document settings
├── Settings/ # Document settings
│ ├── General.tex # General settings
│ ├── CleverefNames.tex # \cref names configuration
│ └── Logos.tex # Logo configuration
├── scripts/ # Chapter management scripts
├── scripts/ # Chapter management scripts
│ ├── create_chapter.sh # Create new chapters
│ ├── list_chapters.sh # List all chapters
│ ├── delete_chapter.sh # Delete chapters
│ └── show_chapter.sh # View chapter content
├── Main.tex # Main document file
├── Main.tex # Main document file
├── Preamble.tex # Document preamble
├── Glossary.tex # Glossary definitions
├── Main.bib # Bibliography database
├── Makefile # Build automation
├── .latexmkrc # Latexmk configuration
├── docker-compose.yml # Docker configuration
└── QUICKSTART.md # Quick start guide
└── docker-compose.yml # Docker configuration
```
## 📝 Usage
### Basic Document Setup
1. **Edit `Main.tex`** to configure document class options:
```latex
\documentclass[
11pt, % Font size (10pt, 11pt, 12pt)
paper=a4, % Paper size
oneside, % Single-sided (use twoside for double)
DIV=14, % Page layout calculation
onecolumn % Single column layout
]{HSRTReport/HSRTReport}
```
2. **Configure document metadata** in `Settings/General.tex`:
1. **Configure document metadata** in `Settings/General.tex`:
```latex
% Document title
\title{Your Document Title}
@ -149,7 +142,7 @@ SAT-WiSe-25-26/
% ... additional fields
```
3. **Add your content** using one of these methods:
2. **Add your content** using one of these methods:
- **Automatic (Recommended)**: Use scripts to manage chapters
```bash
./scripts/create_chapter.sh 02 methodology
@ -158,9 +151,9 @@ SAT-WiSe-25-26/
```
- **Manual**: Create files in `Content/Chapters/` and add them to `Content/01_content.tex`
4. **Manage bibliography** in `Main.bib` using BibTeX format
3. **Manage bibliography** in `Main.bib` using BibTeX format (I recommend using a tool like [Zotero](https://www.zotero.org/))
5. **Define glossary entries** in `Glossary.tex`:
4. **Define glossary entries** in `Glossary.tex`:
```latex
\newglossaryentry{term}{
name=Term,
@ -296,6 +289,45 @@ make distclean
latexmk -xelatex -shell-escape -bibtex Main.tex
```
## 🚀 CI/CD Pipeline
### Continuous Integration
The project includes GitHub Actions workflows for automated building and testing:
#### Release Workflow (`release.yml`)
- **Triggers on:** Version tags (e.g., `v1.0.0`, `release-2024-10`)
- **Actions:**
- Creates a GitHub release
- Attaches the PDF with version number
- Generates release notes automatically
- Archives artifacts for 90 days
### Creating a Release
To create a new release with the PDF:
```bash
# Tag the current commit
git tag -a v1.X.X -m "Release version 1.X.X"
# Push the tag to trigger the release workflow
git push origin v1.X.X
```
The workflow will automatically:
1. Build the document
2. Create a GitHub release
3. Attach the PDF to the release
4. Generate release notes from commit history
### Accessing Build Artifacts
1. Go to the **Actions** tab in your GitHub repository
2. Select a workflow run
3. Scroll down to **Artifacts**
4. Download `Main.pdf`
## 🐛 Troubleshooting
### Common Issues
@ -351,24 +383,14 @@ For questions, issues, or suggestions:
## 🆕 Recent Updates
### Version 2.0 (October 2024)
### Version 1.0 (October 2025)
- Added Docker support for containerized compilation
- Implemented advanced page break control system
- Enhanced section spacing (4.5ex before sections, 3.5ex before subsections)
- Added smart TOC chapter grouping for short chapters
- Updated header format with em-dash separator (e.g., "1 Introduction")
- Fixed page numbering (TOC now starts at page 1)
- Added comprehensive bibliography with academic writing references
- Improved listing and itemize environment protection from page breaks
### Key Configuration Changes
- **Page Margins**: Unified 2cm on all sides
- **Base Font Size**: 11pt
- **Line Spacing**: 1.5x (`baselinestretch=1.5`)
- **Paragraph Spacing**: 6pt
- **Section Minimum Content**: 12 baseline skips (~2 paragraphs)
- **Citation Style**: APA format via BibLaTeX
---
*Last updated: October 2024*
*Documentation Last updated: 30th of October 2025*

127
Settings/CleverefNames.tex Normal file
View File

@ -0,0 +1,127 @@
% !TEX root = ../Main.tex
% ==============================================================================
% Cleveref Names Configuration
% ==============================================================================
% Description: This file configures the names used by the cleveref package
% for cross-references. These appear when using \cref{} or \Cref{}
% commands in the document.
% Usage: This file is loaded in the preamble after cleveref is loaded.
% Modify the names below to customize how references appear.
% Author: [Your Name]
% Date: [Date]
% ==============================================================================
% ------------------------------------------------------------------------------
% Cleveref Language-Specific Names
% ------------------------------------------------------------------------------
% Configure the names for German language cross-references
% Format: \crefname{type}{singular}{plural}
% \Crefname{type}{Singular}{Plural} (for capitalized version)
% ------------------------------------------------------------------------------
% --- Figure References ---
\crefname{figure}{Abbildung}{Abbildungen}
\Crefname{figure}{Abbildung}{Abbildungen}
% --- Table References ---
\crefname{table}{Tabelle}{Tabellen}
\Crefname{table}{Tabelle}{Tabellen}
% --- Equation References ---
\crefname{equation}{Gleichung}{Gleichungen}
\Crefname{equation}{Gleichung}{Gleichungen}
% --- Chapter References ---
\crefname{chapter}{Kapitel}{Kapitel}
\Crefname{chapter}{Kapitel}{Kapitel}
% --- Section References ---
\crefname{section}{Abschnitt}{Abschnitte}
\Crefname{section}{Abschnitt}{Abschnitte}
% --- Subsection References ---
\crefname{subsection}{Unterabschnitt}{Unterabschnitte}
\Crefname{subsection}{Unterabschnitt}{Unterabschnitte}
% --- Subsubsection References ---
\crefname{subsubsection}{Unterunterabschnitt}{Unterunterabschnitte}
\Crefname{subsubsection}{Unterunterabschnitt}{Unterunterabschnitte}
% --- Listing References ---
\crefname{listing}{Listing}{Codeblock}
\Crefname{listing}{Listing}{Codeblock}
% --- Appendix References ---
\crefname{appendix}{Anhang}{Anhänge}
\Crefname{appendix}{Anhang}{Anhänge}
% --- Algorithm References (if algorithms package is used) ---
\crefname{algorithm}{Algorithmus}{Algorithmen}
\Crefname{algorithm}{Algorithmus}{Algorithmen}
% --- Theorem-like Environments (if defined) ---
\crefname{theorem}{Theorem}{Theoreme}
\Crefname{theorem}{Theorem}{Theoreme}
\crefname{lemma}{Lemma}{Lemmata}
\Crefname{lemma}{Lemma}{Lemmata}
\crefname{corollary}{Korollar}{Korollare}
\Crefname{corollary}{Korollar}{Korollare}
\crefname{proposition}{Proposition}{Propositionen}
\Crefname{proposition}{Proposition}{Propositionen}
\crefname{definition}{Definition}{Definitionen}
\Crefname{definition}{Definition}{Definitionen}
\crefname{example}{Beispiel}{Beispiele}
\Crefname{example}{Beispiel}{Beispiele}
\crefname{remark}{Bemerkung}{Bemerkungen}
\Crefname{remark}{Bemerkung}{Bemerkungen}
% --- Footnote References ---
\crefname{footnote}{Fußnote}{Fußnoten}
\Crefname{footnote}{Fußnote}{Fußnoten}
% --- Item References (for enumerate environments) ---
\crefname{enumi}{Punkt}{Punkte}
\Crefname{enumi}{Punkt}{Punkte}
\crefname{enumii}{Punkt}{Punkte}
\Crefname{enumii}{Punkt}{Punkte}
\crefname{enumiii}{Punkt}{Punkte}
\Crefname{enumiii}{Punkt}{Punkte}
\crefname{enumiv}{Punkt}{Punkte}
\Crefname{enumiv}{Punkt}{Punkte}
% --- Page References ---
\crefname{page}{Seite}{Seiten}
\Crefname{page}{Seite}{Seiten}
% --- Line References (if lineno package is used) ---
\crefname{line}{Zeile}{Zeilen}
\Crefname{line}{Zeile}{Zeilen}
% ------------------------------------------------------------------------------
% Cleveref Format Configuration (Optional)
% ------------------------------------------------------------------------------
% You can also customize the format of references here
% For example, to change how equation references appear:
% \crefformat{equation}{Gleichung~(#2#1#3)}
% \Crefformat{equation}{Gleichung~(#2#1#3)}
% ------------------------------------------------------------------------------
% ------------------------------------------------------------------------------
% Multi-reference Configuration (Optional)
% ------------------------------------------------------------------------------
% Configure how multiple references are formatted
% Example: \crefmultiformat{equation}{Gleichungen~#2#1#3}{ und~#2#1#3}{, #2#1#3}{ und~#2#1#3}
% ------------------------------------------------------------------------------
% ==============================================================================
% End of Cleveref Names Configuration
% ==============================================================================

View File

@ -33,7 +33,7 @@
% This appears on the title page and in PDF metadata
% For multi-line titles, use \\ for line breaks
% ------------------------------------------------------------------------------
\title{Vorgaben zur Formatierung der Seminararbeit}
\title{Template für wissenschaftliche Arbeiten}
% ------------------------------------------------------------------------------
% Title Page Data Fields
@ -48,7 +48,7 @@
% The main topic or theme of the document
\AddTitlePageDataLine{Thema}{
Thema-XXX: \newline
Vorgaben zur Formatierung der Seminararbeit
Template für wissenschaftliche Arbeiten
}
% Add spacing between sections
@ -83,13 +83,13 @@
% Module/Course information
\AddTitlePageDataLine{Modul}{
METI6.3 \newline
Seminar Ausgewählter Themen der Medizinisch-Technischen Informatik
METIX.X \newline
Mustermodul
}
% --- Supervisor Information ---
% Professor or supervisor name
\AddTitlePageDataLine{Dozent:in}{Prof. Dr. Sven Steddin}
\AddTitlePageDataLine{Dozent:in}{Prof. Dr. Max Mustermann}
% --- Semester Information ---
% Academic semester (e.g., Wintersemester 2024/2025)
@ -147,7 +147,7 @@
% This is typically the course or module code and name
% Example: \newcommand{\modulename}{SAT - Seminararbeit Technik}
% ------------------------------------------------------------------------------
\newcommand{\modulename}{METI6.3 SAT WiSe 25/26}
\newcommand{\modulename}{METIX.Y Mustermodul WiSe XX/YY}
% ------------------------------------------------------------------------------
% List of Equations Configuration

View File

@ -21,11 +21,21 @@ services:
build:
# Build context is the current directory
context: .
# Pass the current directory's UID and GID as build arguments
# These are automatically set by the Makefile, or can be manually provided:
# HOST_UID=$(id -u) HOST_GID=$(id -g) docker-compose up --build
args:
HOST_UID: ${HOST_UID:-1000}
HOST_GID: ${HOST_GID:-1000}
# Inline Dockerfile definition for additional packages
dockerfile_inline: |
# Start from the full TeXLive image (includes XeLaTeX, Biber, etc.)
FROM texlive/texlive:latest
# Accept build arguments for the host directory's UID and GID
ARG HOST_UID=1000
ARG HOST_GID=1000
# Update package lists to ensure we get the latest versions
RUN apt update -y
@ -33,16 +43,39 @@ services:
# Required for processing SVG graphics in the document
RUN apt install inkscape -y
# Create a group with the host directory's GID
# The '|| true' ensures the command succeeds even if the group already exists
RUN groupadd -g ${HOST_GID} texuser 2>/dev/null || true
# Create a user with the host directory's UID and GID
# - Same UID/GID as the host directory to avoid permission issues
# - Home directory at /home/texuser
# - Default shell /bin/bash
# If UID is taken in container, rename the user with the ID ${HOST_UID} to texuser
RUN useradd -m -u ${HOST_UID} -g ${HOST_GID} -s /bin/bash texuser || \
usermod --login texuser "$(id -nu ${HOST_UID})"
# Make /data and chown it to the user
RUN mkdir /data && \
chown -R ${HOST_UID}:${HOST_GID} /data
# Set /data as the user home
RUN usermod -d /data texuser
# Set /data as the working directory
WORKDIR /data
# Set the default user for running commands
# All subsequent commands will run as this user
USER texuser
# Volume mappings
volumes:
# Mount the entire project directory to /data in the container
# This allows the container to access all project files and write outputs
- ./:/data
- ./:/data:Z
# Working directory configuration
# Previous project-specific path (kept for reference):
# working_dir: /data/Projektbeschreibung-MKI-METI-Projekt
# Current: Set to /data root for general use
working_dir: /data
# Default command when container starts