diff --git a/.vscode/settings.json b/.vscode/settings.json index 3cf714b..c3a4601 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,51 +1,83 @@ { "cSpell.words": [ - "acro", "amssymb", "Autorreferat", "belowskip", "Bera", "biber", + "bspw", + "CALLGLO", "captionsetup", "cauthor", + "CEINR", "CFANCYFONTS", + "CHASABSTRACT", "citestyle", + "CKUSCHE", + "Computerphile", "csquotes", + "CTAN", "deckblatt", "defernumbers", "dhge", "dhgefigure", + "dhgeparagraph", "einkommentieren", "enumitem", "etoolbox", "euler", "fancyhdr", "fancyplain", + "footcite", "footmisc", "giveninits", + "glspl", + "graphicspath", "graphicx", + "Hahner", "hidelinks", + "hovern", "hyperfootnotes", "ibidtracker", "icomma", "ifthen", + "includegraphics", + "Kogel", "labelfont", + "latexmk", "literatur", "lmodern", + "longfigure", + "longnewglossaryentry", + "longplural", "mathrm", "minalphanames", "minbibnames", + "newacronym", + "newcommand", + "newglossaryentry", "ngerman", "Palatino", "pdfauthor", + "pdflatex", + "Plantuml", + "Prenote", + "Prillwitz", + "Pygments", "secnumdepth", "setspace", + "shortplural", "singlelinecheck", + "Stackoverflow", + "supercite", + "synctex", + "texstudio", "Thesenblatt", "titletoc", "tocdepth", "tocloft", "totcount", + "usepackage", "xparse", "xpatch" ] diff --git a/.vscode/tex_snippets.code-snippets b/.vscode/tex_snippets.code-snippets index 3dfb0eb..9f10b36 100644 --- a/.vscode/tex_snippets.code-snippets +++ b/.vscode/tex_snippets.code-snippets @@ -9,19 +9,16 @@ "Abkürzung": { "prefix": ["abk", "dhgeabk"], // auf welchem namen der snippet auffindbar ist "scope": "latex,tex", // welche files der snippet betreffen soll - "body": ["\\DeclareAcronym{${1:ac-used-name}}{", - " short = {${2:abk}},", - " long = {${3:non_abk}}", - "}" + "body": ["\\newacronym{${1:abk-id}}{{${2:abk}}{${3:non_abk}}}" ], // einzufügender snippet - "description": "Insert \\DeclareAcronym" // beschreibung + "description": "Insert singleline \\DeclareAcronym" // beschreibung }, - "Abkürzung - singleline": { - "prefix": ["singleabk", "singledhgeabk"], // auf welchem namen der snippet auffindbar ist + "Glossar": { + "prefix": ["gls", "dhgegls"], // auf welchem namen der snippet auffindbar ist "scope": "latex,tex", // welche files der snippet betreffen soll - "body": ["\\DeclareAcronym{${1:ac-used-name}}{short = {${2:abk}}, long = {${3:non_abk}}}" + "body": ["\\newglossaryentry{${1:gls-id}}{name={${2:name}},description={${3:desc}}}" ], // einzufügender snippet - "description": "Insert singleline \\DeclareAcronym" // beschreibung + "description": "Insert \\newglossaryentry" // beschreibung }, // Im 'body' könne parameter verwendet werden, um bestimmte Ziele zu erreichen. (z.B. tabbing) // Nummern entsprechen Reihenfolge diff --git a/README.md b/README.md index 3b11073..6839fa5 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,11 @@ Inoffizielles LaTeX-Template für Projektarbeiten für Technik-Studiengänge an - [Abbildungen](#abbildungen) - [LaTeX Abbildungen](#latex-abbildungen) - [dhge-latex Abbildungen](#dhge-latex-abbildungen) -- [Abkürzungen](#abkürzungen) +- [Abkürzungen und Glossar-Einträge](#abkürzungen-und-glossar-einträge) + - [Abkürzungen](#abkürzungen) + - [Glossar-Einträge](#glossar-einträge) + - [Ganzes Glossar forcieren](#ganzes-glossar-forcieren) + - [Weiterführende Dokumentation](#weiterführende-dokumentation) - [Anlagenverzeichnis](#anlagenverzeichnis) - [Verwendung](#verwendung) - [Longfigure](#longfigure) @@ -38,6 +42,8 @@ Inoffizielles LaTeX-Template für Projektarbeiten für Technik-Studiengänge an - [Probleme im Kusche Mode](#probleme-im-kusche-mode) - [Abstract](#abstract) - [Absatztrenner](#absatztrenner) +- [Troubleshooting](#troubleshooting) + - [Glossaries](#glossaries) # Installation @@ -162,7 +168,7 @@ Wer diese Fonts **nicht** verwenden möchte, kann in ``config.tex`` ``CFANCYFONT Dafür wird der `footcite` Befehl genutzt. Dieser besitzt folgende Syntax: ```latex -\footcite[Postnote]{literatur_id} +\footcite[Postnote]{} ``` Beispiel: @@ -176,7 +182,7 @@ Beispiel: Alternativ kann nun auch der `supercite` Befehl verwendet werden: ```latex -\supercite[Postnote]{literatur_id} +\supercite[Postnote]{} ``` Beispiel: @@ -216,7 +222,7 @@ Mehrere Autoren können mit `and` verknüpft werden. Beispielsweise: `author={Fe Wird `\footcite` oder `\supercite` mit beiden optionalen Parametern aufgerufen, so ist die Syntax wie folgt: ```latex -\footcite[Prenote][Postnote]{id} +\footcite[Prenote][Postnote]{} ``` Beispiel: @@ -230,7 +236,7 @@ Beispiel: - Abbildungen werden durch das Template in `assets/img` gefunden. - `\includegraphics{}` entspricht `\includegraphics{assets/img/}` - anpassbar durch `\graphicspath {{}}` - - **``** ist aus der sicht von `build/` zu sehen + - **``** ist aus der Sicht von `build/` zu sehen - `\graphicspath {{../assets/img/}}}` ## LaTeX Abbildungen @@ -290,121 +296,137 @@ Beispiel: Der `dhgefigure` Befehl wird nun auch als Snippet für Visual-Studio-Code mitgeliefert. -# Abkürzungen +# Abkürzungen und Glossar-Einträge + +Das Template verwendet das Paket ``glossaries``. +Entsprechend der Empfehlungen der DHGE im Bereich Technik/Gera wird ein Abschnitt namens "Abkürzungsverzeichnis" generiert, was allerdings auch wie ein volles Glossar verwendet werden kann. + +Für Arbeiten, die von Prof. Dr. Kusche betreut werden, heißt der Abschnitt "Glossar", siehe [Kusche Mode](#kusche-mode) + +## Abkürzungen ```latex -\DeclareAcronym{1}{ - short = {2}, - long = {3} - } +\newacronym{}{}{} ``` -1. ID der Abkürzung, damit wird im Fließtext später referenziert. -2. Die Abkürzung selbst -3. Der ausgeschriebene Begriff +1. ````: ID der Abkürzung, damit wird im Fließtext später referenziert. +2. ````: Die Abkürzung selbst +3. ````: Der ausgeschriebene Begriff Beispielweise: ```latex -\DeclareAcronym{dhge}{ - short = {DHGE}, - long = {Duale Hochschule Gera-Eisenach} -} +\newacronym{ac:dhge}{DHGE}{Duale Hochschule Gera-Eisenach} ``` Im Fließtext wird dann mit ```latex -\ac{dhge} +\gls{ac:dhge} ``` die Abkürzung aufgerufen. Dies sind die Pflicht-Argumente. Es gibt weitere Einstellungsmöglichkeiten bei dem Deklarieren von Abkürzungen, die in der unten stehenden Dokumentation nachgelesen werden können. Eine sinnvolle Auswahl davon: ```latex -\DeclareAcronym{1}{ - short = {2}, - long = {3}, - short-plural = {4}, - long-plural = {5}, - alt = {8} - } +\newacronym [ + longplural={1}, + shortplural={2} +] {3}{4}{5} ``` -ODER +1. Die ausgeschriebene Pluralform +2. Die Pluralform der Abkürzung +3. ID der Abkürzung, damit wird im Fließtext später referenziert +4. Die Abkürzung selbst +5. Der ausgeschriebene Begriff -```latex -\DeclareAcronym{1}{ - short = {2}, - long = {3}, - short-plural-form = {6}, - long-plural-form = {7}, - alt = {8} - } -``` +Die Optionen 1 und 2 sind optional. +Beachten Sie jedoch, dass die Optionen mit einem Komma getrennt sind. -1. ID der Abkürzung, damit wird im Fließtext später referenziert. -2. Die Abkürzung selbst -3. Der ausgeschriebene Begriff -4. Buchstabe oder Silbe, die der Abkürzung im Plural angehangen wird -5. Buchstabe oder Silbe, die dem ausgeschriebenen Wort im Plural angehangen wird -6. Plural-Form der Abkürzung, ersetzt die Abkürzung komplett -7. Plural-Form des Wortes, ersetzt das Wort komplett -8. Alternative zum ausgeschriebenen Wort +An einem Beispiel: -Die Angaben 4 bis 8 sind optional. +```latex +\newacronym [ + longplural={Jacobi-Matrizen}, + shortplural={JMs} +] {ac:jm}{JM}{Jacobi-Matrix} +``` Die Pluralform lässt sich mit ```latex -\acp{1} +\glspl{} ``` -aufrufen, die Alternativform mit +aufrufen. +Ebenso kann der erste Buchstabe einer Abkürzung groß geschrieben werden (wenn er in der Abkürzung selbst klein geschrieben ist): ``\Gls{}``. +Das ist kombinierbar mit ``\glspl{}``, also: ```latex -\aca{1} +\Glspl{} ``` -Beispiel: +Das Abkürzungsverzeichnis wird dann automatisch erstellt. Dabei ist zu beachten, dass unter Umständen bis zu zwei Kompilierungen notwendig sind, wenn eine Abkürzung hinzugefügt oder entfernt wurde, damit das Verzeichnis korrekt erstellt wird. + +*** + +Für das Erstellen von Abkürzungen wird ein Snippet für Visual-Studio-Code mitgeliefert: `abk` / `dhgeabk`. + +Für mehr Informationen kann die [Glossaries Package Documentation](https://ctan.org/pkg/glossaries?lang=de) gelesen werden. + +## Glossar-Einträge + +Glossar-Einträge verhalten sich ähnlich zu den eben vorgestellten Abkürzungen und werden ebenso mit ``\gls{}`` oder möglichen Alternativ-Formen aufgerufen. + +Glossar-Einträge werden im einfachsten Falle wie folgt angelegt: ```latex -\DeclareAcronym{jpg}{ - short = {JPEG}, - long = {Joint Photographic Experts Group}, - short-plural-form = {JPEGs}, - long-plural-form = {Joint Photographic Experts Groups}, - alt = {JPG} - } +\newglossaryentry{1}{ + name={2}, + description={3} +} ``` -ODER +1. ID des Eintrages, damit wird im Fließtext später referenziert +2. Der Begriff, der im Glossar erklärt werden soll +3. Die Erklärung des Begriffes + +Im Fließtext wird dann mit ``\gls{}`` der Eintrag verknüpft, wobei der Begriff im Text erscheint. + +Sollte die Beschreibung des Begriffs allerdings **länger** als die verbleibende **Seitenbreite** sein, muss der Eintrag mit ``\longnewglossaryentry`` angelegt werden. +Von den Optionen ändert sich dabei nichts. + +An einem Beispiel: ```latex -\DeclareAcronym{jpg}{ - short = {JPEG}, - long = {Joint Photographic Experts Group}, - short-plural = {s}, - long-plural = {s}, - alt = {JPG} - } +\newglossaryentry{gls:ereignisanzeige}{ + name={Ereignisanzeige}, + description={Zentrale Schnittstelle für Logs auf Microsoft Windows Systemen} +} ``` -Aufruf: +Im Fließtext wird dann referenziert: ```latex -\ac{jpg} % Normale Form -\acp{jpg} % Plural-Form -\aca{jpg} % Alternativ-Form +[...] +Eine entsprechende Fehlermeldung war in der \gls{gls:ereignisanzeige} zu sehen. +[...] ``` -Das Abkürzungsverzeichnis wird dann automatisch erstellt. Dabei ist zu beachten, dass unter Umständen bis zu vier Kompilierungen notwendig sind, wenn eine Abkürzung hinzugefügt oder entfernt wurde, damit das Verzeichnis korrekt erstellt wird. +### Ganzes Glossar forcieren -*** +Es ist möglich, alle Glossar-Einträge eintragen zu lassen, unabhängig davon, ob sie referenziert wurden oder nicht. +Nach einer ausführlichen Diskussion [hier](https://github.com/RvNovae/dhge-latex/pull/134) wurde sich dafür entschieden, diese Option nicht in das Template aufzunehmen und stattdessen lediglich zu dokumentieren. +Unter anderem deswegen, weil es den Empfehlungen der DHGE im Bereich Technik/Gera widerspricht. + +Um das oben beschriebene Verhalten dennoch zu verwenden, ist es notwendig, den Befehl ``\glsaddall`` oberhalb von ``\begin{document}``, aber unterhalb von ``\input{abk.tex}`` im Template zu platzieren. +Andernfalls erhält das Glossar einen ungewollten Seitenumbruch. -Für das Erstellen von Abkürzungen wird nun auch ein Snippet für Visual-Studio-Code mitgeliefert: `abk` / `dhgeabk`. +## Weiterführende Dokumentation -Für mehr Informationen kann die [Acro Package Documentation](https://mirror.physik.tu-berlin.de/pub/CTAN/macros/latex/contrib/acro/acro-manual.pdf) gelesen werden. +- [Anfängerfreundliche Glossaries-Doku](https://ctan.mirror.norbert-ruehl.de/macros/latex/contrib/glossaries/glossariesbegin.pdf) +- [Glossaries CTAN-Seite](https://www.ctan.org/pkg/glossaries) # Anlagenverzeichnis @@ -452,7 +474,7 @@ Das ist besonders für Code-Beispiele für den Anhang praktisch. *** -Bei Proxy-Problemen mit pip, kann auch das `Pygments.whl` file runtergeladen und dann mit pip installiert werden. +Bei Proxy-Problemen mit pip, kann auch die `Pygments.whl` Datei heruntergeladen und dann mit pip installiert werden. [Pygments Download](https://pypi.org/project/Pygments/#files) # Spezielle Abschnitte @@ -495,6 +517,10 @@ Deshalb wurde der ``CKUSCHE``-Schalter in ``config.tex`` eingeführt: diesen auf - Literaturverzeichnis erscheint zuletzt - es gibt kein Anlagenverzeichnis, dafür werden Anlagen im Inhaltsverzeichnis gelistet +Weiterhin wird das Erstellen eines Glossars nahegelegt, in dem Fachbegriffe erklärt werden. +Da das unabhängig vom Kusche-Mode bereits möglich ist, wird lediglich das "Abkürzungsverzeichnis" in "Glossar" umbenannt. +Der wesentliche Unterschied ist natürlich, dass wie im Kapitel [Glossar](#abkürzungen-und-glossar-einträge) nicht nur Abkürzungen, sondern auch Glossar-Einträge erstellt werden sollten. + ## Probleme im Kusche Mode Leider gibt es Anforderungen von Prof. Dr. Kusche, die bislang nicht umgesetzt werden konnten. @@ -516,3 +542,12 @@ Der LaTeX Standard sind Einrückungen, Abstände sind aus beliebten WYSIWYG-Edit An der Studienrichtung Technik der DHGE werden Abstände in Arbeiten bevorzugt, weshalb das die Voreinstellung des Templates ist. Wenn Einrückungen bevorzugt werden, kann das in der ``config.tex`` geändert werden, indem der ``CEINR``-Schalter auf ``1`` gesetzt wird. + +# Troubleshooting + +## Glossaries + +- Symptom: das Glossar ist leer + - Prüfen Sie, ob Sie mit ``\gls`` auf mindestens ein Glossar-Eintrag verweisen + - Wenn Sie kein ``latexmk`` verwenden, müssen Sie ggf. zwei mal kompilieren + - entfernen Sie den Projekt-Cache (``template.aux``, ``template.bbl``, ``template.bcf``, ``template.blg``, ...) und kompilieren Sie erneut (ggf. zwei mal) diff --git a/abk.tex b/abk.tex index f1cfd0b..303ec04 100644 --- a/abk.tex +++ b/abk.tex @@ -1,9 +1,13 @@ -% Definieren Sie hier Ihre Abkürzungen anhand des DHGE Beispiels. -% Wenn Sie DHGE dann im Text verwenden, rufen sie einfach \ac{dhge} auf. +% Definieren Sie hier Ihre Abkürzungen und Glossar-Einträge anhand der Beispiele. +% Wenn Sie diese dann im Text verwenden, rufen Sie einfach \gls{key} auf, z.B. \gls{ac:dhge}. % LaTeX kümmert sich um den Rest. -% Für alles Weitere schauen Sie sich bitte die Dokumentation des Acro Packages an. +% Alle Abkürzungen auch ohne Verweis darauf generieren ist in der README.md dokumentiert. -\DeclareAcronym{dhge}{ - short = {DHGE}, - long = {Duale Hochschule Gera-Eisenach}, +% Eine ausführliche, anfängerfreundliche Dokumentation ist unter https://www.overleaf.com/learn/latex/Glossaries abrufbar. + +\newglossaryentry{gls:gloss}{ + name={Glossar}, + description={Ein Glossar ist eine Liste von Wörtern mit beigefügten Bedeutungserklärungen oder Übersetzungen. (Wikipedia)} } + +\newacronym[]{ac:dhge}{DHGE}{Duale Hochschule Gera-Eisenach} diff --git a/build/components/package.config.tex b/build/components/package.config.tex index a511c33..fc85c3f 100644 --- a/build/components/package.config.tex +++ b/build/components/package.config.tex @@ -4,7 +4,7 @@ \usepackage[hyperfootnotes = false, hidelinks]{hyperref} \usepackage{amssymb} \usepackage{fancyhdr} -\usepackage[version = 3]{acro} +\usepackage[toc,nonumberlist,style=super,nopostdot,nogroupskip]{glossaries} \usepackage{enumitem} \usepackage[style=german]{csquotes} \usepackage[backend=biber, diff --git a/build/components/setup.tex b/build/components/setup.tex index 5195f15..78cb167 100644 --- a/build/components/setup.tex +++ b/build/components/setup.tex @@ -21,10 +21,6 @@ % DOCUMENT SETUP \onehalfspacing % 1.5 line spacing -% TODO: sollte theoretisch keine Verwendung mehr haben -% \widowpenalty10000 -% \clubpenalty10000 - % INHALTSVERZEICHNIS SETUP \renewcommand{\contentsname}{Inhaltsverzeichnis} @@ -155,7 +151,7 @@ \newlistof{anlagen}{alt}{\listanlageverzeichnis} % Befehl welcher ein Item dem Anlagenverzeichnis hinzufügt -\newcommand{\addItemToAnlageverzeichnis}[1]{% +\newcommand{\addItemToAnlageverzeichnis}[1]{ \def\fig{fig} \def\tab{tab} @@ -212,45 +208,10 @@ } \makeatother - -% ACRO SETUP -\acsetup{ - list/heading = section*, - list/name = {Abkürzungsverzeichnis}, - list/template = description, - make-links = true, - link-only-first = false -} - -% Standard Abkürzungsverzeichnis überschreiben -> einheitliche Einrückung -\RenewAcroTemplate[list]{description}{% - \acronymsmapT{% - \AcroAddRow{% - \textbf{\acrowrite{short}}% - & - \acrowrite{long}% - \acropages - {\acrotranslate{page}\nobreakspace}% - {\acrotranslate{pages}\nobreakspace}% - \vspace{10pt} - \tabularnewline - }% - }% - \acroheading - \acropreamble - \noindent - \begin{tabular}{@{}ll} - \AcronymTable - \end{tabular} -} - -% AUTO REMOVE/INSERT Abkürzungsverzeichnis -% Abkürzungsverzeichnis überschreibt \UseAcroTemplate für \ac -% New Counter to count used acronyms: -\newtotcounter{acro_num} -\def\oldUseAcroTemplate{} \let\oldUseAcroTemplate=\UseAcroTemplate -\def\UseAcroTemplate{\stepcounter{acro_num}\oldUseAcroTemplate} - +% Glossar Setup +\renewcommand{\glsnamefont}[1]{\textbf{#1}} +\setlength{\glsdescwidth}{0.65\textwidth} +\makenoidxglossaries % INDENTION SETUP % Abstände und Einrückungen abhängig von config.tex ein-/ausschalten diff --git a/build/template.tex b/build/template.tex index 46bf6da..5536a8a 100644 --- a/build/template.tex +++ b/build/template.tex @@ -22,7 +22,6 @@ % nicht als Text, sondern als Variablen definiert werden \input{abk.tex} - % Konfiguration globaler Definitionen % PDF Metadata @@ -39,7 +38,6 @@ \author{} \date{} - \begin{document} \pagenumbering{gobble} % lade Deckblatt ohne Nummerierung @@ -79,11 +77,8 @@ \phantomsection \conditionalLoT - % ABKÜRZUNGSVERZEICHNIS - % wird nur dann generiert, wenn mindestens ein mal \ac oder ein verwandter Befehl aufgerufen wurde und damit nicht leer ist - \ifnum\totvalue{acro_num}>0 - \printacronyms - \addcontentsline{toc}{section}{Abkürzungsverzeichnis} + \if\CKUSCHE 0 + \printnoidxglossary[title={Abkürzungsverzeichnis}] \cleardoublepage \fi @@ -143,15 +138,19 @@ \input{anlagen.tex} \cleardoublepage - % Im Kusche-Mode kommt das LiteraturVZ zuletzt \if\CKUSCHE 1 + % Im Kusche Mode kommt das Glossar erst hier unten + \printnoidxglossary + \cleardoublepage + + % Im Kusche-Mode kommt das LiteraturVZ zuletzt \ifnum\thetotalbibentries>0 \printbibliography[title=Literaturverzeichnis] \addcontentsline{toc}{section}{Literaturverzeichnis} \cleardoublepage \fi \fi - + % Einrückung und Abstand unabhängig von config.tex setzen: Ehrenwort und Freigabe korrekt formatiert \setlength{\parskip}{6pt} \setlength{\parindent}{0cm} diff --git a/build/tests/abstract.tex b/build/tests/abstract.tex index 4d67288..b35d41d 100644 --- a/build/tests/abstract.tex +++ b/build/tests/abstract.tex @@ -1,7 +1,6 @@ Franz jagt im komplett verwahrlosten Taxi quer durch Bayern. -\\ Falsches Üben von Xylophonmusik quält jeden größeren Zwerg. -\\ -Es ist Mittwoch, meine Kerle. -\\ + +Es ist Mittwoch, meine Kerle. Oder ist es Montag, meine Mümmler? + Lorem ipsum dolor sit amet. diff --git a/build/tests/main.tex b/build/tests/main.tex index 7cf9e76..be9f00d 100644 --- a/build/tests/main.tex +++ b/build/tests/main.tex @@ -1,9 +1,11 @@ \section{Zitat und Abkürzung Test Section} -Diese Arbeit ist ein Test welcher f\"ur das \ac{dhge} LaTeX Template vorgesehen ist.\footcite{Xmisc} +Diese Arbeit ist ein Test welcher f\"ur das \gls{ac:dhge} LaTeX Template vorgesehen ist.\footcite{Xmisc} Das Template unterstützt auch einen weiteren cite Befehl welcher platzsparender ist.\supercite{Xmisc} +Neben Abkürzungen unterstützt das Template auch Glossar-Einträge mit \gls{gls:gloss}. + \cleardoublepage \subsection{Command Test Subsection}