From 727433d46b95e455dd4ea1815440851e40018108 Mon Sep 17 00:00:00 2001 From: Dominik Becker Date: Sun, 24 May 2020 15:14:44 +0200 Subject: [PATCH 01/11] #42 changed docker image for spell checking --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 09616cb..d723f60 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,7 +28,7 @@ latexmk: # - mv main.pdf main@$ci_commit_sha_short.pdf hunspell_chapters: - image: tmaier/hunspell:latest + image: fastexitlane/hunspell:latest stage: test script: - export HUNSPELL_FINDINGS=`for filename in chapter/*.tex; do hunspell -l -d de_DE_neu,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` @@ -38,7 +38,7 @@ hunspell_chapters: hunspell_appendix: - image: tmaier/hunspell:latest + image: fastexitlane/hunspell:latest stage: test script: - export HUNSPELL_FINDINGS=`for filename in appendix/*.tex; do hunspell -l -d de_DE_neu,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` From 7a14311dce952fd3394efaf46802c3af7d2e0e4f Mon Sep 17 00:00:00 2001 From: Dominik Becker Date: Sun, 24 May 2020 15:24:45 +0200 Subject: [PATCH 02/11] #42 added testfile for mwe --- chapter/01_test.tex | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 chapter/01_test.tex diff --git a/chapter/01_test.tex b/chapter/01_test.tex new file mode 100644 index 0000000..799e9e1 --- /dev/null +++ b/chapter/01_test.tex @@ -0,0 +1,2 @@ +Hier könnte Ihre Werbuing stehen. +Da war ein Wort falsch. \ No newline at end of file From e7d115992c926cee08eb20d636a1849434f32529 Mon Sep 17 00:00:00 2001 From: Dominik Becker Date: Sun, 24 May 2020 15:26:08 +0200 Subject: [PATCH 03/11] #41 moved CI/CD config for pandoc to seperate file --- .gitlab-ci.yml | 12 ------------ markdown.gitlab-ci.yml | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 markdown.gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d723f60..f9d5099 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,18 +14,6 @@ latexmk: - ci_commit_sha_short=`git rev-parse --short $CI_COMMIT_SHA` - mv main.pdf main@$ci_commit_sha_short.pdf -# pandoc_latexmk: -# image: fastexitlane/pandoc-latex:latest -# stage: build -# artifacts: -# paths: -# - main*.pdf -# expire_in: 2d -# script: -# - pandoc --filter pandoc-crossref --filter pandoc-citeproc -M cref=true --top-level-division=chapter --bibliography library/library.bib --biblatex -o chapter/out.tex chapter/*.md -# - latexmk main.tex -# - ci_commit_sha_short=`git rev-parse --short $CI_COMMIT_SHA` -# - mv main.pdf main@$ci_commit_sha_short.pdf hunspell_chapters: image: fastexitlane/hunspell:latest diff --git a/markdown.gitlab-ci.yml b/markdown.gitlab-ci.yml new file mode 100644 index 0000000..6bbf558 --- /dev/null +++ b/markdown.gitlab-ci.yml @@ -0,0 +1,36 @@ +stages: + - test + - build + +pandoc_latexmk: + image: fastexitlane/pandoc-latex:latest + stage: build + artifacts: + paths: + - main*.pdf + expire_in: 2d + script: + - pandoc --filter pandoc-crossref --filter pandoc-citeproc -M cref=true --top-level-division=chapter --bibliography library/library.bib --biblatex -o chapter/out.tex chapter/*.md + - latexmk main.tex + - ci_commit_sha_short=`git rev-parse --short $CI_COMMIT_SHA` + - mv main.pdf main@$ci_commit_sha_short.pdf + + hunspell_chapters: + image: fastexitlane/hunspell:latest + stage: test + script: + - export HUNSPELL_FINDINGS=`for filename in chapter/*.md; do hunspell -l -d de_DE_neu,en_US -p ./.hunspellignore $filename; done | sort | uniq` + - echo $HUNSPELL_FINDINGS + - test "$HUNSPELL_FINDINGS" == "" + allow_failure: true + + + hunspell_appendix: + image: fastexitlane/hunspell:latest + stage: test + script: + - export HUNSPELL_FINDINGS=`for filename in appendix/*.tex; do hunspell -l -d de_DE_neu,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` + - echo $HUNSPELL_FINDINGS + - test "$HUNSPELL_FINDINGS" == "" + allow_failure: true + \ No newline at end of file From 93e54b8b06ce297bf80ec281d8f5ac7cf3281194 Mon Sep 17 00:00:00 2001 From: Dominik Becker Date: Sun, 24 May 2020 15:27:04 +0200 Subject: [PATCH 04/11] #41 created mwe --- chapter/02_test.md | 2 ++ markdown.gitlab-ci.yml => gitlab-ci.yml | 0 .gitlab-ci.yml => latex..gitlab-ci.yml | 0 3 files changed, 2 insertions(+) create mode 100644 chapter/02_test.md rename markdown.gitlab-ci.yml => gitlab-ci.yml (100%) rename .gitlab-ci.yml => latex..gitlab-ci.yml (100%) diff --git a/chapter/02_test.md b/chapter/02_test.md new file mode 100644 index 0000000..799e9e1 --- /dev/null +++ b/chapter/02_test.md @@ -0,0 +1,2 @@ +Hier könnte Ihre Werbuing stehen. +Da war ein Wort falsch. \ No newline at end of file diff --git a/markdown.gitlab-ci.yml b/gitlab-ci.yml similarity index 100% rename from markdown.gitlab-ci.yml rename to gitlab-ci.yml diff --git a/.gitlab-ci.yml b/latex..gitlab-ci.yml similarity index 100% rename from .gitlab-ci.yml rename to latex..gitlab-ci.yml From 4263c9b07593497ee9951e73c9eaa30643f87b90 Mon Sep 17 00:00:00 2001 From: Dominik Becker Date: Sun, 24 May 2020 15:35:22 +0200 Subject: [PATCH 05/11] #41 created mwe --- gitlab-ci.yml => .gitlab-ci.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename gitlab-ci.yml => .gitlab-ci.yml (100%) diff --git a/gitlab-ci.yml b/.gitlab-ci.yml similarity index 100% rename from gitlab-ci.yml rename to .gitlab-ci.yml From 6480f11c67db341e276ef8d5e1089244c2369979 Mon Sep 17 00:00:00 2001 From: Dominik Becker Date: Sun, 24 May 2020 15:42:07 +0200 Subject: [PATCH 06/11] #42 changed default german dictionaries to frami editions --- .gitlab-ci.yml | 4 ++-- latex..gitlab-ci.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6bbf558..d122028 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,7 +19,7 @@ pandoc_latexmk: image: fastexitlane/hunspell:latest stage: test script: - - export HUNSPELL_FINDINGS=`for filename in chapter/*.md; do hunspell -l -d de_DE_neu,en_US -p ./.hunspellignore $filename; done | sort | uniq` + - export HUNSPELL_FINDINGS=`for filename in chapter/*.md; do hunspell -l -d de_DE_neu_frami,en_US -p ./.hunspellignore $filename; done | sort | uniq` - echo $HUNSPELL_FINDINGS - test "$HUNSPELL_FINDINGS" == "" allow_failure: true @@ -29,7 +29,7 @@ pandoc_latexmk: image: fastexitlane/hunspell:latest stage: test script: - - export HUNSPELL_FINDINGS=`for filename in appendix/*.tex; do hunspell -l -d de_DE_neu,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` + - export HUNSPELL_FINDINGS=`for filename in appendix/*.tex; do hunspell -l -d de_DE_neu_frami,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` - echo $HUNSPELL_FINDINGS - test "$HUNSPELL_FINDINGS" == "" allow_failure: true diff --git a/latex..gitlab-ci.yml b/latex..gitlab-ci.yml index f9d5099..8b55b00 100644 --- a/latex..gitlab-ci.yml +++ b/latex..gitlab-ci.yml @@ -19,7 +19,7 @@ hunspell_chapters: image: fastexitlane/hunspell:latest stage: test script: - - export HUNSPELL_FINDINGS=`for filename in chapter/*.tex; do hunspell -l -d de_DE_neu,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` + - export HUNSPELL_FINDINGS=`for filename in chapter/*.tex; do hunspell -l -d de_DE_neu_frami,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` - echo $HUNSPELL_FINDINGS - test "$HUNSPELL_FINDINGS" == "" allow_failure: true @@ -29,7 +29,7 @@ hunspell_appendix: image: fastexitlane/hunspell:latest stage: test script: - - export HUNSPELL_FINDINGS=`for filename in appendix/*.tex; do hunspell -l -d de_DE_neu,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` + - export HUNSPELL_FINDINGS=`for filename in appendix/*.tex; do hunspell -l -d de_DE_neu_frami,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` - echo $HUNSPELL_FINDINGS - test "$HUNSPELL_FINDINGS" == "" allow_failure: true From f0d1398aa30d1e6aaf16a59175b492272db5ea92 Mon Sep 17 00:00:00 2001 From: Dominik Becker Date: Sun, 24 May 2020 15:44:16 +0200 Subject: [PATCH 07/11] #41 fixed issue with line indendation --- .gitlab-ci.yml | 42 +++++++++++---------- latex..gitlab-ci.yml => latex.gitlab-ci.yml | 0 2 files changed, 22 insertions(+), 20 deletions(-) rename latex..gitlab-ci.yml => latex.gitlab-ci.yml (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d122028..6d337a5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,8 @@ stages: - test - build - + + pandoc_latexmk: image: fastexitlane/pandoc-latex:latest stage: build @@ -14,23 +15,24 @@ pandoc_latexmk: - latexmk main.tex - ci_commit_sha_short=`git rev-parse --short $CI_COMMIT_SHA` - mv main.pdf main@$ci_commit_sha_short.pdf - - hunspell_chapters: - image: fastexitlane/hunspell:latest - stage: test - script: - - export HUNSPELL_FINDINGS=`for filename in chapter/*.md; do hunspell -l -d de_DE_neu_frami,en_US -p ./.hunspellignore $filename; done | sort | uniq` - - echo $HUNSPELL_FINDINGS - - test "$HUNSPELL_FINDINGS" == "" - allow_failure: true - - - hunspell_appendix: - image: fastexitlane/hunspell:latest - stage: test - script: - - export HUNSPELL_FINDINGS=`for filename in appendix/*.tex; do hunspell -l -d de_DE_neu_frami,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` - - echo $HUNSPELL_FINDINGS - - test "$HUNSPELL_FINDINGS" == "" - allow_failure: true + + +hunspell_chapters: + image: fastexitlane/hunspell:latest + stage: test + script: + - export HUNSPELL_FINDINGS=`for filename in chapter/*.md; do hunspell -l -d de_DE_neu_frami,en_US -p ./.hunspellignore $filename; done | sort | uniq` + - echo $HUNSPELL_FINDINGS + - test "$HUNSPELL_FINDINGS" == "" + allow_failure: true + + +hunspell_appendix: + image: fastexitlane/hunspell:latest + stage: test + script: + - export HUNSPELL_FINDINGS=`for filename in appendix/*.tex; do hunspell -l -d de_DE_neu_frami,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` + - echo $HUNSPELL_FINDINGS + - test "$HUNSPELL_FINDINGS" == "" + allow_failure: true \ No newline at end of file diff --git a/latex..gitlab-ci.yml b/latex.gitlab-ci.yml similarity index 100% rename from latex..gitlab-ci.yml rename to latex.gitlab-ci.yml From e49f9c24ead53e1d22499353d5396508b958887d Mon Sep 17 00:00:00 2001 From: Dominik Becker Date: Sun, 24 May 2020 15:48:59 +0200 Subject: [PATCH 08/11] #42 fixed wrong dictionary name --- .gitlab-ci.yml | 4 ++-- latex.gitlab-ci.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6d337a5..68de987 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,7 +21,7 @@ hunspell_chapters: image: fastexitlane/hunspell:latest stage: test script: - - export HUNSPELL_FINDINGS=`for filename in chapter/*.md; do hunspell -l -d de_DE_neu_frami,en_US -p ./.hunspellignore $filename; done | sort | uniq` + - export HUNSPELL_FINDINGS=`for filename in chapter/*.md; do hunspell -l -d de_DE_frami,en_US -p ./.hunspellignore $filename; done | sort | uniq` - echo $HUNSPELL_FINDINGS - test "$HUNSPELL_FINDINGS" == "" allow_failure: true @@ -31,7 +31,7 @@ hunspell_appendix: image: fastexitlane/hunspell:latest stage: test script: - - export HUNSPELL_FINDINGS=`for filename in appendix/*.tex; do hunspell -l -d de_DE_neu_frami,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` + - export HUNSPELL_FINDINGS=`for filename in appendix/*.tex; do hunspell -l -d de_DE_frami,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` - echo $HUNSPELL_FINDINGS - test "$HUNSPELL_FINDINGS" == "" allow_failure: true diff --git a/latex.gitlab-ci.yml b/latex.gitlab-ci.yml index 8b55b00..72ed292 100644 --- a/latex.gitlab-ci.yml +++ b/latex.gitlab-ci.yml @@ -19,7 +19,7 @@ hunspell_chapters: image: fastexitlane/hunspell:latest stage: test script: - - export HUNSPELL_FINDINGS=`for filename in chapter/*.tex; do hunspell -l -d de_DE_neu_frami,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` + - export HUNSPELL_FINDINGS=`for filename in chapter/*.tex; do hunspell -l -d de_DE_frami,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` - echo $HUNSPELL_FINDINGS - test "$HUNSPELL_FINDINGS" == "" allow_failure: true @@ -29,7 +29,7 @@ hunspell_appendix: image: fastexitlane/hunspell:latest stage: test script: - - export HUNSPELL_FINDINGS=`for filename in appendix/*.tex; do hunspell -l -d de_DE_neu_frami,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` + - export HUNSPELL_FINDINGS=`for filename in appendix/*.tex; do hunspell -l -d de_DE_frami,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` - echo $HUNSPELL_FINDINGS - test "$HUNSPELL_FINDINGS" == "" allow_failure: true From a349aebc045f17700e8aa10b899d53e3d4623a2f Mon Sep 17 00:00:00 2001 From: Dominik Becker Date: Sun, 24 May 2020 15:51:14 +0200 Subject: [PATCH 09/11] #42 changed mwe for latex --- .gitlab-ci.yml | 11 ++++------- latex.gitlab-ci.yml => markdown.gitlab-ci.yml | 11 +++++++---- 2 files changed, 11 insertions(+), 11 deletions(-) rename latex.gitlab-ci.yml => markdown.gitlab-ci.yml (67%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 68de987..72ed292 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,9 +1,8 @@ stages: - - test - - build + - test + - build - -pandoc_latexmk: +latexmk: image: fastexitlane/pandoc-latex:latest stage: build artifacts: @@ -11,7 +10,6 @@ pandoc_latexmk: - main*.pdf expire_in: 2d script: - - pandoc --filter pandoc-crossref --filter pandoc-citeproc -M cref=true --top-level-division=chapter --bibliography library/library.bib --biblatex -o chapter/out.tex chapter/*.md - latexmk main.tex - ci_commit_sha_short=`git rev-parse --short $CI_COMMIT_SHA` - mv main.pdf main@$ci_commit_sha_short.pdf @@ -21,7 +19,7 @@ hunspell_chapters: image: fastexitlane/hunspell:latest stage: test script: - - export HUNSPELL_FINDINGS=`for filename in chapter/*.md; do hunspell -l -d de_DE_frami,en_US -p ./.hunspellignore $filename; done | sort | uniq` + - export HUNSPELL_FINDINGS=`for filename in chapter/*.tex; do hunspell -l -d de_DE_frami,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` - echo $HUNSPELL_FINDINGS - test "$HUNSPELL_FINDINGS" == "" allow_failure: true @@ -35,4 +33,3 @@ hunspell_appendix: - echo $HUNSPELL_FINDINGS - test "$HUNSPELL_FINDINGS" == "" allow_failure: true - \ No newline at end of file diff --git a/latex.gitlab-ci.yml b/markdown.gitlab-ci.yml similarity index 67% rename from latex.gitlab-ci.yml rename to markdown.gitlab-ci.yml index 72ed292..68de987 100644 --- a/latex.gitlab-ci.yml +++ b/markdown.gitlab-ci.yml @@ -1,8 +1,9 @@ stages: - - test - - build + - test + - build -latexmk: + +pandoc_latexmk: image: fastexitlane/pandoc-latex:latest stage: build artifacts: @@ -10,6 +11,7 @@ latexmk: - main*.pdf expire_in: 2d script: + - pandoc --filter pandoc-crossref --filter pandoc-citeproc -M cref=true --top-level-division=chapter --bibliography library/library.bib --biblatex -o chapter/out.tex chapter/*.md - latexmk main.tex - ci_commit_sha_short=`git rev-parse --short $CI_COMMIT_SHA` - mv main.pdf main@$ci_commit_sha_short.pdf @@ -19,7 +21,7 @@ hunspell_chapters: image: fastexitlane/hunspell:latest stage: test script: - - export HUNSPELL_FINDINGS=`for filename in chapter/*.tex; do hunspell -l -d de_DE_frami,en_US -p ./.hunspellignore -t $filename; done | sort | uniq` + - export HUNSPELL_FINDINGS=`for filename in chapter/*.md; do hunspell -l -d de_DE_frami,en_US -p ./.hunspellignore $filename; done | sort | uniq` - echo $HUNSPELL_FINDINGS - test "$HUNSPELL_FINDINGS" == "" allow_failure: true @@ -33,3 +35,4 @@ hunspell_appendix: - echo $HUNSPELL_FINDINGS - test "$HUNSPELL_FINDINGS" == "" allow_failure: true + \ No newline at end of file From 2186de1bd63e4624c99d03d77b95959d7287a6db Mon Sep 17 00:00:00 2001 From: Dominik Becker Date: Sun, 24 May 2020 15:54:53 +0200 Subject: [PATCH 10/11] #42 cleaned up MWe and added info to readme --- README.md | 3 ++- chapter/01_test.tex | 2 -- chapter/02_test.md | 2 -- .gitlab-ci.yml => latex.gitlab-ci.yml | 0 4 files changed, 2 insertions(+), 5 deletions(-) delete mode 100644 chapter/01_test.tex delete mode 100644 chapter/02_test.md rename .gitlab-ci.yml => latex.gitlab-ci.yml (100%) diff --git a/README.md b/README.md index d3e2af4..c60bf87 100644 --- a/README.md +++ b/README.md @@ -26,11 +26,12 @@ git remote remove boilerplate ``` In order to use the preconfigured continuous integration, make sure your GitLab CI meets the [Basic Requirements](https://gitlab.com/fastexitlane/latex-boilerplate/wikis/GitLab-CI#basic-requirements). +Then rename either `latex.gitlab-ci.yml` or `markdown.gitlab-ci.yml` to `.gitlab-ci`, depending on which workflow you want to use. If you know what you're doing, simply start adding your content files in `chapter/` as LaTex `\chapter`s and `\input` them into `main.tex`. If you do not know what you're doing or get into trouble - or want to use the **Markdown Workflow**, you may want to consider the [wiki](https://gitlab.com/fastexitlane/latex-boilerplate/wikis/home) ;-) ## Docker Images -If you need a docker image to build your documents, head over to [pandoc-latex](https://github.com/fastexitlane/pandoc-latex) ([DockerHub](https://hub.docker.com/r/fastexitlane/pandoc-latex)). +If you need a Docker image to build your documents, head over to [pandoc-latex](https://github.com/fastexitlane/pandoc-latex) ([DockerHub](https://hub.docker.com/r/fastexitlane/pandoc-latex)). Also, there's a prebuilt Docker image for spellchecking using Hunspell - head over to [docker-hunspell](https://github.com/fastexitlane/docker-hunspell). \ No newline at end of file diff --git a/chapter/01_test.tex b/chapter/01_test.tex deleted file mode 100644 index 799e9e1..0000000 --- a/chapter/01_test.tex +++ /dev/null @@ -1,2 +0,0 @@ -Hier könnte Ihre Werbuing stehen. -Da war ein Wort falsch. \ No newline at end of file diff --git a/chapter/02_test.md b/chapter/02_test.md deleted file mode 100644 index 799e9e1..0000000 --- a/chapter/02_test.md +++ /dev/null @@ -1,2 +0,0 @@ -Hier könnte Ihre Werbuing stehen. -Da war ein Wort falsch. \ No newline at end of file diff --git a/.gitlab-ci.yml b/latex.gitlab-ci.yml similarity index 100% rename from .gitlab-ci.yml rename to latex.gitlab-ci.yml From 1130026bab4e8457905752893611741fb3b5fff8 Mon Sep 17 00:00:00 2001 From: Dominik Becker Date: Sun, 24 May 2020 16:28:50 +0200 Subject: [PATCH 11/11] #41 updated docs [skip CI] --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c60bf87..9f090f9 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,9 @@ git pull boilerplate master git remote remove boilerplate ``` -In order to use the preconfigured continuous integration, make sure your GitLab CI meets the [Basic Requirements](https://gitlab.com/fastexitlane/latex-boilerplate/wikis/GitLab-CI#basic-requirements). -Then rename either `latex.gitlab-ci.yml` or `markdown.gitlab-ci.yml` to `.gitlab-ci`, depending on which workflow you want to use. +In order to use the preconfigured CI / CD pipeline for building PDFs, copy either `latex.gitlab-ci.yml` or `markdown.gitlab-ci.yml` to `.gitlab-ci`, depending on which workflow you want to use. +On GitLab.com, this will use Dockerized builds by default. +If you want to use the workflow on own hardware, make sure your GitLab CI meets the [Basic Requirements](https://gitlab.com/fastexitlane/latex-boilerplate/wikis/GitLab-CI#basic-requirements). If you know what you're doing, simply start adding your content files in `chapter/` as LaTex `\chapter`s and `\input` them into `main.tex`. If you do not know what you're doing or get into trouble - or want to use the **Markdown Workflow**, you may want to consider the [wiki](https://gitlab.com/fastexitlane/latex-boilerplate/wikis/home) ;-)