From 459ad40a7832c39ddea3eb9fd6e92451d8c31049 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Thu, 16 Jan 2020 14:50:32 +0100
Subject: [PATCH] Work on #348 - generate PDF doc via pandoc / LaTeX

---
 docs/latex/cassiopee_doc_en.tex |  83 +++++++++++++++++
 docs/latex/cassiopee_doc_fr.tex |  83 +++++++++++++++++
 docs/latex/logo_pole.png        | Bin 0 -> 32461 bytes
 docs/latex/logos.tex            |  14 +++
 mkdocs2pdf.py                   | 153 ++++++++++++++++++++++++++------
 5 files changed, 304 insertions(+), 29 deletions(-)
 create mode 100644 docs/latex/cassiopee_doc_en.tex
 create mode 100644 docs/latex/cassiopee_doc_fr.tex
 create mode 100644 docs/latex/logo_pole.png
 create mode 100644 docs/latex/logos.tex

diff --git a/docs/latex/cassiopee_doc_en.tex b/docs/latex/cassiopee_doc_en.tex
new file mode 100644
index 000000000..2fad7dd95
--- /dev/null
+++ b/docs/latex/cassiopee_doc_en.tex
@@ -0,0 +1,83 @@
+%*******************************************************************************
+% @file cassiopee_doc_en.tex
+% Modèle de documentation en anglais de Cassiopée, basé sur le modèle de rapport pour INRAE.
+% À utiliser avec le modèle https://gitlab.irstea.fr/david.dorchies/latex_models
+% @author David Dorchies, Mathias Chouet (INRAE Montpellier)
+% @date Jan 2020
+%*******************************************************************************
+\documentclass[12pt,a4paper,titlepage,twoside]{report}
+
+
+% Insertion des différents préambules au document
+\input{rapport/english/preambule_rapport_english}
+\input{rapport_inrae/preambule_inrae}
+
+
+%*******************************************************************************
+%Données de titre et d'auteur pour la page de garde, les entêtes et pieds de page
+%*******************************************************************************
+% Le titre doit être relativement court mais assez explicite
+\newcommand{\service}{UMR G-EAU}
+\newcommand{\titre}{Cassiopée 4 software}
+\newcommand{\sousTitre}{User documentation}
+%Statut du document [rapport final, rapport intermédiaire]
+% auteur intellectuel, rédacteur du document, il peut y avoir plusieurs auteurs ; chaque auteur est renseigné sous la forme « Prénom NOM »
+\newcommand{\auteur}{David DORCHIES}
+% date de validation du document (qui entraine sa diffusion)]
+\newcommand{\dateValidation}{\today}
+% Site INRAE
+\newcommand{\site}{
+    UMR G-EAU
+    
+    INRAE Montpellier
+}
+% Adresse du site
+\newcommand{\adresse}{361 rue J-F Breton - BP 5095\\34196 Montpellier cedex 5}
+% Téléphone et télécopie
+\newcommand{\telephone}{tél. : +33(0)4670400}
+% Sites internet
+\newcommand{\website}{
+    \url{www.g-eau.fr} \\
+    \url{www.inrae.fr}    
+}
+
+
+%*******************************************************************************
+
+
+\begin{document}
+%Supprime les veuves et orphelines
+\widowpenalty=10000
+\clubpenalty=10000
+\raggedbottom 
+
+% Integre la page de garde
+%\input{title.tex}
+\input{rapport_inrae/cover_inrae}
+\input{rapport/headfoot_content}
+
+\cleardoublepage
+
+% Table des matières
+\cleardoublepage
+\tableofcontents
+
+
+%*******************************************************************************
+% Contenu de la documentation en anglais, généré par pandoc via mkdocs2pdf.py
+%*******************************************************************************
+\chapter{Documentation}
+\input{cassiopee_doc_contents_en}
+
+
+\chapter{List of figures}
+\listoffigures
+\listoftables
+
+
+% 4ème de couverture
+\cleartobackcover
+\input{rapport_inrae/backcover_inrae.tex}
+
+
+\end{document}
diff --git a/docs/latex/cassiopee_doc_fr.tex b/docs/latex/cassiopee_doc_fr.tex
new file mode 100644
index 000000000..a34975a57
--- /dev/null
+++ b/docs/latex/cassiopee_doc_fr.tex
@@ -0,0 +1,83 @@
+%*******************************************************************************
+% @file cassiopee_doc_fr.tex
+% Modèle de documentation en français de Cassiopée, basé sur le modèle de rapport pour INRAE.
+% À utiliser avec le modèle https://gitlab.irstea.fr/david.dorchies/latex_models
+% @author David Dorchies, Mathias Chouet (INRAE Montpellier)
+% @date Jan 2020
+%*******************************************************************************
+\documentclass[12pt,a4paper,titlepage,twoside]{report}
+
+
+% Insertion des différents préambules au document
+\input{rapport/francais/preambule_rapport_francais}
+\input{rapport_inrae/preambule_inrae}
+
+
+%*******************************************************************************
+%Données de titre et d'auteur pour la page de garde, les entêtes et pieds de page
+%*******************************************************************************
+% Le titre doit être relativement court mais assez explicite
+\newcommand{\service}{UMR G-EAU}
+\newcommand{\titre}{Logiciel Cassiopée 4}
+\newcommand{\sousTitre}{Documentation utilisateur}
+%Statut du document [rapport final, rapport intermédiaire]
+% auteur intellectuel, rédacteur du document, il peut y avoir plusieurs auteurs ; chaque auteur est renseigné sous la forme « Prénom NOM »
+\newcommand{\auteur}{David DORCHIES}
+% date de validation du document (qui entraine sa diffusion)]
+\newcommand{\dateValidation}{\today}
+% Site INRAE
+\newcommand{\site}{
+    UMR G-EAU
+    
+    INRAE Montpellier
+}
+% Adresse du site
+\newcommand{\adresse}{361 rue J-F Breton - BP 5095\\34196 Montpellier cedex 5}
+% Téléphone et télécopie
+\newcommand{\telephone}{tél. : +33(0)4670400}
+% Sites internet
+\newcommand{\website}{
+    \url{www.g-eau.fr} \\
+    \url{www.inrae.fr}    
+}
+
+
+%*******************************************************************************
+
+
+\begin{document}
+%Supprime les veuves et orphelines
+\widowpenalty=10000
+\clubpenalty=10000
+\raggedbottom 
+
+% Integre la page de garde
+%\input{title.tex}
+\input{rapport_inrae/cover_inrae}
+\input{rapport/headfoot_content}
+
+\cleardoublepage
+
+% Table des matières
+\cleardoublepage
+\tableofcontents
+
+
+%*******************************************************************************
+% Contenu de la documentation en français, généré par pandoc via mkdocs2pdf.py
+%*******************************************************************************
+\chapter{Documentation}
+\input{cassiopee_doc_contents_fr}
+
+
+\chapter{Table des illustrations}
+\listoffigures
+\listoftables
+
+
+% 4ème de couverture
+\cleartobackcover
+\input{rapport_inrae/backcover_inrae.tex}
+
+
+\end{document}
diff --git a/docs/latex/logo_pole.png b/docs/latex/logo_pole.png
new file mode 100644
index 0000000000000000000000000000000000000000..8c1038067c2e83d700a7161574829742dd2e321b
GIT binary patch
literal 32461
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

