generator-latex-template 2026.6.26 → 2026.7.29
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.
- package/README.md +28 -4
- package/generators/app/index.js +72 -6
- package/generators/app/options.js +35 -2
- package/generators/app/templates/.github/workflows/check.yml +4 -1
- package/generators/app/templates/README.de.md +6 -0
- package/generators/app/templates/README.en.md +86 -32
- package/generators/app/templates/Texlivefile +45 -23
- package/generators/app/templates/biblatex.preamble.en.tex +11 -2
- package/generators/app/templates/dot.aspell.conf +8 -0
- package/generators/app/templates/dot.aspell.de.pws +1 -1
- package/generators/app/templates/embedfile.preamble.en.tex +4 -0
- package/generators/app/templates/impnattypo.preamble.en.tex +9 -0
- package/generators/app/templates/lccaps.preamble.en.tex +3 -0
- package/generators/app/templates/listings.preamble.de.tex +7 -0
- package/generators/app/templates/listings.preamble.en.tex +7 -0
- package/generators/app/templates/main.de.tex +33 -4
- package/generators/app/templates/main.en.tex +33 -4
- package/generators/app/templates/mwe-main.de.tex +116 -0
- package/generators/app/templates/mwe-main.en.tex +115 -0
- package/generators/app/templates/mwe-manuscript.de.md +57 -0
- package/generators/app/templates/mwe-manuscript.en.md +56 -0
- package/generators/app/templates/otherfeatures.example.en.tex +7 -0
- package/generators/app/templates/rectangularparagraphs.preamble.en.tex +14 -0
- package/generators/app/templates/theorems.example.en.tex +38 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -26,6 +26,21 @@ and a generation into templates:
|
|
|
26
26
|
2. Support for separate documents which require `--shell-escape` and not.
|
|
27
27
|
3. Support for integrated pdflatex and lualatex documents
|
|
28
28
|
|
|
29
|
+
### Markdown quick start (`mwe`)
|
|
30
|
+
|
|
31
|
+
Besides the paper and thesis document classes, the generator offers a **minimal Markdown quick start**, selectable as the `mwe` document class — for people who want a fast start with writing rather than a full thesis with all the tricks.
|
|
32
|
+
|
|
33
|
+
- Content is written in **Markdown** inside a `\begin{markdown} … \end{markdown}` block in `main.tex` (via the [`markdown`](https://ctan.org/pkg/markdown) package): `#` becomes a chapter, `##` a section; citations (`[@key]`), footnotes, task lists, pipe tables, and images work out of the box.
|
|
34
|
+
- It compiles with **LuaLaTeX + biber** (the `markdown` package needs Lua; the bibliography uses biblatex).
|
|
35
|
+
- [`zref-clever`](https://ctan.org/pkg/zref-clever) turns the Markdown `{#id}` identifiers into smart `\zcref` cross-references that print the type name (e.g. "Figure 1.1" / "Abbildung 1.1").
|
|
36
|
+
- It generates a single minimal `main.tex` — no thesis scaffolding, abbreviations, or `commands.tex` — hides the paper/thesis-only prompts, and ships a trimmed, quick-start README.
|
|
37
|
+
|
|
38
|
+
Generate it non-interactively with:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
yo latex-template --documentclass=mwe --lang=en
|
|
42
|
+
```
|
|
43
|
+
|
|
29
44
|
### Precondition for the generator
|
|
30
45
|
|
|
31
46
|
One has to install [Node.js](https://nodejs.org/en/) version 18 (or later) to get this generator running.
|
|
@@ -201,14 +216,23 @@ ejslint.cmd c:\git-repositories\latextemplates\generator-latex-template\generato
|
|
|
201
216
|
|
|
202
217
|
### Releasing a new version
|
|
203
218
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
219
|
+
> **Cut the release from `main`, never from `refine-ltg`.**
|
|
220
|
+
> Releasing from the dev branch publishes an unmerged tree with a not-yet-finalized CHANGELOG — that is what broke the 2026.6.26 release (a stale `## [2026.6.25]` heading, a missing `[2026.6.26]:` compare link, and an `[Unreleased]:` link that was never bumped).
|
|
221
|
+
> So after the squash-merge, `git switch main && git pull` and confirm `git branch --show-current` prints `main` before doing anything below.
|
|
222
|
+
|
|
223
|
+
1. Once the `refine-ltg` PR is green, **squash-merge** it into `main`, then `git switch main && git pull` (confirm you are on `main`).
|
|
224
|
+
2. Update `CHANGELOG.md`: rename the top `## [Unreleased]` heading to `## [<version>]`, add the matching `[<version>]: …/compare/<prev>...<version>` link definition, and bump `[Unreleased]: …/compare/<version>...main`.
|
|
225
|
+
3. **Verify the CHANGELOG before publishing:**
|
|
226
|
+
- Run heylogs (the same check as CI's `check-changelog.yml`) and get **0 problems**:
|
|
227
|
+
`jbang com.github.nbbrd.heylogs:heylogs-cli:0.18.1:bin check CHANGELOG.md`
|
|
228
|
+
- heylogs **cannot** validate the version links here: our CalVer headings omit the date, so `linkable`/`date-displayed`/`all-h2-contain-a-version` are off in `heylogs.properties` and heylogs skips link-checking a dateless heading. So **also check the links by hand** — the top `## [<version>]` must equal the version `release-it` will publish, and both the `[<version>]:` and the bumped `[Unreleased]:` definitions must be present and point at the right tags. Quick grep:
|
|
229
|
+
`grep -nE '^## \[|^\[Unreleased\]:|^\[<version>\]:' CHANGELOG.md`
|
|
230
|
+
4. Update `package.json`, publish to [npmjs](https://www.npmjs.com/package/generator-latex-template), create GitHub release.
|
|
207
231
|
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
232
|
|
|
209
233
|
- `npx release-it`
|
|
210
234
|
- `npx github-release-from-changelog`
|
|
211
|
-
|
|
235
|
+
5. On `main`, run `scripts/end-new-cycle.sh`, then **squash-merge** each template's "Update LTG" PR once it is green.
|
|
212
236
|
|
|
213
237
|
## License
|
|
214
238
|
|
package/generators/app/index.js
CHANGED
|
@@ -53,6 +53,22 @@ export default class extends Generator {
|
|
|
53
53
|
this.props.font = "default";
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
+
if (this.props.documentclass === "mwe") {
|
|
57
|
+
// Minimal Markdown quick start: a fixed, self-contained feature set. The
|
|
58
|
+
// matching prompts are hidden in options.js, so pin every value here (this
|
|
59
|
+
// also makes non-interactive `yo --documentclass=mwe` robust regardless of
|
|
60
|
+
// any flags that leak through).
|
|
61
|
+
this.props.bibtextool = "biblatex";
|
|
62
|
+
this.props.font = "default";
|
|
63
|
+
this.props.latexcompiler = "lualatex"; // Markdown + fontspec need LuaLaTeX
|
|
64
|
+
this.props.listings = "listings";
|
|
65
|
+
this.props.enquotes = "csquotes";
|
|
66
|
+
this.props.tweakouterquote = "babel";
|
|
67
|
+
this.props.todo = "none";
|
|
68
|
+
this.props.howtotext = false;
|
|
69
|
+
this.props.examples = false;
|
|
70
|
+
}
|
|
71
|
+
|
|
56
72
|
// --language does not work properly, therefore, we used "lang" above. The templates still use "language"
|
|
57
73
|
this.props.language = this.props.lang;
|
|
58
74
|
|
|
@@ -124,6 +140,23 @@ export default class extends Generator {
|
|
|
124
140
|
? true
|
|
125
141
|
: this.options.longtable === true || this.options.longtable === "true";
|
|
126
142
|
|
|
143
|
+
// `authoryear` is a plain CLI flag (no prompt): switch citations to
|
|
144
|
+
// author-year globally. Maps to biblatex's authoryear style (theses, lncs)
|
|
145
|
+
// and \citestyle{acmauthoryear} (acmart); the mwe quick start is
|
|
146
|
+
// author-year already. IEEE mandates numeric citations, so it is forced
|
|
147
|
+
// off there.
|
|
148
|
+
this.props.authoryear =
|
|
149
|
+
this.options.authoryear === true || this.options.authoryear === "true";
|
|
150
|
+
if (this.props.documentclass === "ieee") {
|
|
151
|
+
this.props.authoryear = false;
|
|
152
|
+
}
|
|
153
|
+
if (this.props.documentclass === "lncs" && this.props.authoryear) {
|
|
154
|
+
// natbib + splncs04nat is numeric-only; author-year for LNCS goes
|
|
155
|
+
// through biblatex (llncs's own citeauthoryear option needs Springer
|
|
156
|
+
// .bst files that are not in TeX Live)
|
|
157
|
+
this.props.bibtextool = "biblatex";
|
|
158
|
+
}
|
|
159
|
+
|
|
127
160
|
// Only minted and the PlantUML UML example need shell-escape; tikz-uml and the
|
|
128
161
|
// remaining thesis content do not.
|
|
129
162
|
this.props.requiresShellEscape =
|
|
@@ -152,6 +185,22 @@ export default class extends Generator {
|
|
|
152
185
|
}
|
|
153
186
|
|
|
154
187
|
function isPaperHandling(props) {
|
|
188
|
+
if (props.documentclass === "mwe") {
|
|
189
|
+
// The mwe quick start is neither a paper nor a thesis. Its wrapper main
|
|
190
|
+
// (mwe-main.<lang>.tex) pulls the prose from an external Markdown file
|
|
191
|
+
// (mwe-manuscript.<lang>.md) via \markdownInput. English keeps the plain
|
|
192
|
+
// names main.tex / manuscript.md; German gets a -de suffix so both
|
|
193
|
+
// languages can coexist in one repo (like scientific-thesis below) with
|
|
194
|
+
// each wrapper referencing its own manuscript -- no rename needed.
|
|
195
|
+
props.isPaper = false;
|
|
196
|
+
props.isThesis = false;
|
|
197
|
+
props.filenames = {
|
|
198
|
+
main: props.language === "en" ? "main" : "main-de",
|
|
199
|
+
manuscript: props.language === "en" ? "manuscript" : "manuscript-de",
|
|
200
|
+
bib: "bibliography",
|
|
201
|
+
};
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
155
204
|
props.isPaper =
|
|
156
205
|
props.documentclass === "acmart" ||
|
|
157
206
|
props.documentclass === "ieee" ||
|
|
@@ -290,12 +339,26 @@ export default class extends Generator {
|
|
|
290
339
|
);
|
|
291
340
|
}
|
|
292
341
|
|
|
342
|
+
// The mwe quick start has its own minimal Markdown main; every other class
|
|
343
|
+
// shares the big main.<lang>.tex.
|
|
344
|
+
const mainTemplate =
|
|
345
|
+
this.props.documentclass === "mwe" ? "mwe-main." : "main.";
|
|
293
346
|
this.fs.copyTpl(
|
|
294
|
-
this.templatePath(
|
|
347
|
+
this.templatePath(mainTemplate + this.props.language + ".tex"),
|
|
295
348
|
this.destinationPath(this.props.filenames.main + ".tex"),
|
|
296
349
|
this.props,
|
|
297
350
|
);
|
|
298
351
|
|
|
352
|
+
// The mwe wrapper main pulls its prose from an external Markdown file so it
|
|
353
|
+
// can be edited and linted as plain Markdown (see mwe-main.<lang>.tex).
|
|
354
|
+
if (this.props.documentclass === "mwe") {
|
|
355
|
+
this.fs.copyTpl(
|
|
356
|
+
this.templatePath("mwe-manuscript." + this.props.language + ".md"),
|
|
357
|
+
this.destinationPath(this.props.filenames.manuscript + ".md"),
|
|
358
|
+
this.props,
|
|
359
|
+
);
|
|
360
|
+
}
|
|
361
|
+
|
|
299
362
|
if (this.props.feature.abbreviations) {
|
|
300
363
|
this.fs.copy(
|
|
301
364
|
this.templatePath("abbreviations." + this.props.language + ".tex"),
|
|
@@ -303,11 +366,14 @@ export default class extends Generator {
|
|
|
303
366
|
);
|
|
304
367
|
}
|
|
305
368
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
this.
|
|
309
|
-
|
|
310
|
-
|
|
369
|
+
// mwe-main does not \input{commands}; keep the quick start minimal.
|
|
370
|
+
if (this.props.documentclass !== "mwe") {
|
|
371
|
+
this.fs.copyTpl(
|
|
372
|
+
this.templatePath("commands.tex"),
|
|
373
|
+
this.destinationPath("commands.tex"),
|
|
374
|
+
this.props,
|
|
375
|
+
);
|
|
376
|
+
}
|
|
311
377
|
|
|
312
378
|
if (this.props.documentclass == "ustutt") {
|
|
313
379
|
/*
|
|
@@ -24,6 +24,10 @@ export const options = [
|
|
|
24
24
|
name: "PhD Thesis Template (University of Stuttgart)",
|
|
25
25
|
value: "ustutt",
|
|
26
26
|
},
|
|
27
|
+
{
|
|
28
|
+
name: "Minimal quick start — write your content in Markdown (LuaLaTeX + biber)",
|
|
29
|
+
value: "mwe",
|
|
30
|
+
},
|
|
27
31
|
],
|
|
28
32
|
default: "acmart",
|
|
29
33
|
},
|
|
@@ -181,6 +185,10 @@ export const options = [
|
|
|
181
185
|
{
|
|
182
186
|
type: "list",
|
|
183
187
|
name: "latexcompiler",
|
|
188
|
+
when(response) {
|
|
189
|
+
// The mwe quick start is Markdown + fontspec, hence LuaLaTeX-only (forced in index.js).
|
|
190
|
+
return response.documentclass !== "mwe";
|
|
191
|
+
},
|
|
184
192
|
message: "Which latex compiler should be used?",
|
|
185
193
|
choices(state) {
|
|
186
194
|
const res = [
|
|
@@ -218,7 +226,8 @@ export const options = [
|
|
|
218
226
|
return (
|
|
219
227
|
response.documentclass !== "acmart" &&
|
|
220
228
|
response.documentclass !== "ieee" &&
|
|
221
|
-
response.documentclass !== "ustutt"
|
|
229
|
+
response.documentclass !== "ustutt" &&
|
|
230
|
+
response.documentclass !== "mwe"
|
|
222
231
|
);
|
|
223
232
|
},
|
|
224
233
|
type: "list",
|
|
@@ -324,13 +333,19 @@ export const options = [
|
|
|
324
333
|
default: "default",
|
|
325
334
|
when(response) {
|
|
326
335
|
return (
|
|
327
|
-
response.documentclass !== "ieee" &&
|
|
336
|
+
response.documentclass !== "ieee" &&
|
|
337
|
+
response.documentclass !== "ustutt" &&
|
|
338
|
+
response.documentclass !== "mwe"
|
|
328
339
|
);
|
|
329
340
|
},
|
|
330
341
|
},
|
|
331
342
|
{
|
|
332
343
|
type: "list",
|
|
333
344
|
name: "listings",
|
|
345
|
+
when(response) {
|
|
346
|
+
// The mwe quick start has no code listings.
|
|
347
|
+
return response.documentclass !== "mwe";
|
|
348
|
+
},
|
|
334
349
|
message: "Which package to typeset listings?",
|
|
335
350
|
choices: [
|
|
336
351
|
{
|
|
@@ -347,6 +362,10 @@ export const options = [
|
|
|
347
362
|
{
|
|
348
363
|
type: "list",
|
|
349
364
|
name: "enquotes",
|
|
365
|
+
when(response) {
|
|
366
|
+
// The mwe quick start fixes csquotes (forced in index.js).
|
|
367
|
+
return response.documentclass !== "mwe";
|
|
368
|
+
},
|
|
350
369
|
message: 'Which package to use to "enquote" text?',
|
|
351
370
|
choices(state) {
|
|
352
371
|
const res = [];
|
|
@@ -380,6 +399,9 @@ export const options = [
|
|
|
380
399
|
{
|
|
381
400
|
type: "list",
|
|
382
401
|
name: "tweakouterquote",
|
|
402
|
+
when(response) {
|
|
403
|
+
return response.documentclass !== "mwe";
|
|
404
|
+
},
|
|
383
405
|
message:
|
|
384
406
|
'Enable hyphenation tweak (e.g., application"=specific for app-lication-specific at a linebreak) or enable easy quotation (e.g., "application"; not common in default latex setups)?',
|
|
385
407
|
choices: [
|
|
@@ -397,6 +419,10 @@ export const options = [
|
|
|
397
419
|
{
|
|
398
420
|
type: "list",
|
|
399
421
|
name: "todo",
|
|
422
|
+
when(response) {
|
|
423
|
+
// The mwe quick start has no TODO markers.
|
|
424
|
+
return response.documentclass !== "mwe";
|
|
425
|
+
},
|
|
400
426
|
message: "Which package to mark TODOs?",
|
|
401
427
|
choices: [
|
|
402
428
|
{
|
|
@@ -421,12 +447,19 @@ export const options = [
|
|
|
421
447
|
{
|
|
422
448
|
type: "confirm",
|
|
423
449
|
name: "howtotext",
|
|
450
|
+
when(response) {
|
|
451
|
+
return response.documentclass !== "mwe";
|
|
452
|
+
},
|
|
424
453
|
message: "Include hints on text (e.g., how to write an abstract)?",
|
|
425
454
|
default: true,
|
|
426
455
|
},
|
|
427
456
|
{
|
|
428
457
|
type: "confirm",
|
|
429
458
|
name: "examples",
|
|
459
|
+
when(response) {
|
|
460
|
+
// The mwe document *is* the example; the LaTeX-hints chapter does not apply.
|
|
461
|
+
return response.documentclass !== "mwe";
|
|
462
|
+
},
|
|
430
463
|
message: "Include minimal LaTeX examples?",
|
|
431
464
|
default: true,
|
|
432
465
|
},
|
|
@@ -122,11 +122,13 @@ jobs:
|
|
|
122
122
|
path: |
|
|
123
123
|
texcount.txt
|
|
124
124
|
texcount.html
|
|
125
|
+
<%# The mwe class writes Markdown, which aspell cannot parse; the check-markdown (Vale) workflow lints its prose instead, so the aspell spell-check job is omitted here. -%>
|
|
126
|
+
<% if (documentclass !== "mwe") { -%>
|
|
125
127
|
spell-check:
|
|
126
128
|
# This is based on https://github.com/mh61503891/action-paper-aspell/tree/master
|
|
127
129
|
#
|
|
128
130
|
<% if (documentclass === "scientific-thesis") { -%>
|
|
129
|
-
# Disabled
|
|
131
|
+
# Disabled: the example content trips too many aspell false positives to maintain
|
|
130
132
|
if: false
|
|
131
133
|
<% } -%>
|
|
132
134
|
runs-on: ubuntu-latest
|
|
@@ -180,6 +182,7 @@ jobs:
|
|
|
180
182
|
echo 'If you want to ignore words, add them to `.aspell.<%= language %>.pws` (your personal aspell dictionary)' >> $GITHUB_STEP_SUMMARY
|
|
181
183
|
exit 1
|
|
182
184
|
fi
|
|
185
|
+
<% } -%>
|
|
183
186
|
indent:
|
|
184
187
|
runs-on: ubuntu-latest
|
|
185
188
|
steps:
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
# LaTeX Dokument
|
|
2
|
+
<% if (documentclass == "mwe") { -%>
|
|
3
|
+
|
|
4
|
+
Ein **minimaler Markdown-Schnellstart**: Schreibe deinen Inhalt als reines Markdown in `<%= filenames.manuscript %>.md`. Der schlanke Rahmen `<%= filenames.main %>.tex` bindet ihn per `\markdownInput` ein, LaTeX macht daraus ein PDF.
|
|
5
|
+
<% } -%>
|
|
6
|
+
|
|
7
|
+
Die in dieser Vorlage verwendeten LaTeX-Snippets können unter <https://latextemplates.github.io/latex-snippets/> eingesehen werden.
|
|
2
8
|
|
|
3
9
|
Kompiliere es mittels
|
|
4
10
|
<% if (latexcompiler == "pdflatex") { %>
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
# Enhanced LNCS Template
|
|
5
5
|
|
|
6
6
|
> Quick start for modern LaTeXing with [LNCS](http://www.springer.com/computer/lncs).
|
|
7
|
-
<% if (texlive >
|
|
7
|
+
<% if (texlive > 2025) { -%>
|
|
8
8
|
|
|
9
|
-
Please be aware that this template is optimized for overleaf, which is based on TeXLive
|
|
9
|
+
Please be aware that this template is optimized for overleaf, which is based on TeXLive 2025.
|
|
10
10
|
In case you are running a later TeXLive version (or use MiKTeX), please regenerate the template with the help of the [latex template generator].
|
|
11
11
|
<% } -%>
|
|
12
12
|
<% break; case "ieee": -%>
|
|
@@ -14,8 +14,8 @@ In case you are running a later TeXLive version (or use MiKTeX), please regenera
|
|
|
14
14
|
|
|
15
15
|
> Quick start for modern LaTeXing for an IEEE conference, based on the [Manuscript Template for Conference Proceedings](https://www.ieee.org/conferences_events/conferences/publishing/templates.html).
|
|
16
16
|
|
|
17
|
-
<% if (texlive >
|
|
18
|
-
Please be aware that this template is optimized for overleaf, which is based on TeXLive
|
|
17
|
+
<% if (texlive > 2025) { -%>
|
|
18
|
+
Please be aware that this template is optimized for overleaf, which is based on TeXLive 2025.
|
|
19
19
|
In case you are running a later TeXLive version (or use MiKTeX), please regenerate the template with the help of the [latex template generator].
|
|
20
20
|
|
|
21
21
|
<% } -%>
|
|
@@ -102,9 +102,39 @@ See [docs/overleaf](docs/overleaf/).
|
|
|
102
102
|
<% break; default: -%>
|
|
103
103
|
# LaTeX Document
|
|
104
104
|
<% break; }
|
|
105
|
-
} else { -%>
|
|
105
|
+
} else if (documentclass == "mwe") { -%>
|
|
106
|
+
# LaTeX Document — Markdown Quick Start
|
|
107
|
+
<% } else { -%>
|
|
106
108
|
# LaTeX Document
|
|
107
109
|
<% } -%>
|
|
110
|
+
<% if (documentclass == "mwe") { -%>
|
|
111
|
+
|
|
112
|
+
This is a **minimal Markdown quick start**. Write your content as plain Markdown in [`<%= filenames.manuscript %>.md`](<%= filenames.manuscript %>.md); the thin wrapper [`<%= filenames.main %>.tex`](<%= filenames.main %>.tex) pulls it in with `\markdownInput` and LaTeX turns it into a PDF — no thesis scaffolding, just the essentials: headings, citations, footnotes, tables, figures, smart cross-references (`\zcref`), and acronyms (defined once in the wrapper, recognized automatically in the running text and collected in an acronym list). Keeping the prose in a real `.md` file means your editor treats it as Markdown and the spell-/prose-checkers below lint it directly.
|
|
113
|
+
<% } -%>
|
|
114
|
+
|
|
115
|
+
The LaTeX snippets this template is assembled from can be inspected at <https://latextemplates.github.io/latex-snippets/>.
|
|
116
|
+
<% if (githubpublish) { switch (documentclass) { case "lncs": -%>
|
|
117
|
+
|
|
118
|
+
## Examples
|
|
119
|
+
|
|
120
|
+
- [paper.pdf](https://latextemplates.github.io/lncs-enhanced/paper.pdf) - normal paper.
|
|
121
|
+
- [paper-minted.pdf](https://latextemplates.github.io/lncs-enhanced/paper-minted.pdf) - paper showing minted in action.
|
|
122
|
+
- [paper-newtx.pdf](http://latextemplates.github.io/lncs-enhanced/paper-newtx.pdf) - paper typeset in Times Roman to save some space.
|
|
123
|
+
- [paper-minted-newtx.pdf](http://latextemplates.github.io/lncs-enhanced/paper-minted-newtx.pdf) - paper typeset in Times Roman to save some space.
|
|
124
|
+
<% break; case "ieee": -%>
|
|
125
|
+
|
|
126
|
+
## Examples
|
|
127
|
+
|
|
128
|
+
- [paper.pdf](https://latextemplates.github.io/ieee-enhanced/paper.pdf) - regular conference paper.
|
|
129
|
+
- [paper-minted.pdf](https://latextemplates.github.io/ieee-enhanced/paper-minted.pdf) - conference paper showing minted in action.
|
|
130
|
+
<% break; case "acmart": -%>
|
|
131
|
+
|
|
132
|
+
## Examples
|
|
133
|
+
|
|
134
|
+
- [paper.pdf](https://latextemplates.github.io/acm-enhanced/paper.pdf) - regular conference paper.
|
|
135
|
+
- [paper-minted.pdf](https://latextemplates.github.io/acm-enhanced/paper-minted.pdf) - conference paper showing minted in action.
|
|
136
|
+
<% break; default: -%>
|
|
137
|
+
<% break; } } -%>
|
|
108
138
|
|
|
109
139
|
## Usage
|
|
110
140
|
|
|
@@ -163,10 +193,29 @@ On the command line, there are additional features:
|
|
|
163
193
|
- `latexmk -C` or `make clean` for cleaning up
|
|
164
194
|
- `make format` to reformat the `.tex` files (one sentence per line and indent)
|
|
165
195
|
- `make aspell` for interactive spell checking
|
|
166
|
-
- `make stand`: Creates a new PDF with the current status of the
|
|
196
|
+
- `make stand`: Creates a new PDF with the current status of the document.
|
|
167
197
|
- `make view`: Opens the configured viewer
|
|
168
198
|
- `make mrproper`: Cleans up and removes also editor backup files.
|
|
199
|
+
<% if (documentclass == "mwe") { -%>
|
|
200
|
+
|
|
201
|
+
### Linting your Markdown
|
|
202
|
+
|
|
203
|
+
Because the prose is a plain Markdown file, the text linters run on it directly — no extraction, and the reported line numbers point straight at `<%= filenames.manuscript %>.md`. Two workflows lint it and post inline annotations: `check-markdown` runs [Vale](https://vale.sh) (spelling, repetition), and `check-textlint` runs [textlint](https://github.com/textlint/textlint) (`write-good` + `terminology`).
|
|
204
|
+
|
|
205
|
+
Run textlint locally with `npx` (needs Node.js; rules come from `.textlintrc.json`):
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
npx --yes --package textlint --package textlint-rule-terminology --package textlint-rule-write-good textlint <%= filenames.manuscript %>.md
|
|
209
|
+
```
|
|
169
210
|
|
|
211
|
+
For Vale, install it (`brew install vale` / `choco install vale`, or see <https://vale.sh/docs>) and point it at the file:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
vale <%= filenames.manuscript %>.md
|
|
215
|
+
```
|
|
216
|
+
<% } -%>
|
|
217
|
+
|
|
218
|
+
<% if (documentclass != "mwe") { -%>
|
|
170
219
|
## Benefits
|
|
171
220
|
|
|
172
221
|
Following features are enabled in this template:
|
|
@@ -266,8 +315,9 @@ Congratulations. You chose to use all available features.
|
|
|
266
315
|
<% } -%>
|
|
267
316
|
|
|
268
317
|
<% switch (documentclass) { case "lncs": -%>
|
|
269
|
-
|
|
270
|
-
|
|
318
|
+
Besides the default BibTeX setup (natbib + `splncs04nat`), biblatex is supported: generate with `--bibtextool=biblatex` to use the [biblatex-lncs](https://ctan.org/pkg/biblatex-lncs) style (numeric, mimicking Springer's `splncs04` look, processed with biber).
|
|
319
|
+
|
|
320
|
+
For **author-year citations** (this template's answer to `llncs`'s `citeauthoryear` option, whose Springer `.bst` files are not part of TeX Live), generate with `--authoryear=true`: this switches to biblatex with the `authoryear` style, so `\citep{key}` renders as "(Author, year)" and `\citet{key}` as "Author (year)".
|
|
271
321
|
|
|
272
322
|
<% break; case "ieee": -%>
|
|
273
323
|
There is currently no official biblatex support.
|
|
@@ -275,16 +325,10 @@ A first step towards that is done at the [biblatex-ieee package](https://ctan.or
|
|
|
275
325
|
|
|
276
326
|
<% break; default: -%>
|
|
277
327
|
<% break; } -%>
|
|
328
|
+
<% } -%>
|
|
278
329
|
<% if (githubpublish) {
|
|
279
330
|
switch (documentclass) {
|
|
280
331
|
case "lncs": -%>
|
|
281
|
-
## Examples
|
|
282
|
-
|
|
283
|
-
- [paper.pdf](https://latextemplates.github.io/lncs-enhanced/paper.pdf) - normal paper.
|
|
284
|
-
- [paper-minted.pdf](https://latextemplates.github.io/lncs-enhanced/paper-minted.pdf) - paper showing minted in action.
|
|
285
|
-
- [paper-newtx.pdf](http://latextemplates.github.io/lncs-enhanced/paper-newtx.pdf) - paper typeset in Times Roman to save some space.
|
|
286
|
-
- [paper-minted-newtx.pdf](http://latextemplates.github.io/lncs-enhanced/paper-minted-newtx.pdf) - paper typeset in Times Roman to save some space.
|
|
287
|
-
|
|
288
332
|
## Background
|
|
289
333
|
|
|
290
334
|
The official template is available at <https://www.springer.com/gp/computer-science/lncs/conference-proceedings-guidelines> --> "Templates, samples files & useful links" --> "LaTeX2e Proceedings Templates (zip)"
|
|
@@ -304,11 +348,6 @@ This might lead to undesired results such as hyperlinks not working any more or
|
|
|
304
348
|
In case you think, a package needs to be altered or added, feel free to open an issue.
|
|
305
349
|
|
|
306
350
|
<% break; case "ieee": -%>
|
|
307
|
-
## Examples
|
|
308
|
-
|
|
309
|
-
- [paper.pdf](https://latextemplates.github.io/ieee-enhanced/paper.pdf) - regular conference paper.
|
|
310
|
-
- [paper-minted.pdf](https://latextemplates.github.io/ieee-enhanced/paper-minted.pdf) - conference paper showing minted in action.
|
|
311
|
-
|
|
312
351
|
## Quick start
|
|
313
352
|
|
|
314
353
|
- Click on `Download ZIP` or [here](https://github.com/latextemplates/IEEE/archive/main.zip).
|
|
@@ -357,6 +396,21 @@ Statement from IEEE:
|
|
|
357
396
|
<% break; default: -%>
|
|
358
397
|
<% break; }
|
|
359
398
|
} else { -%>
|
|
399
|
+
<% } -%>
|
|
400
|
+
<% if (isPaper) { -%>
|
|
401
|
+
## Final submission
|
|
402
|
+
|
|
403
|
+
The compiled PDF embeds the `<%= filenames.bib %>.bib` file (via the [embedfile](https://ctan.org/pkg/embedfile) package), so readers can extract the reference data from the PDF, e.g., with JabRef via "Import into library".
|
|
404
|
+
Some publishers' final-submission checks (e.g., IEEE PDF eXpress or PDF/A validation) reject PDFs containing file attachments.
|
|
405
|
+
If your submission system complains, comment out the `\embedfile` line in `<%= filenames.main %>.tex` for the camera-ready version.
|
|
406
|
+
|
|
407
|
+
### arXiv
|
|
408
|
+
|
|
409
|
+
The first line of `<%= filenames.main %>.tex` is `\ifdefined\pdfoutput\pdfoutput=1\fi`.
|
|
410
|
+
Keep it when uploading to arXiv: arXiv scans the first lines for `\pdfoutput=1` to decide between `pdflatex` and DVI-producing `latex`.
|
|
411
|
+
Without the line, arXiv falls back to `latex`, which cannot build the modern fonts (they ship without Metafont sources) and aborts with an error such as `! I can't find file 'clmr28t10+20'`.
|
|
412
|
+
See [this question on TeX.SE](https://tex.stackexchange.com/q/584702/9075) for details.
|
|
413
|
+
|
|
360
414
|
<% } -%>
|
|
361
415
|
## Tool hints
|
|
362
416
|
|
|
@@ -480,7 +534,7 @@ Alternatively, just copy and paste the contents of the [vscode.settings.json](vs
|
|
|
480
534
|
|
|
481
535
|
You can manually trigger compilation by hitting the green button in the extension or using other methods provided by LaTeX Workshop.
|
|
482
536
|
|
|
483
|
-
Please remove the magic comments (`% !TeX program ...`) at the top of the
|
|
537
|
+
Please remove the magic comments (`% !TeX program ...`) at the top of the `<%= filenames.main %>.tex` file.
|
|
484
538
|
Although [LaTeX-Workshop supports magic comments](https://github.com/James-Yu/LaTeX-Workshop/blob/master/README.md#magic-comments), it currently does not work reliably.
|
|
485
539
|
Without the magic comments, compilation works.
|
|
486
540
|
|
|
@@ -536,6 +590,7 @@ docker build -t ltg .
|
|
|
536
590
|
|
|
537
591
|
<% break; default: -%>
|
|
538
592
|
<% break; } -%>
|
|
593
|
+
<% if (documentclass != "mwe") { -%>
|
|
539
594
|
## Contained Directories and Files
|
|
540
595
|
|
|
541
596
|
### Directories
|
|
@@ -776,15 +831,16 @@ Just answer "(a) allow for this document" and it will work.
|
|
|
776
831
|
4. Use [pdfscissors](https://sites.google.com/site/pdfscissors) to crop the borders and title (maybe you have to allow <https://sites.google.com> in the Java security center in the control panel).
|
|
777
832
|
5. Include the PDF in LaTeX via `\includegraphics{chart_cropped.pdf}`.
|
|
778
833
|
|
|
779
|
-
|
|
780
|
-
### Q: Overleaf complains about missing
|
|
781
|
-
|
|
782
|
-
Google for the name of the `sty` and upload it to overleaf.
|
|
783
|
-
As of 2018-02-17, these are:
|
|
834
|
+
<% if (uml == "tikz-uml") { -%>
|
|
835
|
+
### Q: Overleaf complains about a missing `tikz-uml.sty`.
|
|
784
836
|
|
|
785
|
-
- `
|
|
786
|
-
|
|
837
|
+
`tikz-uml` is not part of TeX Live; locally it is provided as a git submodule placed on the `TEXINPUTS` search path (see "UML diagram example" above).
|
|
838
|
+
Overleaf does not fetch git submodules, so `tikz-uml.sty` is unavailable there.
|
|
839
|
+
Download `tikz-uml.sty` from the [tikz-uml repository](https://plmlab.math.cnrs.fr/tikzuml/tikzuml) and upload it into your Overleaf project, next to your main `.tex` file; the UML example then compiles.
|
|
840
|
+
Without it, the example is skipped automatically and the rest of the document still builds.
|
|
787
841
|
|
|
842
|
+
<% } -%>
|
|
843
|
+
<%#
|
|
788
844
|
### Q: My Paderborn title page is strange. The boxes seem to be located arbitrarily.
|
|
789
845
|
|
|
790
846
|
Just run pdflatex again.
|
|
@@ -815,15 +871,13 @@ We are collecting alternatives at the issue [#25](https://github.com/latextempla
|
|
|
815
871
|
You did not setup the [plantuml package](https://www.ctan.org/pkg/plantuml) correctly.
|
|
816
872
|
Please head to <https://koppor.github.io/plantuml/> for installation instructions.
|
|
817
873
|
|
|
874
|
+
<% } -%>
|
|
818
875
|
<% } -%>
|
|
819
876
|
## Further information
|
|
820
877
|
|
|
821
878
|
<% if (documentclass == 'lncs') { -%>
|
|
822
879
|
- tex.stackexchange.com questions regarding LNCS: <https://tex.stackexchange.com/questions/tagged/lncs>
|
|
823
|
-
|
|
824
|
-
- Original LNCS demonstration (without the improvements): [llncs-dem.pdf](llncs-dem.pdf)
|
|
825
|
-
- Original LNCS documentation (without the improvements): [llncs-doc.pdf](llncs-doc.pdf)
|
|
826
|
-
<% } -%>
|
|
880
|
+
- Original LNCS documentation (without the improvements): [llncsdoc.pdf](https://mirrors.ctan.org/macros/latex/contrib/llncs/llncsdoc.pdf) from the [llncs CTAN package](https://ctan.org/pkg/llncs). The old `llncs.dem` demonstration is no longer part of that package; the official sample paper (`samplepaper.tex`) is contained in Springer's [LaTeX2e Proceedings Templates (zip)](https://www.springer.com/gp/computer-science/lncs/conference-proceedings-guidelines).
|
|
827
881
|
<% } -%>
|
|
828
882
|
- Other templates: <https://latextemplates.github.io/>
|
|
829
883
|
- For German users, go to <https://texfragen.de/>.
|