generator-latex-template 2026.6.13 → 2026.6.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +2 -1
  2. package/generators/app/index.js +25 -1
  3. package/generators/app/options.js +27 -0
  4. package/generators/app/templates/.github/workflows/check.yml +22 -5
  5. package/generators/app/templates/README.en.md +22 -0
  6. package/generators/app/templates/Texlivefile +4 -0
  7. package/generators/app/templates/abbreviations.de.tex +5 -1
  8. package/generators/app/templates/abbreviations.en.tex +3 -0
  9. package/generators/app/templates/abbreviations.example.de.tex +1 -1
  10. package/generators/app/templates/abbreviations.example.en.tex +2 -2
  11. package/generators/app/templates/babel.preamble.en.tex +2 -2
  12. package/generators/app/templates/csquotes.preamble.en.tex +1 -1
  13. package/generators/app/templates/docs/latex-setup.md +58 -0
  14. package/generators/app/templates/dot.aspell.en.pws +7 -1
  15. package/generators/app/templates/floatflt.preamble.en.tex +1 -1
  16. package/generators/app/templates/floats.preamble.en.tex +15 -8
  17. package/generators/app/templates/font.preamble.en.tex +29 -31
  18. package/generators/app/templates/footnotes.preamble.en.tex +11 -14
  19. package/generators/app/templates/hyperref.preamble.en.tex +1 -1
  20. package/generators/app/templates/latexmkrc +7 -0
  21. package/generators/app/templates/listings.preamble.de.tex +12 -12
  22. package/generators/app/templates/listings.preamble.en.tex +13 -13
  23. package/generators/app/templates/localSettings.yaml +6 -0
  24. package/generators/app/templates/longtable.example.en.tex +37 -0
  25. package/generators/app/templates/longtable.preamble.en.tex +2 -0
  26. package/generators/app/templates/main.de.tex +47 -5
  27. package/generators/app/templates/main.en.tex +55 -5
  28. package/generators/app/templates/math.example.en.tex +35 -0
  29. package/generators/app/templates/math.preamble.en.tex +10 -2
  30. package/generators/app/templates/microtype.preamble.en.tex +1 -1
  31. package/generators/app/templates/nowidow.preamble.en.tex +7 -0
  32. package/generators/app/templates/pgfplots.example.en.tex +31 -0
  33. package/generators/app/templates/plantuml.example.en.tex +27 -0
  34. package/generators/app/templates/subfig.preamble.en.tex +1 -1
  35. package/generators/app/templates/tables.preamble.de.tex +3 -0
  36. package/generators/app/templates/thesis-additions.en.tex +43 -43
  37. package/generators/app/templates/thesis-additions.examples.en.tex +43 -43
  38. package/generators/app/templates/tikz.example.en.tex +17 -0
  39. package/generators/app/templates/tikz.preamble.en.tex +4 -0
  40. package/generators/app/templates/tikzuml.example.en.tex +46 -0
  41. package/generators/app/templates/todos.example.de.tex +35 -0
  42. package/generators/app/templates/todos.example.en.tex +9 -9
  43. package/generators/app/templates/todos.preamble.en.tex +4 -4
  44. package/generators/app/templates/uml.plantuml.preamble.en.tex +6 -0
  45. package/generators/app/templates/uml.tikzuml.preamble.en.tex +4 -0
  46. package/generators/app/templates/url.preamble.en.tex +1 -1
  47. package/generators/app/templates/ustutt-pagestyle.preamble.en.tex +1 -1
  48. package/package.json +1 -1
package/README.md CHANGED
@@ -201,13 +201,14 @@ ejslint.cmd c:\git-repositories\latextemplates\generator-latex-template\generato
201
201
 
202
202
  ### Releasing a new version
203
203
 
204
- 1. Ensure that branch `main` is checked out and up-to-date.
204
+ 1. Once the `refine-ltg` PR is green, **squash-merge** it into `main`; check `main` out and pull.
205
205
  2. Update `CHANGELOG.md` (change `h2` heading etc.)