literal 0
HcmV?d00001

diff --git a/docs/latex/logos.tex b/docs/latex/logos.tex
new file mode 100644
index 000000000..7e5bc3068
--- /dev/null
+++ b/docs/latex/logos.tex
@@ -0,0 +1,14 @@
+% Example of logos layout for page "cover_inrae.tex"
+
+\hfill
+\includegraphics[width=8cm]{logo_pole.png}
+
+\vspace{3mm}
+
+\hfill
+\includegraphics[width=4cm]{rapport_inrae/logo_inrae_couv_haut.png}
+
+\vspace{3mm}
+
+\hfill
+\includegraphics[width=4cm]{rapport_inrae/logo_geau.png}
diff --git a/mkdocs2pdf.py b/mkdocs2pdf.py
index d25414e10..cc27bab22 100644
--- a/mkdocs2pdf.py
+++ b/mkdocs2pdf.py
@@ -14,17 +14,32 @@
 # - python3 ./mkdocs2pdf.py
 #
 
-outputDir = 'docs/fr/pdf'
-filename = 'cassiopee_docs-fr'
+import os
+import sys
+import yaml
+import re
+import shutil
 
+baseDir = os.getcwd();
+
+buildDir = os.path.join(baseDir, 'docs/pdf_build')
+outputDir = os.path.join(baseDir, 'src/assets/docs/pdf')
+
+latexModelDir = 'latex_models'
+modelDir = os.path.join(buildDir, latexModelDir)
+
+mergedDocFilenamePrefix = 'cassiopee_doc_contents_'
+filenamePrefix = 'cassiopee_doc_'
+
+latexModelRepository = 'https://gitlab.irstea.fr/david.dorchies/latex_models.git'
+
+# Reads an MkDocs configuration file
 def readConfig(sYAML):
     f = open(sYAML, 'r')
     with f:
         try:
