diff --git a/examples/1protationsymmetry/README.md b/examples/1protationsymmetry/README.md
index 1af03e8792ec03057682b0bc8c67247d99986042..9be62df5e5407d3e6e2f364325104302124b10ff 100644
--- a/examples/1protationsymmetry/README.md
+++ b/examples/1protationsymmetry/README.md
@@ -107,4 +107,4 @@ volumes and control volume face areas for the mid-point integration rule.
 ## Part 3: Post-processing with ParaView
 
 | [:arrow_right: Click to continue with part 3 of the documentation](doc/paraview.md) |
-|---:|
\ No newline at end of file
+|---:|
diff --git a/examples/1ptracer/README.md b/examples/1ptracer/README.md
index 1c355ed460cd177518525479b138e06c78af8d20..6bf2726c92e4037c5df9f7887040bd0aecf92c30 100644
--- a/examples/1ptracer/README.md
+++ b/examples/1ptracer/README.md
@@ -130,4 +130,4 @@ simulations are solved sequentially in the main file (`main.cc`).
 ## Part 3: Main program flow
 
 | [:arrow_right: Click to continue with part 3 of the documentation](doc/main.md) |
-|---:|
\ No newline at end of file
+|---:|
diff --git a/examples/2pinfiltration/README.md b/examples/2pinfiltration/README.md
index 371f6944d092b6fcf961ad81fedfa8751b0ab48d..47ad340103bef92aed3cf945d1dc341ea12460ab 100644
--- a/examples/2pinfiltration/README.md
+++ b/examples/2pinfiltration/README.md
@@ -83,4 +83,4 @@ In the documentations behind the links provided in the following, you will find
 ## Part 2: Main program flow
 
 | [:arrow_right: Click to continue with part 2 of the documentation](doc/main.md) |
-|---:|
\ No newline at end of file
+|---:|
diff --git a/examples/biomineralization/README.md b/examples/biomineralization/README.md
index 42529a0986cf529bd4e3932433ecc7e458197fdb..f631d662614506500327ab71256ec5e93224ed85 100644
--- a/examples/biomineralization/README.md
+++ b/examples/biomineralization/README.md
@@ -187,4 +187,4 @@ especially the multi-component solidsystems and variable solid volume fractions.
 ## Part 5: Specific solid material files
 
 | [:arrow_right: Click to continue with part 5 of the documentation](doc/solidmaterial.md) |
-|---:|
\ No newline at end of file
+|---:|
diff --git a/examples/generate_example_docs.py b/examples/generate_example_docs.py
index 22b874fe1b388e0a4f9c17499445b5f9f8fc003e..6547851ebb046c1643b913388b93b1dc4c4122f5 100755
--- a/examples/generate_example_docs.py
+++ b/examples/generate_example_docs.py
@@ -36,7 +36,7 @@ class Navigation:
         makeEntry = lambda i,l: "| [:arrow_right: Click to continue with part {} of the documentation]({}) |\n|---:|\n\n".format(i,l)
         self.snippets[mainpage]["footer"] = "".join(
             [ makeHead(title) + makeEntry(index+1, self.getRelPath(mainpage, subpage)) for index, (subpage, title) in enumerate(zip(subpages, subtitles))]
-        ).rstrip("\n")
+        ).rstrip() + '\n' # end file with a single endline character
 
         # then the navigation snippets for the subpages
         pagetypes = ["mid" for i in range(len(subpages))]
diff --git a/examples/shallowwaterfriction/README.md b/examples/shallowwaterfriction/README.md
index 29cb808d13e4dbfdb03cca74e3e1ccf26b8c443f..2b98d77446b541d14c8e02fce6da44ceee21bbe2 100644
--- a/examples/shallowwaterfriction/README.md
+++ b/examples/shallowwaterfriction/README.md
@@ -149,4 +149,4 @@ is applied.
 ## Part 2: Main program flow
 
 | [:arrow_right: Click to continue with part 2 of the documentation](doc/main.md) |
-|---:|
\ No newline at end of file
+|---:|