206
206
  3. Update `package.json`, publish to [npmjs](https://www.npmjs.com/package/generator-latex-template), create GitHub release.
207
207
  Use [release-it](https://www.npmjs.com/package/release-it) (do not create a release on GitHub) and [github-release-from-changelog](https://www.npmjs.com/package/github-release-from-changelog).
208
208
 
209
209
  - `npx release-it`
210
210
  - `npx github-release-from-changelog`
211
+ 4. On `main`, run `scripts/end-new-cycle.sh`, then **squash-merge** each template's "Update LTG" PR once it is green.
211
212
 
212
213
  ## License
213
214
 
@@ -110,8 +110,32 @@ export default class extends Generator {
110
110
  this.props.thesisvariant = "none";
111
111
  }
112
112
 
113
+ // The UML example is thesis-only and opt-in (see options.js). Default it to
114
+ // "none" for every case where it was not asked (papers, examples disabled).
115
+ if (!this.props.uml) {
116
+ this.props.uml = "none";
117
+ }
118
+
119
+ // `longtable` is a plain CLI flag (no prompt), so it never blocks
120
+ // non-interactive generation. It toggles the longtable package and its
121
+ // example; default on.
122
+ this.props.longtable =
123
+ this.options.longtable === undefined
124
+ ? true
125
+ : this.options.longtable === true || this.options.longtable === "true";
126
+
127
+ // Only minted and the PlantUML UML example need shell-escape; tikz-uml and the
128
+ // remaining thesis content do not.
113
129
  this.props.requiresShellEscape =
114
- this.props.isThesis || this.props.listings == "minted";
130
+ this.props.listings == "minted" || this.props.uml == "plantuml";
131
+
132
+ // Two-column layouts (IEEE, and the ACM conference/journal formats) cannot use
133
+ // `longtable` ("longtable not in 1-column mode"), so the longtable example must
134
+ // be skipped there.
135
+ this.props.twocolumn =
136
+ this.props.documentclass === "ieee" ||
137
+ (this.props.documentclass === "acmart" &&
138
+ ["acmtog", "sigconf", "sigplan"].includes(this.props.acmformat));
115
139
 
116
140
  if (this.props.docker == "no") {
117
141
  // converts command-line "no" to the boolean equivalent
@@ -430,4 +430,31 @@ export const options = [
430
430
  message: "Include minimal LaTeX examples?",
431
431
  default: true,
432
432
  },
433
+ {
434
+ type: "list",
435
+ name: "uml",
436
+ when(response) {
437
+ return (
438
+ (response.documentclass === "scientific-thesis" ||
439
+ response.documentclass === "ustutt") &&
440
+ (response.examples === true || response.examples === "true")
441
+ );
442
+ },
443
+ message: "Which package for the UML diagram example?",
444
+ choices: [
445
+ {
446
+ name: "None (no UML example)",
447
+ value: "none",
448
+ },
449
+ {
450
+ name: "tikz-uml (not in TeX Live; added as a git submodule)",
451
+ value: "tikz-uml",
452
+ },
453
+ {
454
+ name: "PlantUML (needs LuaLaTeX, --shell-escape, and a PlantUML/Java install)",
455
+ value: "plantuml",
456
+ },
457
+ ],
458
+ default: "none",
459
+ },
433
460
  ];
@@ -16,12 +16,22 @@ jobs:
16
16
  runs-on: ubuntu-latest
17
17
  steps:
18
18
  - name: Set up Git repository
19
- uses: actions/checkout@v6
19
+ uses: actions/checkout@v7
20
+ <% if (uml == "tikz-uml") { -%>
21
+ with:
22
+ # Recursive checkout brings in the tikz-uml submodule used by the UML example.
23
+ submodules: recursive
24
+ <% } -%>
20
25
  - name: Install TeX Live
21
26
  uses: zauguin/install-texlive@v4
22
27
  with:
23
28
  package_file: '${{ github.workspace }}/Texlivefile'
24
29
  texlive_version: <%= texlive %>
30
+ <% if (uml == "plantuml") { -%>
31
+ - name: Install PlantUML
32
+ # Renders the PlantUML UML example (needs Java + the plantuml tool; --shell-escape is set in latexmkrc).
33
+ run: sudo apt-get update && sudo apt-get install -y plantuml
34
+ <% } -%>
25
35
  - name: Prepare latexmk
26
36
  run: |
27
37
  updmap -sys
@@ -83,7 +93,7 @@ jobs:
83
93
  runs-on: ubuntu-latest
84
94
  steps:
85
95
  - name: Set up Git repository
86
- uses: actions/checkout@v6
96
+ uses: actions/checkout@v7
87
97
  - name: Install TeX Live
88
98
  uses: zauguin/install-texlive@v4
89
99
  with:
@@ -122,7 +132,7 @@ jobs:
122
132
  runs-on: ubuntu-latest
123
133
  steps:
124
134
  - name: Set up Git repository
125
- uses: actions/checkout@v6
135
+ uses: actions/checkout@v7
126
136
 
127
137
  # Original action does not work well - see https://github.com/awalsh128/cache-apt-pkgs-action/pull/136
128
138
  # The action is not updated - and thus the dictionaries are not updated
@@ -147,8 +157,15 @@ jobs:
147
157
  fi
148
158
  echo "Checking $tex..."
149
159
 
160
+ # Pick the dictionary that matches the file's language: the "-de"
161
+ # variants are German, everything else uses the document's language.
162
+ case "$tex" in
163
+ *-de.tex|*-de-*.tex) aspell_lang="-l de_DE --run-together"; aspell_pws=de ;;
164
+ *) aspell_lang="<% if (language == 'de') { %>-l de_DE --run-together<% } else { %>-l en_US<% } %>"; aspell_pws=<%= language %> ;;
165
+ esac
166
+
150
167
  # Words are output in the order they appear in the document