-            import yaml
             dMkdocsYaml = yaml.load(f, Loader=yaml.SafeLoader)
         except yaml.YAMLError as e:
-            import sys
             sys.exit("ERROR on YAML loading {}: {}".format(sYAML, str(e)))
     return dMkdocsYaml
 
@@ -32,7 +47,6 @@ def getMdHeader(title, level):
     return "#" * level + " " + title + "\n"
 
 def shiftMdHeaders(mdContent, level):
-    import re
 
     if level == 0:
         return mdContent
@@ -44,20 +58,21 @@ def shiftMdHeaders(mdContent, level):
                 lMd[i] = ("#" * level) + item
     return "\n".join(lMd)
 
-def explore(docs_dir, nav, output = '', level = 0):
+# Browses MkDocs configuration file and merges .md files
+def exploreAndMerge(docs_dir, nav, output = '', level = 0):
     """
     @param docs_dir path to the mkdocs content files
-    @param dictionnary with the structure to explore
+    @param nav dictionnary with the structure to explore
     @param output markdown files content already merged
     """
-    import os, re
     if type(nav) is str:
         nav = [nav]
     for d in nav:
         if type(d) is str:
             filepath = os.path.join(docs_dir, d)
             f = open(filepath, 'r')
-            path = os.path.join('..', os.path.dirname(filepath))
+            # Triple "../" because file will be compiled from pdf_build/latex_models
+            path = os.path.join('../../..', os.path.dirname(filepath))
             s = f.read() + "\n"
             # Modification of image and links paths
             s = re.sub(r'(\!\[.+\]\()(.+)(\))', r'\1'+path+r'/\2\3', s)
@@ -70,31 +85,20 @@ def explore(docs_dir, nav, output = '', level = 0):
             for key, value in d.items():
                 if type(value) is list:
                     output += "\n" + getMdHeader(key, level) + "\n"
-                output = explore(docs_dir, value, output, level)
+                output = exploreAndMerge(docs_dir, value, output, level)
             level -= 1
     return output
 
-
-if __name__ == '__main__':
-
-    # Read config
-    dMkdocsYaml = readConfig('mkdocs.yml')
-    # Create string with merged MarkDown
-    s = explore(dMkdocsYaml['docs_dir'], dMkdocsYaml['nav'])
-    # Save the md file
-    import os
-    os.makedirs(outputDir, exist_ok=True)
-    OutputPath = os.path.join(outputDir, filename)
-    with open('{}.md'.format(OutputPath), 'w') as f:
-        f.writelines(s)
-    # Convert to tex format
+# Creates a filePath.tex LaTeX contents file based on filePath.md
+def convertMdToTex(filePath):
+    # Convert .md to .tex
     os.system(
-        'pandoc {0}.md -f markdown -t latex -s -o {0}.tex'.format(OutputPath)
+        'pandoc {0}.md -f markdown -t latex -s -o {0}.tex'.format(filePath)
     )
     # Remove header of tex file
     bContent = False
     ls = []
-    with open('{}.tex'.format(OutputPath), 'r') as f:
+    with open('{}.tex'.format(filePath), 'r') as f:
         for line in f:
             if line.strip() == '\\end{document}':
                 bContent = False
