#!./venv/bin/python import sys,pypandoc,os,re,subprocess,yaml # data_yml_manadatory_keys=['fichier', 'date', 'type', 'auteur', 'titre'] def star_sec(l): it=iter(L) ret=[] passed= False for x in it: if "begin{document" in x: passed= True if passed and "section[" in x: s=x while "label" not in x: x=next(it) s=s+" "+x if not "}" in s: x=next(it) s=s+x k=s.find("]") r=(s[:k]+"}").replace("[","*{")+" " ret.append(r) ret.append("\n") else: ret.append(x) return ret # #----------------------------------------------------------------------- # Construire le titre à partir du fichier yml. #----------------------------------------------------------------------- with open("data.yml") as f: lt=yaml.safe_load(f) if not "statut" in lt.keys(): lt["statut"]=" " lt["type"]="Conférence" fich=lt["fichier"].strip() 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" #--------------------------------------------------------------------- exten=fich.split(".")[-1] if exten=="docx" or exten=="odt": futurTex= fich.replace(exten,"tex") else: s=f"\n{fich} : extension incorrecte" raise Exception(s) #répertoire pour les images 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"] L = pypandoc.convert_file(fich, 'tex', extra_args=extra_args).splitlines() #----------------------------------------------------------------------- # section -> section* rechsec= r"section[{\[]" rechsecc=re.compile(rechsec) # pour modifier le latex en changeant le chemin vers les images. if exten=="docx": rechgra=r"includegraphics\[.*\]{media.*}" repPath=("media",f"{images}/word/media") elif exten=="odt": rechgra=r"includegraphics\[.*\]{Pictures.*}" repPath=("Pictures",f"{images}/Pictures") rechgrac=re.compile(rechgra) 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) l=l.replace("\\begin{quote}","") l=l.replace("\\end{quote}","") f.write(l) f.write("\n") if "pagestyle" 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