151
- words=$(aspell --mode=tex <% if (language == 'de') { %>-l de_DE --run-together<% } else { %>-l en_US<% } %> --encoding=utf-8 --conf=./.aspell.conf -p ./.aspell.<%= language %>.pws list < $tex | tr '\n' ' ')
168
+ words=$(aspell --mode=tex $aspell_lang --encoding=utf-8 --conf=./.aspell.conf -p ./.aspell.$aspell_pws.pws list < $tex | tr '\n' ' ')
152
169
  if [ -z "$words" ]; then
153
170
  echo "| $tex | ✅ |" >> $GITHUB_STEP_SUMMARY
154
171
  else
@@ -167,7 +184,7 @@ jobs:
167
184
  runs-on: ubuntu-latest
168
185
  steps:
169
186
  - name: Set up Git repository
170
- uses: actions/checkout@v6
187
+ uses: actions/checkout@v7
171
188
  - uses: awalsh128/cache-apt-pkgs-action@latest
172
189
  with:
173
190
  packages: libyaml-tiny-perl libfile-homedir-perl
@@ -386,6 +386,28 @@ To have minted running properly, you have to do following steps on Windows:
386
386
  3. When latexing, use `-shell-escape`: `pdflatex -shell-escape <%= filenames.main %>`.
387
387
  You can also just execute `latexmk <%= filenames.main %>`.
388
388
  <% } -%>
389
+ <% if (uml != "none") { -%>
390
+
391
+ ### UML diagram example
392
+
393
+ The "LaTeX Hints" chapter contains a UML example that needs extra setup.
394
+ It is skipped automatically when its prerequisites are missing, so the document always compiles.
395
+ <% if (uml == "tikz-uml") { -%>
396
+
397
+ `tikz-uml` is not part of TeX Live.
398
+ Add it as a git submodule and put it on the LaTeX search path via `TEXINPUTS`:
399
+
400
+ ```console
401
+ git submodule add https://plmlab.math.cnrs.fr/tikzuml/tikzuml.git tikz-uml
402
+ TEXINPUTS="./tikz-uml:$TEXINPUTS" latexmk <%= filenames.main %>
403
+ ```
404
+ <% } -%>
405
+ <% if (uml == "plantuml") { -%>
406
+
407
+ PlantUML renders only with Lua​LaTeX, the `--shell-escape` flag, and a PlantUML installation (which needs Java).
408
+ Install PlantUML (for example `choco install plantuml` on Windows) and compile with `lualatex --shell-escape`.
409
+ <% } -%>
410
+ <% } -%>
389
411
 
390
412
  ### VS Code configuration
391
413
 
@@ -224,6 +224,10 @@ pdfpages
224
224
  <% } -%>
225
225
  <% if (githubpublish || examples) { -%>
226
226
  pgf
227
+ pgfplots<%# used by the pgfplots example; also provides pgfplotstable %>
228
+ <% } -%>
229
+ <% if (githubpublish || (uml == "plantuml")) { -%>
230
+ plantuml<%# plantuml.sty for the PlantUML UML example; the diagram also needs an external PlantUML install %>
227
231
  <% } -%>
228
232
  pict2e
