Explorar el Código

petites modifs

Thierry Dumont hace 1 mes
padre
commit
1a4fe82332
Se han modificado 4 ficheros con 59 adiciones y 32 borrados
  1. 18 17
      All/tout.py
  2. 3 1
      data.yml
  3. 27 11
      extr.py
  4. 11 3
      tpl.tex

+ 18 - 17
All/tout.py

@@ -1,15 +1,4 @@
-def getlines(L,bound1,bound2):
-    ret=[]
-    start=False
-    for l in L:
-        if start:
-            if bound2 in l:
-                return ret
-            else:
-                ret.append(l)
-        else:
-            start = bound1 in l
-        
+
 #-------------------------------------------            
 def addpath(x,ajout):
     if "includegraphics" in x:
@@ -18,16 +7,19 @@ def addpath(x,ajout):
         return x
 #
 templat= "../tpl.tex"
-# Récupérer le liste des textes à introduire
+#
+# Récupérer la liste des textes à introduire
+#
 with open("all_texts") as f:
     lf= f.readlines()
+#
 #on récupère le template
 with open(templat) as f:
     Ltmpl=f.readlines()
-
+# 
 Lall=[]
 for l in Ltmpl:
-    if "body" in l:
+    if "%@@debut" in l:
         break
     else:
         Lall.append(l)
@@ -35,13 +27,22 @@ for l in Ltmpl:
 bound1= "pagestyle"
 bound2= "tableofcontents"
 
+
 for l in lf:
     lok="../"+l.replace("\n","")
     print(lok)
     with open(lok) as g:
         LL=g.readlines()
-    Z= getlines(LL,bound1,bound2)
-
+    #Z= getlines(LL,"debut","fin")
+    start= False
+    Z= []
+    for x in LL:
+        if "%@@debut" in x:
+            start= True
+        if "%@@fin" in x:
+            break
+        if start:
+            Z.append(x)
     # graphiques
     ajout="{../"+l.split("/")[0]+"/"
     

+ 3 - 1
data.yml

@@ -1,8 +1,10 @@
+# Exemple de fichier clé -> valeur 
 fichier: dumont.odt
 date: Mardi 32 Mai 2021
 auteur: Thierry Dumont
 # statut est le seul champ facultatif
-# s'il est absent, on peut omettre type, qui sera toujours Communication
+# s'il est absent, on peut omettre le champ type, qui alors
+# sera toujours Communication
 statut: membre titulaire
 type: Communication
 #

+ 27 - 11
extr.py

@@ -1,8 +1,10 @@
 #!./venv/bin/python
 import sys,pypandoc,os,re,subprocess,yaml
 #
-data_yml_manadatory_keys=['fichier', 'date', 'type', 'auteur', 'titre']
+data_yml_mandatory_keys=['fichier', 'date',  'auteur', 'titre']
 def star_sec(l):
+    # \section est transformée en \section* et on ne garde comme argument
+    # que ce qui est nécessaire.
     it=iter(L)
     ret=[]
     passed= False
@@ -32,17 +34,28 @@ def star_sec(l):
 #-----------------------------------------------------------------------
 with open("data.yml") as f:
     lt=yaml.safe_load(f)
-
-if not "statut" in  lt.keys():
+for x in data_yml_mandatory_keys: #vérifier la présence des clés obligatoires
+    if not x in lt.keys():
+        raise Exception(f"\n\n Il manque {x} dans data.yml\n\n")
+# si statut est défini, type dit l'être aussi:
+if "statut" in lt.keys():
+    if "type" not in lt.keys():
+        raise Exception(f"\n\n statut est défini, mais pas type\n\n")
+else: # si statut n'est pas défini, on le définit  à "" et type à "Conférence".
     lt["statut"]=" "
     lt["type"]="Conférence"
+#
+# le fichier (docx, odt) qu'on va traiter:
+#
 fich=lt["fichier"].strip()
+#
+# fabriquer le titre à partir des données yml
+#
 titre_elements="}{".join([lt[x].replace("\n","") for x in lt.keys()
                           if x!="fichier"])
 le_titre="\\titre{"+titre_elements+"}"+"\n"
-print(le_titre)
 #--------------------------------------------------------------------
-template="../tpl.tex"
+template="../tpl.tex" # le template
 #---------------------------------------------------------------------
 exten=fich.split(".")[-1]
 
@@ -57,9 +70,9 @@ images= fich.split(".")[0]+"-media"
 print("Répertoire des images : ",images)
 if not os.path.isdir(images):
     os.mkdir(images)
-
+#
 # conversion en latex
-#extra_args= ["-s",f"--extract-media={images}"]
+#
 extra_args= ["-s",f"--template={template}",f"--extract-media={images}"]
 #extra_args= ["-s",f"--template={template}",f"--extract-media={images}",
 #             f"--lof=true"]
@@ -81,16 +94,18 @@ elif exten=="odt":
     repPath=("Pictures",f"{images}/Pictures")
     
 rechgrac=re.compile(rechgra)
-
+#
+# On crée le fichier tex
+#
 with open(futurTex,"w") as f:
     L1=star_sec(L)
-
     
     rp0,rp1= repPath
     for l in L1:
         
         while (q:=rechgrac.search(l)) != None:
             l=l.replace(rp0,rp1)
+        # on supprime les "quote"
         l=l.replace("\\begin{quote}","")
         l=l.replace("\\end{quote}","")
         
@@ -98,12 +113,13 @@ with open(futurTex,"w") as f:
         f.write("\n")
 
         
-        if "pagestyle" in l:
+        if "debut" in l:
             f.write(le_titre)
-
+#
 #---fin d'éciture du fichier tex
 #
 # lualatex, 2 fois:
+#
 for i in {1,2}:
     subprocess.run(["/usr/bin/lualatex", futurTex])
 #--- fin

+ 11 - 3
tpl.tex

@@ -51,7 +51,9 @@ total={130mm,212mm},
 \usepackage{soul}
 \usepackage{multirow}
 \usepackage{placeins}
-
+%
+\usepackage[natbib,style=authoryear]{biblatex}
+%
 \providecommand{\tightlist}{%
 	   \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
 
@@ -71,7 +73,8 @@ total={130mm,212mm},
   %{\raggedright\sl\bfseries #1}%
   {\raggedright{\textsl{\bfseries\large \capitalisewords{#1}}}}\\%
   {\raggedright{\bfseries\large \capitalisewords{{#2}} de #3,} \textsl{#4}}%
-   \addcontentsline{toc}{section}{{\bfseries #1.} \capitalisewords{#2} par #3, #4.\\#5}%
+   \addcontentsline{toc}{section}{{\bfseries #1.} \capitalisewords{#2}
+     par #3, #4.\\\textsl{#5}}%
   \vspace*{24pt}%
   \begin{center}{\Large\bfseries #5}\end{center}%
   \vspace*{5mm}%
@@ -91,11 +94,16 @@ total={130mm,212mm},
 
 %
 \begin{document}%\layout
+
 \pagestyle{plain}
+
 \newcounter{none}
+%@@debut
 % \maketitle
 
 
-$body$
+  $body$
+  
+%@@fin
 \tableofcontents
 \end{document}