diff --git a/Makefile b/Makefile index 222f524..273a77e 100644 --- a/Makefile +++ b/Makefile @@ -20,13 +20,19 @@ help: @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) # Default make weasyprint target has a bug so we have to call it manually on the generated index.html file +# Then we execute count_pdf_pages.py that will count the number of pages, and update print-theme.css +# Then we generate index.pdf again (with the correct number of pages in the footer) # After that, extract table of content data from the pdf and generate a .tex file # Then generate a toc.pdf from the .tex file # And put them together in a .pdf file +# Finally, we generate the final PDF by adding the bookmarks (for easier navigation in the PDF) # After all, clean up pdf: weasyprint + weasyprint build/weasyprint/index.html build/weasyprint/index.pdf -s source/css/print-theme.css + python3 sphinx-tools/count_pdf_pages.py weasyprint build/weasyprint/index.html build/weasyprint/index.pdf -s source/css/print-theme.css ./pdftoc-to-latex build/weasyprint/index.pdf > build/weasyprint/toc.tex - pdflatex -interaction nonstopmode -output-directory=build/weasyprint build/weasyprint/toc.tex - pdftk A=build/weasyprint/index.pdf B=build/weasyprint/toc.pdf cat A1 B A2-end output build/weasyprint/vheliotech.pdf - rm build/weasyprint/index.pdf build/weasyprint/toc.tex build/weasyprint/toc.pdf build/weasyprint/GuidedemontageVheliotech.pdf \ No newline at end of file + pdftk A=build/weasyprint/index.pdf B=build/weasyprint/toc.pdf cat A1 B A2-end output build/weasyprint/vheliotech-without-bookmarks.pdf + python3 sphinx-tools/update_pdf_bookmarks.py build/weasyprint/index.pdf build/weasyprint/vheliotech-without-bookmarks.pdf build/weasyprint/vheliotech.pdf + #rm build/weasyprint/index.pdf build/weasyprint/toc.tex build/weasyprint/toc.pdf build/weasyprint/GuidedemontageVheliotech.pdf diff --git a/source/010_documentation.md b/source/010_documentation.md index e48b2b4..9dc76e9 100644 --- a/source/010_documentation.md +++ b/source/010_documentation.md @@ -20,6 +20,8 @@ Nous avons utilisé [la version "link branch" de FreeCAD](https://github.com/rea La nomenclature rassemble des informations sur toutes les pièces du vhéliotech : le code de la pièce, son nom, des liens vers des fournisseurs, etc. Les codes indiqués dans le présent guide de montage font référence à la nomenclature. +
+ ```{image} img/codification_nomenclature.jpg :alt: Codification nomenclature :align: center diff --git a/source/040_assemblage_chassis.md b/source/040_assemblage_chassis.md index f7cd789..a40476f 100644 --- a/source/040_assemblage_chassis.md +++ b/source/040_assemblage_chassis.md @@ -53,6 +53,8 @@ Pour simplifier l’assemblage, des standards d’assemblage ont été définis ## Assemblage de 3 tubes + + - Vis M6 90 mm (QIN90) - Rondelle M6 (QIN12) pour la tête de vis et l'écrou M6 lorsqu'ils sont contre un tube aluminium. @@ -67,6 +69,8 @@ Pour simplifier l’assemblage, des standards d’assemblage ont été définis
@@ -332,8 +358,12 @@ La longueur totale de la chaine doit faire 378cm.
### Tendeur de chaîne
+
+
Le tendeur de chaîne permet d’ajuster la tension de la chaîne, et d’éviter ainsi de dérailler ou d’abîmer la transmission.
+
+

L’ensemble tendeur de chaîne est composé de :
diff --git a/source/080_installation_electricite.md b/source/080_installation_electricite.md
index f17c54d..5f24466 100644
--- a/source/080_installation_electricite.md
+++ b/source/080_installation_electricite.md
@@ -77,30 +77,45 @@ Les prises USB s’alimentent en 12V ; elles sont équipées à l’intérieur
Le support batterie CHO24 est prévu pour recevoir deux batteries 36V 14,5 Ah (ELE04) avec un boitier "silverfish". D'autres types de boitier de batterie peuvent convenir cependant les fixations ne seront peut-être pas adaptés.
-### Etape 1
+### Etape 1
+
Installer le connecteur de la batterie avec 4 vis M4 tête fraisé.
+
+
### Etape 2
+
Installer le rail de la batterie. Il est nécessaire de la couper à une longueur de 21,5cm.
+
+
### Etape 3
+
Installer un écrou M6x8 qui servira d'antivol.
La tête de l'écrou servira de buté empêchant la batterie de sortir du rail lorsque la clef sera en position LOCK (off et on).
+
+
### Etape 4
+
Proteger la connectique de la batterie de l'humidité et des vibrations en ajoutant du silicone dessus.
+
+
\ No newline at end of file
+
+
+
diff --git a/source/100_sieges.md b/source/100_sieges.md
index fe31188..8769fc2 100644
--- a/source/100_sieges.md
+++ b/source/100_sieges.md
@@ -102,11 +102,15 @@ Il est plus simple de serrer d’abord les cales.
Avec un tournevis plat (fin).
+
+
:::{admonition} Attention
:class: warning
Attention au filetage, si ça force essayer sur un autre trou.
:::
+
+

### Réglage des glissières
@@ -136,7 +140,7 @@ Attention à la subtilité en haut du dossier (évite que la toile de dossier gl
Les patrons de chaque toile sont fournis dans le dossier « Plans par article – Pour fabrication/Plans par article - Textiles ». La réalisation des toiles est d’une technicité simple concernant la couture. Seule particularité : les œillets doivent être bien posés (une machine professionnelle est préférable) pour êtres résistants.
-
+
## Sécurité
diff --git a/source/css/print-theme.css b/source/css/print-theme.css
index a635123..8e91e72 100644
--- a/source/css/print-theme.css
+++ b/source/css/print-theme.css
@@ -14,7 +14,7 @@
font-family: Lato, proxima-nova, Helvetica Neue, Arial, sans-serif;
}
@bottom-right {
- content: counter(page) "/81";
+ content: counter(page) "/82"; /* total number of pages is automatically updated by count_pdf_pages.py */
font-size: 9px;
font-family: Lato, proxima-nova, Helvetica Neue, Arial, sans-serif;
}
@@ -39,60 +39,17 @@ h2 {
break-before: always;
}
-#montage-de-la-direction {
- break-before: always;
-}
-
-#assemblage-de-la-structure-en-tubes {
- break-before: always;
-}
-
-#etape-3 {
- break-before: always;
-}
-
-#etape-4 {
- break-before: always;
-}
-
-#etape-5 {
- break-before: always;
-}
-
-#etape-7 {
- break-before: always;
-}
-
-#etape-9 {
- break-before: always;
-}
-
-#etape-11 {
- break-before: always;
-}
-
-#etape-13 {
- break-before: always;
-}
-
-#etape-15 {
- break-before: always;
+.avoid-break {
+ break-before: avoid;
+ break-after: avoid;
}
-#etape-17 {
- break-before: always;
-}
-
-#etape-18 {
- break-before: always;
+.avoid-break-next-block + ul {
+ break-inside: avoid;
}
-#etape-20 {
- break-before: always;
-}
-
-a[href^="#montage-de-la-direction"] {
- break-before: always;
+.admonition {
+ break-inside: avoid;
}
.resized {
diff --git a/sphinx-tools/count_pdf_pages.py b/sphinx-tools/count_pdf_pages.py
new file mode 100644
index 0000000..bc55c90
--- /dev/null
+++ b/sphinx-tools/count_pdf_pages.py
@@ -0,0 +1,24 @@
+import subprocess
+import re
+
+pdf_filename = 'build/weasyprint/index.pdf'
+css_filename = 'source/css/print-theme.css'
+additional_pages = 2
+
+# count pages in index.pdf
+pdfinfo = subprocess.run(['pdfinfo', pdf_filename], stdout=subprocess.PIPE)
+pages_match = re.search('\\nPages:\s+([0-9]+)\\n', pdfinfo.stdout.decode())
+num_pages = int(pages_match.group(1))
+print('index.pdf: ' + str(num_pages) + ' pages')
+
+num_pages = num_pages + additional_pages # account for table of content that will be added later
+
+# update the CSS file with the correct number of pages
+
+with open(css_filename) as css_file:
+ css = css_file.read()
+
+css = re.sub('content: counter\(page\) "/[0-9]+";', 'content: counter(page) "/'+str(num_pages)+'";', css)
+
+with open(css_filename, 'w') as css_file:
+ css_file.write(css)
diff --git a/sphinx-tools/update_pdf_bookmarks.py b/sphinx-tools/update_pdf_bookmarks.py
new file mode 100644
index 0000000..3465a3a
--- /dev/null
+++ b/sphinx-tools/update_pdf_bookmarks.py
@@ -0,0 +1,28 @@
+import sys
+import subprocess
+import re
+
+extract_bookmarks_from = sys.argv[1]
+source_pdf_filename = sys.argv[2]
+output_filename = sys.argv[3]
+
+bookmarks_filename = extract_bookmarks_from.replace('.pdf', '.txt')
+assert(bookmarks_filename != extract_bookmarks_from)
+
+# extract PDF metadata into a text file
+subprocess.run(['pdftk', extract_bookmarks_from, 'dump_data', 'output', bookmarks_filename])
+
+with open(bookmarks_filename) as bookmarks_file:
+ metadata = bookmarks_file.read()
+
+# Offset page numbers
+def replaceBookmarkPageNumber(match):
+ initial_page = int(match.group(1))
+ return 'BookmarkPageNumber: ' + str(initial_page + 2)
+metadata = re.sub('BookmarkPageNumber:\s+([0-9]+)', replaceBookmarkPageNumber, metadata)
+
+with open(bookmarks_filename, 'w') as bookmarks_file:
+ bookmarks_file.write(metadata)
+
+# generate the output PDF
+subprocess.run(['pdftk', source_pdf_filename, 'update_info', bookmarks_filename, 'output', output_filename])