Skip to content

schuler-henry/dhbw-latex-template

Repository files navigation

dhbw-latex-template

Dieses Repository enthält eine Latex-Vorlage welche für sämtliche Arbeiten an der DHBW eingesetzt werden kann. Die Vorlage garantiert keine vollständige Einhaltung der Anforderungen für Format und Layout nach den Richtlinien der DHBW. Die Vorlage orientiert sich aber an den Vorschriften der Fakultät Technik an der DHBW Ravensburg Campus Friedrichshafen und versucht diese bestmöglich einzuhalten (Stand 22.04.2022).

Die Vorlage ist universal einsetzbar für T1000, T2000, T3000, die Studienarbeit, die Bachelorarbeit, sowie sonstige Projekte während der Theorie-Semester.

Overview

How to use

  1. Installiere einen beliebigen Latex-Editor (getestet unter: VS-Code-Extension)
  2. Klone das Repo auf deine Maschine
    git clone https://github.com/schuler-henry/dhbw-latex-template.git
  3. main.tex
    1. Trage die relevanten Daten in die Variablen ein.

      Somit werden sämtliche Informationen automatisch auf dem Deckblatt etc. ergänzt!

      \def\vFirmenlogoPfad{}                  %% relativer Pfad Bsp.: images/Firmenlogo.png
      \def\vDHBWLogoPfad{images/DHBW_logo.jpg}      %% relativer Pfad Bsp.: images/DHBW_logo.jpg
      \def\vUnterschrift{}                    %% Pfad zu Bild mit Unterschrift (für digitale Abgabe) Bsp.: images/Unterschrift.png
      
      \def\vTitel{}                           %% 
      \def\vUntertitel{}                      %% 
      \def\vArbeitstyp{}                      %% Projektarbeit/Seminararbeit/Bachelorarbeit
      \def\vArbeitsbezeichnung{}              %% T1000/T2000/T3000
      
      \def\vAutor{}                           %% Vorname Nachname
      \def\vMatrikelnummer{}                  %% 7-stellige Zahl
      \def\vKursKuerzel{}                     %% Bsp.: TIT20
      \def\vPhasenbezeichnung{}               %% Praxisphase/Theoriephase
      \def\vStudienJahr{}                     %% erste/zweite/dritte
      \def\vDHBWStandort{}                    %% Bsp.: Ravensburg
      \def\vDHBWCampus{}                      %% Bsp.: Friedrichshafen
      \def\vFakultaet{}                       %% Technik/Wirtschaft
      \def\vStudiengang{}                     %% Informationstechnik/...
      
      \def\vBetrieb{}                         %% 
      \def\vBearbeitungsort{}                 %% 
      \def\vAbteilung{}                       %% 
      \def\vBetreuer{}                        %% Vorname Nachname
      
      \def\vAbgabedatum{\today}               %% DD. MONTH YYYY
      \def\vBearbeitungszeitraum{}            %% DD.MM.YYYY - DD.MM.YYYY
    2. Hier können eigene Befehle angelegt werden

      Die Befehle \textXXXXX können individuell angepasst und verwendet werden, sodass Klassennamen o.ä. im Text speziell hervorgehoben werden. Verwendung im Text: \textFunktion{doSomething()}. "#1" wird dabei durch den angegebenen Text (hier: "doSomething()") ersetzt.

      %%%%%%%%%%%%%%%%%%%%%%%%% Eigene Kommandos %%%%%%%%%%%%%%%%%%%%%%%%%
      % Definition von \gqq{}: Text in Anführungszeichen
      \newcommand{\gqq}[1]{\glqq #1\grqq}
      % Spezielle Hervorhebung von Schlüsselwörtern
      \newcommand{\textOrdner}[1]{\texttt{#1}}
      \newcommand{\textVariable}[1]{\texttt{#1}}
      \newcommand{\textKlasse}[1]{\texttt{#1}}
      \newcommand{\textFunktion}[1]{\texttt{#1}}
    3. Durch auskommentieren der einzelnen Zeilen können Verzeichnisse eingebunden oder ausgeschlossen werden:
      %%%%%%%%%%%%%%%%%%% Einführung und Verzeichnisse %%%%%%%%%%%%%%%%%%%
      \pagenumbering{Roman}
      
      \include{pages/titel}
      % \include{pages/sperrvermerk}
      \include{pages/selbststaendigkeitserklaerung}
      \include{pages/abstract}
      \include{pages/inhaltsverzeichnis}
      \include{pages/abkuerzungsverzeichnis}
      \include{pages/abbildungsverzeichnis}
      \include{pages/tabellenverzeichnis}
      \include{pages/listingsverzeichnis}
      % \include{pages/vorwort}
    4. Weiterhin können hier eigenen Kapitel hinzugefügt werden.
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      %%%%                   EIGENE KAPITEL EINFÜGEN                  %%%%
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      \include{chapter/Einleitung}
  4. /chapter
    1. In diesem Ordner können neue Kapitel angelegt werden (.tex Dateien).
  5. /images
    1. Hier können sämtliche Bilder abgelegt werden.

      Hier befindet sich beispielsweise auch das Logo der DHBW Friedrichshafen welches auf dem Deckblatt angezeigt wird.

  6. /literatur/literatur.bib
    1. Die Vorlage verwendet Bibtex. Die dazugehörige .bib Datei befindet sich hier.

      Nur die Datei literature.bib wird automatisch erkannt, andersnamige Dateien müssen manuell in main.tex eingebunden werden.

  7. /pages
    1. abkuerzungsverzeichnis.tex
      1. Hier können eigene Abkürzungen (Akronyme) angelegt werden.
        \acro{DHBW}[DHBW]{Duale Hochschule Ba\-den-\-Würt\-tem\-berg}
        \acroplural{DHBW}[DHBW]{Dualen Hochschule Ba\-den-\-Würt\-tem\-berg}
        \acro{<REFERENZ-NAME>}[<KÜRZEL>]{<AUSGESCHRIEBEN>}
      2. Referenzierung im Text:
        \ac{DHBW}   % Singular
        \acp{DHBW}  % Plural

        Bei der ersten Referenzierung wird die Langform mit Kürzel ausgegeben, für alle folgenden ausschließlich das Kürzel.

    2. abstract.tex
      1. Hier kann der Text für das Abstract sowohl in Deutsch, als auch in Englisch angegeben werden.
      2. Weiterhin können sowohl für die deutsch, als auch die englische Version Keywords angegeben werden.
    3. anhang.tex
      1. Hier können sämtliche Anhänge eingebunden werden.
    4. vorwort.tex
      1. Hier kann bei Bedarf ein Vorwort formuliert werden.

Nicht genannte Dateien müssen grundsätzlich nicht bearbeitet werden, da diese nur Verzeichnisse einbinden. Auch die getroffenen Einstellungen in main.tex müssen nicht bearbeitet werden. Eigene Bibliotheken und Definitionen können hier aber eingebunden werden (Bestehende Module könnten dadurch jedoch beeinflusst werden).

Release and Deploy

Die folgenden Automatisierungen sind in der Datei new_release.yml definiert und beschreiben GitHub Actions.

Um automatisch einen Release zu erstellen, muss ein Tag im Format v*.*.* erstellt und auf das Repository gepusht werden. Dies wird mit den Folgenden Befehlen erreicht:

  1. Tag erstellen
    git tag v*.*.*
  2. Tag pushen
    git push origin v*.*.*

Release

Die GitHub Action xu-cheng/latex-action@v2 baut zunächst die PDF aus den Latex-Dokumenten des Repository.

Anschließend erstellt die GitHub Action marvinpinto/action-automatic-releases@latest den Release unter Einbindung der generierten PDF-Datei. Zusätzlich wird ein Changelog generiert.

Deployment

Für das automatische Deployment mit GitHub Pages wird die GitHub Action crazy-max/ghaction-github-pages@v3 verwendet.

Zunächst muss GitHub Pages in den Repository-Einstellungen konfiguriert werden. Dazu müssen die Folgenden Schritte ausgeführt werden:

  1. Öffne die Einstellungen des Repository
  2. Wähle im Optionsmenü den Punkt "Pages"
  3. Wähle als Quelle "Deploy from branch"
  4. Wähle als Branch-Namen "gh-pages" im "/root" Verzeichnis
  5. Aktiviere den Punkt "Enforce HTTPS"
  6. Wähle im Optionsmenü den Punkt "Actions" und den Unterpunkt "General"
  7. Setze die "Workflow permissions" auf "Read and write permissions"

Die URL des Deployments lautet: <user>.github.io/<repo-name>

Anschließend kann das automatische Deployment in der Datei new_releases.yml angepasst werden.

  1. Anpassen der anzuzeigenden HTML-Datei

    - name: Create build destination
       run: |
         mkdir public
         cat > public/index.html <<EOL
         <!doctype html>
         <html>
         <head>
           <title>GitHub Pages deployed!</title>
         </head>
         <body>
           <div style="position: absolute; left: 0; right: 0; bottom: 0; top: 0;">
             <iframe src="./main.pdf" width="100%" height="100%" frameborder="0">
             </iframe>
           </div>
         </body>
         </html>
         EOL

    Standardmäßig zeigt GitHub Pages unter Verwendung dieses HTML-Codes die PDF-Datei "main.pdf". Solltest du den Namen deiner main.tex Datei verändert haben, musst du hier auch den Namen in den kompilierten Namen der PDF ändern.

    Alternativ kannst du an dieser Stelle auch deinen eigenen HTML-Code einsetzen. Bedenke: Ohne Anpassungen des Deployments steht dir lediglich die generierte PDF-Datei im Repository zur Verfügung.

  2. Verbinden des Deployment mit einer eigenen Domain

    - name: Deploy to GitHub Pages
      if: success()
      uses: crazy-max/ghaction-github-pages@v3
      with:
        target_branch: gh-pages
        build_dir: public
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    Unter dem Schlüssel "with:" kann neben der target_branch auch mittels des Keywords "fqdn:" die Zieldomain angegeben werden.

    with:
      fqdn: my-domain-name.de

    Weitere Informationen zum Konfigurieren einer benutzerdefinierten Domain (Pages + Provider): GitHub Docs

Für weitere Personalisierungen: crazy-max/ghaction-github-pages@v3 Dokumentation

Feedback/Issues

Sollten Sie Fehler in der Latex Vorlage finden oder Anregungen zur Verbesserung haben, können Sie diese in Form eines Issue unter dem Issue-Tab einreichen.

Author

Copyright (c) 2022 Henry Schuler

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.