@@ -106,9 +110,100 @@ if __name__ == '__main__':
     for i, line in enumerate(ls):
         ls[i] = line.replace('\\includegraphics', '\\includegraphics[max size={\\textwidth}{0.9\\textheight}]')
 
-    with open('{}.tex'.format(OutputPath), 'w') as f:
+    with open('{}.tex'.format(filePath), 'w') as f:
         f.writelines(ls)
 
+def getLatexModel():
+    # Clone Git repository
+    os.chdir(buildDir)
+    os.system(
+        'git clone {} {}'.format(latexModelRepository, latexModelDir)
+    )
+    # back to original working drectory
+    os.chdir(baseDir)
+
+# Inject generated merged documentation and necessary resources (template, logos…)
+# into LaTeX models directory by symlinking them
+def injectContentIntoModel(mergedDocFilenameTex, lang):
+    """
+    @param mergedDocFilenameTex filename of the generated LaTeX merged doc, with its .tex extension, without directory
+    @param lang language; used to inject content in the right template
+    """
+    # Symlink necessary resources
+    os.chdir(modelDir)
+    relPathToMergedTexDoc = os.path.join('..', mergedDocFilenameTex)
+    os.system(
+        'ln -s {} .'.format(relPathToMergedTexDoc)
+    )
+    latexTemplate = 'cassiopee_doc_' + lang + '.tex'
+    relPathToLatexTemplate = os.path.join('../../latex', latexTemplate)
+    os.system(
+        'ln -s {} .'.format(relPathToLatexTemplate)
+    )
+    os.system(
+        'ln -s ../../latex/logo_pole.png .'
+    )
+    os.system(
+        'rm rapport_inrae/logos.tex'
+    )
+    os.system(
+        'ln -s ../../../latex/logos.tex rapport_inrae/'
+    )
+    # back to original working drectory
+    os.chdir(baseDir)
+
+# Build a PDF file from the LaTeX source
+def buildPDF(lang):
+    # Compile LaTeX source
+    os.chdir(modelDir)
+    sourceTexFile = 'cassiopee_doc_' + lang + '.tex'
+    outputPdfFile = 'cassiopee_doc_' + lang + '.pdf'
+    os.system(
+        'latexmk -f -pdf -interaction=nonstopmode {} > /dev/null 2>&1'.format(sourceTexFile)
+    )
+    # copy generated PDF to release directory
+    shutil.copy(outputPdfFile, outputDir)
+    # back to original working drectory
+    os.chdir(baseDir)
+
+# Creates the PDF documentation file for the given language
+def buildDocForLang(lang):
+
+    # Prepare temporary build directory
+    os.makedirs(buildDir, exist_ok=True)
+    # Prepare output directory
+    os.makedirs(outputDir, exist_ok=True)
+
+    # Read config
+    yamlPath = 'mkdocs-' + lang + '.yml'
+    print("yamlPath: " + yamlPath)
+    dMkdocsYaml = readConfig(yamlPath)
+
+    # Create string with merged MarkDown
+    s = exploreAndMerge(dMkdocsYaml['docs_dir'], dMkdocsYaml['nav'])
+    # Save the merged .md file
+    mergedDocFilename = mergedDocFilenamePrefix + lang
+    print("filename: " + mergedDocFilename)
+    mergedDocOutputPath = os.path.join(buildDir, mergedDocFilename)
+    with open('{}.md'.format(mergedDocOutputPath), 'w') as f:
+        f.writelines(s)
+
+    # Convert to tex format
+    convertMdToTex(mergedDocOutputPath)
+
+    # Get INRAE report LaTeX model and inject merged content inside
+    getLatexModel()
+    injectContentIntoModel(mergedDocFilename + '.tex', lang)
+
+    # Build PDF from LaTeX source
+    buildPDF(lang)
+
+    # Clean build dir
+    shutil.rmtree(buildDir)
+
+
+if __name__ == '__main__':
 
-# latexmk -f -pdf -interaction=nonstopmode rapport_inrae.tex
-# latexmk -c
\ No newline at end of file
+    for l in ['fr', 'en']:
+        print('building PDF doc for language "{}"'.format(l))
+        buildDocForLang(l)
-- 
GitLab