229
233
  <% if (githubpublish || (documentclass == "ustutt")) { -%>
@@ -1,6 +1,10 @@
1
1
  % Hier stehen alle Abkürzungen
2
- \newabbreviation{er}{ER}{error rate}
2
+ % `fr` wird vom deutschen Beispiel verwendet, `er` vom englischen. Beide sind in
3
+ % beiden Abkürzungslisten definiert, weil das Template eine einzige abbreviations.tex
4
+ % ausliefert, die jede Hauptdatei (deutsch und englisch) lädt -- ein undefinierter
5
+ % Eintrag bricht den Build ab.
3
6
  \newabbreviation{fr}{FR}{Fehlerrate}
7
+ \newabbreviation{er}{ER}{error rate}
4
8
  \newabbreviation[shortplural={RDBMS},longplural={RDBMS}]{rdbms}{RDBMS}{Relational Database Management System}
5
9
  \newabbreviation[category=abbreviationdot]{dante}{DANTE e.V.}{Deutschsprachige Anwendervereinigung \TeX\ e.V.}
6
10
  \newabbreviation{gp}{G.P.}{General Practitioner}
@@ -1,5 +1,8 @@
1
1
  % Note the difference between "acronym" and "abbreviation": https://english.stackexchange.com/q/3755/66058
2
2
  % We regard abbreviation as superset of acronym
3
+ % `er` is used by the English example, `fr` by the German one. Both are defined in
4
+ % both abbreviation lists because the template ships a single abbreviations.tex that
5
+ % every main file (English and German) loads -- an undefined entry breaks the build.
3
6
  \newabbreviation{er}{ER}{error rate}
4
7
  \newabbreviation{fr}{FR}{Fehlerrate}
5
8
  \newabbreviation[shortplural={RDBMS},longplural={RDBMS}]{rdbms}{RDBMS}{Relational Database Management System}
@@ -14,7 +14,7 @@ Mehr Infos unter: \url{https://ctan.org/pkg/bib2gls}.
14
14
  <%- bexample %>
15
15
  Beim ersten Durchlauf betrug die \gls{fr} 5.
16
16
  Beim zweiten Durchlauf war die \gls{fr} 3.
17
- Die Pluralform sieht man hier: \glspl{er}.
17
+ Die Pluralform sieht man hier: \glspl{fr}.
18
18
  Um zu demonstrieren, wie das Abkürzungsverzeichnis bei längeren Beschreibungstexten aussieht, muss hier noch \glspl{rdbms} erwähnt werden.
19
19
 
20
20
  \gls{dante} is a local \TeX\ user group.
@@ -12,8 +12,8 @@ Abbreviations are defined in \verb+\content\ausarbeitung.tex+ by means of \verb+
12
12
  More information at: \url{https://ctan.org/pkg/bib2gls}.
13
13
 
14
14
  <%- bexample %>
15
- At the first pass the \gls{fr} was 5.
16
- At the second pass was \gls{fr} 3.
15
+ At the first pass, the \gls{er} was 5.
16
+ At the second pass was \gls{er} 3.
17
17
  The plural form can be seen here: \glspl{er}.
18
18
  To demonstrate what the list of abbreviations looks like for longer description texts, \glspl{rdbms} must be mentioned here.
19
19
 
@@ -1,7 +1,7 @@
1
- % Set English as language and allow to write hyphenated"=words
1
+ % Set English as the language and allow to write hyphenated"=words
2
2
  %
3
3
  % Even though `american`, `english` and `USenglish` are synonyms for babel package (according to https://tex.stackexchange.com/questions/12775/babel-english-american-usenglish), the llncs document class is prepared to avoid the overriding of certain names (such as "Abstract." -> "Abstract" or "Fig." -> "Figure") when using `english`, but not when using the other 2.
4
- % english has to go last to set it as default language
4
+ % english has to go last to set it as the default language
5
5
  \usepackage[ngerman,main=english]{babel}
6
6
  <% if (tweakouterquote == "babel") { -%>
7
7
  %
@@ -12,6 +12,6 @@
12
12
  \defineshorthand{"'}{\closeautoquote}
13
13
  <% if (documentclass == "ustutt") { -%>
14
14
 
15
- % Gegenstück zu \enquote
15
+ % Counterpart to \enquote
16
16
  \newcommand{\enbracket}[1]{(#1)\xspace}
17
17
  <% } -%>
@@ -108,6 +108,64 @@ If you installed MiKTeX other ways, you have to run "Update MiKTeX (Admin)" and
108
108
  8. Execute `initexmf --update-fndb` (ensure that no other MiKTeX tooling such as the [MiKTeX Console](https://miktex.org/howto/miktex-console) is run in parallel - see <https://github.com/MiKTeX/miktex/issues/98#issuecomment-375952270>)
109
109
  9. Execute `initexmf --mklinks --force`
110
110
 
111
+ ## Using VSCode to Edit, Compile, and Preview PDFs
112
+
113
+ ***Note: The configuration of LaTeX Workshop on [Fast Guide on Writing LaTeX with LaTeX Workshop in VS Code](https://mathjiajia.github.io/vscode-and-latex/) may require some modifications to work with this template.***
114
+
115
+ ### Prerequisites
116
+
117
+ 1. Install [VSCode](https://code.visualstudio.com/).
118
+ 2. Install [LaTeX Workshop](https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop).
119
+ 3. Install a LaTeX distribution (e.g., [MiKTeX](https://miktex.org/download) or [TeX Live](https://www.tug.org/texlive/)).
120
+
121
+ ### Recommended Setup of VSCode
122
+
123
+ 1. Open VSCode.
124
+ 2. Press <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>P</kbd> to open the command palette. Then type "JSON" and select "Preferences: Open Settings (JSON)" to open `settings.json`.
125
+ 3. Now copy and paste the following snippet into your `settings.json` file (inside the brackets `{}` of your file).
126
+
127
+ ```json
128
+ "latex-workshop.latex.tools": [
129
+ {
130
+ "name": "pdflatex",
131
+ "command": "pdflatex",
132
+ "args": [
133
+ "-synctex=1",
134
+ "-interaction=nonstopmode",
135
+ "-file-line-error",
136
+ "%DOC%"
137
+ ],
138
+ "env": {}
139
+ },
140
+ {
141
+ "name": "biber",
142
+ "command": "biber",
143
+ "args": [
144
+ "%DOCFILE%"
145
+ ],
146
+ "env": {}
147
+ }
148
+ ],
149
+
150
+ "latex-workshop.latex.recipes": [
151
+ {
152
+ "name": "pdflatex ➞ biber ➞ pdflatexX2",
153
+ "tools": [
154
+ "pdflatex",
155
+ "biber",
156
+ "pdflatex",
157
+ "pdflatex"
158
+ ]
159
+ }
160
+ ],
161
+ ```
162
+
163
+ 4. (optional) If you add the following line into your `settings.json`, the LaTeX Workshop extension will not automatically compile the code after any changes. You can manually trigger compilation by hitting the green button in the extension or using other methods provided by LaTeX Workshop.
164
+
165
+ ```json
166
+ "latex-workshop.latex.autoBuild.run": "never",
167
+ ```
168
+
111
169
  [chocolatey]: https://chocolatey.org/
112
170
  [JabRef]: https://www.jabref.org
113
171
  [LanguageTool]: https://languagetool.org/
@@ -1,4 +1,4 @@
1
- personal_ws-1.1 en 122 utf-8
1
+ personal_ws-1.1 en 128 utf-8
2
2
  ACM
3
3
  Atlantic
4
4
  BPEL
@@ -50,6 +50,7 @@ breaklines
50
50
  category
51
51
  cls
52
52
  commentstyle
53
+ compat
53
54
  cref
54
55
  da
55
56
  dante
@@ -72,6 +73,7 @@ fr
72
73
  funktioniert
73
74
  für
74
75
  geändert
76
+ gnuplot
75
77
  gp
76
78
  html
77
79
  hypertext
@@ -85,6 +87,7 @@ lastname
85
87
  letzten
86
88
  linenos
87
89
  longplural
90
+ longtable
88
91
  lst
89
92
  lstlisting
90
93
  markup
@@ -100,8 +103,10 @@ numberstyle
100
103
  nur
101
104
  oldstyle
102
105
  paralist
106
+ pgfplots
103
107
  powerset
104
108
  produziert
109
+ programmatically
105
110
  pygments
106
111
  rdbms
107
112
  seit
@@ -114,6 +119,7 @@ subcaption
114
119
  subfig
115
120
  subfigure
116
121
  subfigures
122
+ tikz
117
123
  tion
118
124
  tt
119
125
  werden
@@ -13,7 +13,7 @@
13
13
  \usepackage{wrapfig} % defines wrapfigure and wrapfloat
14
14
  %\setlength{\wrapoverhang}{\marginparwidth} % aeerlapp des Bildes ...
15
15
  %\addtolength{\wrapoverhang}{\marginparsep} % ... in den margin
16
- \setlength{\intextsep}{0.5\baselineskip} % Platz ober- und unterhalb des Bildes
16
+ \setlength{\intextsep}{0.5\baselineskip} % Space above and below the image
17
17
  % \intextsep ignoiert bei draft ???
18
18
  %\setlength{\columnsep}{1em} % Abstand zum Text
19
19
  -%>
@@ -3,7 +3,7 @@
3
3
  % figures and placement
4
4
  % ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
5
 
6
- %% Bilder und Graphiken ==================================================
6
+ %% Images and graphics ==================================================
7
7
 
8
8
  %%% Doc: float.div
9
9
  %floatrow is the successor of float
@@ -13,8 +13,8 @@
13
13
  %--> use predecessor float
14
14
  \usepackage{float}
15
15
 
16
- % EN: See http://www.tex.ac.uk/cgi-bin/texfaq2html?label=floats
17
- % DE: floats IMMER nach einer Referenzierung platzieren
16
+ % See http://www.tex.ac.uk/cgi-bin/texfaq2html?label=floats
17
+ % Always place floats AFTER a reference to them
18
18
  %\usepackage{flafter}
19
19
 
20
20
  % Defines a \FloatBarrier command, beyond which floats may not
@@ -27,7 +27,7 @@
27
27
 
28
28
  %%% Doc: http://mirror.ctan.org/tex-archive/macros/latex/contrib/subfig/subfig.pdf
29
29
  % Incompatible: loads package capt-of. Loading of 'capt-of' afterwards will fail therefor
30
- %\usepackage{subfig} % Layout wird weiter unten festgelegt !
30
+ %\usepackage{subfig} % Layout is configured further below!
31
31
 
32
32
  % Make float placement easier
33
33
  % See also http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/LatexTips.html#figplacement
@@ -40,7 +40,7 @@
40
40
  \setcounter{totalnumber}{5} % vorher: 3
41
41
 
42
42
  %%% Doc: http://mirror.ctan.org/tex-archive/macros/latex/contrib/psfrag/pfgguide.pdf
43
- % \usepackage{psfrag} % Ersetzen von Zeichen in eps Bildern
43
+ % \usepackage{psfrag} % Replacing characters in eps images
44
44
 
45
45
  %%% Doc: http://www.ctan.org/tex-archive/macros/latex/contrib/sidecap/sidecap.pdf
46
46
  \usepackage[%
@@ -63,9 +63,16 @@
63
63
  <% if (isThesis) { -%>
64
64
 
65
65
  %%%
66
- % Ermoeglicht es, Abbildungen um 90 Grad zu drehen
67
- % Alternatives Paket: rotating Allerdings wird hier nur das Bild gedreht, während bei lscape auch die PDF-Seite gedreht wird.
68
- %Das Paket lscape dreht die Seite auch nicht
66
+ % Allows rotating figures by 90 degrees
67
+ % Alternative package: rotating. However, that only rotates the image, whereas lscape also rotates the PDF page.
68
+ % The lscape package does not rotate the page either
69
69
  \usepackage{pdflscape}
70
70
 
71
+ % Align floats to the top on float-only pages instead of vertically centering them.
72
+ % See http://tex.stackexchange.com/a/28565/9075
73
+ \makeatletter
74
+ \setlength{\@fptop}{0pt}
75
+ \setlength{\@fpbot}{0pt plus 1fil}
76
+ \makeatother
77
+
71
78
  <% } -%>
@@ -230,16 +230,15 @@ In addition, we make the code appear more nice -%>
230
230
  <% } -%>
231
231
 
232
232
  <% if (isThesis) { -%>
233
- % DE: Noch mehr Symbole
234
- %\usepackage{stmaryrd} %fuer \ovee, \owedge, \otimes
235
- %\usepackage{marvosym} %fuer \Writinghand %patched to not redefine \Rightarrow
236
- %\usepackage{mathrsfs} %mittels \mathscr{} schoenen geschwungenen Buchstaben erzeugen
237
- %\usepackage{calrsfs} %\mathcal{} ein bisserl dickeren buchstaben erzeugen - sieht net so gut aus.
233
+ % Even more symbols
234
+ %\usepackage{stmaryrd} % for \ovee, \owedge, \otimes
235
+ %\usepackage{marvosym} % for \Writinghand %patched to not redefine \Rightarrow
236
+ %\usepackage{mathrsfs} % nice cursive letters via \mathscr{}
237
+ %\usepackage{calrsfs} % slightly bolder \mathcal{} letters - does not look that good.
238
238
 
239
- % EN: Fallback font - if the subsequent font packages do not define a font (e.g., monospaced)
239
+ % Fallback font - if the subsequent font packages do not define a font (e.g., monospaced)
240
240
  % This is the modern package for "Computer Modern".
241
241
  % In case this gets activated, one has to switch from cmap package to glyphtounicode (in the case of pdflatex)
242
- % DE: Fallback-Schriftart
243
242
  %\usepackage[%
244
243
  % rm={oldstyle=false,proportional=true},%
245
244
  % sf={oldstyle=false,proportional=true},%
@@ -247,51 +246,50 @@ In addition, we make the code appear more nice -%>
247
246
  % qt=false%
248
247
  %]{cfr-lm}
249
248
 
250
- % EN: Headings are typeset in Helvetica (which is similar to Arial)
251
- % DE: Schriftart fuer die Ueberschriften - ueberschreibt lmodern
249
+ % Headings are typeset in Helvetica (which is similar to Arial)
250
+ % Font for the headings - overrides lmodern
252
251
  %\usepackage[scaled=.95]{helvet}
253
252
 
254
- % DE: Für Schreibschrift würde tun, muss aber nicht
253
+ % A calligraphic font would work, but is not required
255
254
  %\usepackage{mathrsfs} % \mathscr{ABC}
256
255
 
257
- % EN: Font for the main text
258
- % DE: Schriftart fuer den Fliesstext - ueberschreibt lmodern
259
- % Linux Libertine, siehe http://www.linuxlibertine.org/
260
- % Packageparamter [osf] = Minuskel-Ziffern
261
- % rm = libertine im Brottext, Linux Biolinum NICHT als serifenlose Schrift, sondern helvet (von oben) beibehalten
256
+ % Font for the main text
257
+ % Font for the body text - overrides lmodern
258
+ % Linux Libertine, see http://www.linuxlibertine.org/
259
+ % Package parameter [osf] = lowercase (old-style) figures
260
+ % rm = libertine in the body text, Linux Biolinum NOT as sans-serif font, but keep helvet (from above)
262
261
  %\usepackage[rm]{libertine}
263
262
 
264
- % EN: Alternative Font: Palantino. It is recommeded by Prof. Ludewig for German texts
265
- % DE: Alternative Schriftart: Palantino, Packageparamter [osf] = Minuskel-Ziffern
266
- % Bitte nur in deutschen Texten
267
- %\usepackage{mathpazo} %ftp://ftp.dante.de/tex-archive/fonts/mathpazo/ - Tipp aus DE-TEX-FAQ 8.2.1
268
- % EN: The euro sign
269
- % DE: Das Euro Zeichen
270
- % Fuer Palatino (mathpazo.sty): richtiges Euro-Zeichen
263
+ % Alternative Font: Palantino. It is recommended by Prof. Ludewig for German texts
264
+ % Package parameter [osf] = lowercase (old-style) figures
265
+ % Please only in German texts
266
+ %\usepackage{mathpazo} %ftp://ftp.dante.de/tex-archive/fonts/mathpazo/ - tip from DE-TEX-FAQ 8.2.1
267
+ % The euro sign
268
+ % For Palatino (mathpazo.sty): proper euro sign
271
269
  % Alternative: \usepackage{eurosym}
272
270
  % \newcommand{\EUR}{\ppleuro}
273
271
 
274
- % DE: Schriftart fuer Programmcode - ueberschreibt lmodern
275
- % Falls auskommentiert, wird die Standardschriftart lmodern genommen
276
- % Fuer schreibmaschinenartige Schluesselwoerter in den Listings - geht bei alten Installationen nicht, da einige Fontshapes (<>=) fehlen
272
+ % Font for program code - overrides lmodern
273
+ % If commented out, the default font lmodern is used
274
+ % For typewriter-style keywords in the listings - does not work on old installations, since some font shapes (<>=) are missing
277
275
  %\usepackage[scaled=.92]{luximono}
278
276
  %\usepackage{courier}
279
- % DE: BeraMono als Typewriter-Schrift, Tipp von http://tex.stackexchange.com/a/71346/9075
277
+ % BeraMono as typewriter font, tip from http://tex.stackexchange.com/a/71346/9075
280
278
  %\usepackage[scaled=0.83]{beramono}
281
279
 
282
280
  \usepackage{setspace}
283
281
  % Alternative package: https://ctan.org/pkg/leading
284
282
 
285
- % Symbole Check und Cross
283
+ % Check and cross symbols
286
284
  \usepackage{pifont}
287
285
  \newcommand{\dingcheck}{\ding{51}}
288
286
  \newcommand{\dingcross}{\ding{55}}
289
287
  %for scaling see http://tex.stackexchange.com/a/130236/9075
290
288
 
291
- % DE: Noch mehr Symbole
292
- %\usepackage{stmaryrd} %fuer \ovee, \owedge, \otimes
293
- %\usepackage{marvosym} %fuer \Writinghand %patched to not redefine \Rightarrow
294
- %\usepackage{mathrsfs} %mittels \mathscr{} schoenen geschwungenen Buchstaben erzeugen
289
+ % Even more symbols
290
+ %\usepackage{stmaryrd} % for \ovee, \owedge, \otimes
291
+ %\usepackage{marvosym} % for \Writinghand %patched to not redefine \Rightarrow
292
+ %\usepackage{mathrsfs} % nice cursive letters via \mathscr{}
295
293
  %\usepackage{calrsfs} %\mathcal{} ein bisserl dickeren buchstaben erzeugen - sieht net so gut aus.
296
294
 
297
295
  <% } -%>
@@ -1,4 +1,4 @@
1
- %%% Fussnoten/Endnoten ===================================================
1
+ %%% Footnotes/Endnotes ===================================================
2
2
 
3
3
  <% if (isThesis) { -%>
4
4
  %%% Doc: http://mirror.ctan.org/tex-archive/macros/latex/contrib/footmisc/footmisc.pdf
@@ -17,34 +17,31 @@
17
17
 
18
18
  \counterwithout{footnote}{chapter} % Continuous numbering of footnotes across chapters
19
19
 
20
- \interfootnotelinepenalty=10000 % Verhindert das Fortsetzen von Fussnoten auf der gegenüberligenden Seite
20
+ \interfootnotelinepenalty=10000 % Prevents footnotes from continuing onto the facing page
21
21
 
22
22
  <% } -%>
23
- % EN: Put footnotes below floats
24
- % DE: Fußnoten unter Gleitumgebungen ("floats") platzieren
23
+ % Put footnotes below floats
25
24
  % Source: https://tex.stackexchange.com/a/32993/9075
26
25
  \usepackage{stfloats}
27
26
  \fnbelowfloat
28
27
 
29
- % EN: Extended support for footnotes
30
- % DE: Fußnoten
28
+ % Extended support for footnotes
31
29
  %
32
- %\usepackage{dblfnote} %Zweispaltige Fußnoten
30
+ %\usepackage{dblfnote} % Two-column footnotes
33
31
  %
34
- % Keine hochgestellten Ziffern in der Fußnote (KOMA-Script-spezifisch):
32
+ % No superscript numbers in the footnote (KOMA-Script-specific):
35
33
  %\deffootnote[1.5em]{0pt}{1em}{\makebox[1.5em][l]{\bfseries\thefootnotemark}}
36
34
  %
37
- % Abstand zwischen Fußnoten vergrößern:
35
+ % Increase the spacing between footnotes:
38
36
  %\setlength{\footnotesep}{.85\baselineskip}
39
37
  %
40
- % EN: Following command disables the separting line of the footnote
41
- % DE: Folgendes Kommando deaktiviert die Trennlinie zur Fußnote
38
+ % Following command disables the separating line of the footnote
42
39
  %\renewcommand{\footnoterule}{}
43
40
  %
44
- %\addtolength{\skip\footins}{\baselineskip} % Abstand Text <-> Fußnote
41
+ %\addtolength{\skip\footins}{\baselineskip} % Spacing text <-> footnote
45
42
 
46
- % DE: Fußnoten immer ganz unten auf einer \raggedbottom-Seite
47
- % DE: fnpos kommt aus dem yafoot package
43
+ % Always place footnotes at the very bottom on a \raggedbottom page
44
+ % fnpos comes from the yafoot package
48
45
  %\usepackage{fnpos}
49
46
  %\makeFNbelow
50
47
  %\makeFNbottom
@@ -30,7 +30,7 @@
30
30
  pdfauthor={}, % Autor
31
31
  pdfcreator={LaTeX, hyperref, KOMA-Script}, % Ersteller
32
32
  %pdfproducer={pdfeTeX 1.10b-2.1} %Produzent
33
- pdfdisplaydoctitle=true, % Dokumententitel statt Dateiname im Fenstertitel
33
+ pdfdisplaydoctitle=true, % document title instead of file name in the window title
34
34
  pdfpagemode=UseOutlines, % Bookmarks im Viewer anzeigen
35
35
  pdfpagelabels=true, % set PDF page labels
36
36
  pdfpagelayout=TwoPageRight, % zweiseitige Darstellung: ungerade Seiten rechts im PDF-Viewer
@@ -1,4 +1,11 @@
1
1
  $pdflatex = '<%= reallatexcompiler %> <% if (requiresShellEscape) { %>--shell-escape <% } %>--file-line-error --synctex=-1 %O %S';
2
+ <% if (uml == "tikz-uml") { -%>
3
+
4
+ # Make the tikz-uml package visible. It is not part of TeX Live and is provided
5
+ # as a git submodule in the "tikz-uml" directory (see the README). The recursive
6
+ # "//" lets kpathsea find tikz-uml.sty wherever it lives inside that submodule.
7
+ $ENV{'TEXINPUTS'} = './tikz-uml//:' . ($ENV{'TEXINPUTS'} // '');
8
+ <% } -%>
2
9
 
3
10
  #Use SumatraPDF instead of the default PDF viewer
4
11
  $pdf_previewer = 'start "C:\Program Files\SumatraPDF\SumatraPDF.exe"';
@@ -97,18 +97,18 @@
97
97
  <%= indent %>% Siehe https://stackoverflow.com/a/29260603/873282 und https://tex.stackexchange.com/a/24532/9075 für Details.
98
98
  <%= indent %>% listingsutf8 hat im Juni 2020 nicht funktioniert.
99
99
  <%= indent %>\lstset{extendedchars=true, literate=
100
- <%= indent %> {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
101
- <%= indent %>{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
102
- <%= indent %>{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
103
- <%= indent %>{À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
104
- <%= indent %>{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
105
- <%= indent %>{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
106
- <%= indent %>{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
107
- <%= indent %>{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
108
- <%= indent %>{Ã}{{\~A}}1 {ã}{{\~a}}1 {Õ}{{\~O}}1 {õ}{{\~o}}1
109
- <%= indent %>{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
110
- <%= indent %>{ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1
111
- <%= indent %>{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
100
+ <%= indent %> {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
101
+ <%= indent %> {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
102
+ <%= indent %> {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
103
+ <%= indent %> {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
104
+ <%= indent %> {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
105
+ <%= indent %> {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
106
+ <%= indent %> {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
107
+ <%= indent %> {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
108
+ <%= indent %> {Ã}{{\~A}}1 {ã}{{\~a}}1 {Õ}{{\~O}}1 {õ}{{\~o}}1
109
+ <%= indent %> {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
110
+ <%= indent %> {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1
111
+ <%= indent %> {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
112
112
  <%= indent %>}
113
113
  <% if (latexcompiler == "both") { -%>
114
114
  \fi