tout.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #!/home/moi/ProtoMemoires/venv/bin/python
  2. import glob
  3. #-------------------------------------------
  4. def addpath(x,ajout):
  5. # Pour transformer les chemins vers les images
  6. if "includegraphics" in x:
  7. return x.replace("{",ajout)
  8. else:
  9. return x
  10. #
  11. # Récupérer la liste des textes à introduire
  12. #
  13. with open("all_texts") as f:
  14. lf= [x for x in f.readlines() if x[0] != "#"]
  15. # faire la liste des *.bib (éventuels):
  16. forbiblatex={}
  17. for f in lf:
  18. forbiblatex[f]=",".join([x for x
  19. in glob.glob(f"../{f.split("/")[0]}/*.bib")])
  20. allbibfiles=[forbiblatex[k] for k in forbiblatex.keys() if forbiblatex[k]!=""]
  21. print("Fichiers bib",allbibfiles,"\n")
  22. #
  23. # Récuperer le template
  24. #
  25. templat= "../tpl.tex"
  26. #
  27. with open(templat) as f:
  28. Ltmpl=f.readlines()
  29. #
  30. # ne garder du template que le début
  31. Lall=[]
  32. for l in Ltmpl:
  33. if "%@@debut" in l:
  34. break
  35. else:
  36. if "addbibresource" in l:
  37. # ajouter les chemins vers les fichires bib
  38. for x in allbibfiles:
  39. Lall.append(f"\\addbibresource{{{x}}}\n")
  40. Lall.append(l)
  41. #
  42. # parcourir les fichiers à assembler:
  43. #
  44. for l in lf:
  45. lok="../"+l.replace("\n","")
  46. print(lok)
  47. with open(lok) as g:
  48. LL=g.readlines()
  49. # insérer ce qui entre %@@debut et "%@@fin":
  50. start= False
  51. Z= []
  52. for x in LL:
  53. if "@@debut" in x:
  54. start= True
  55. print("--> start")
  56. if "@@fin" in x:
  57. break
  58. if start:
  59. Z.append(x)
  60. print("--> nl:",len(Z))
  61. # graphiques: modifier les chemins:
  62. ajout="{../"+l.split("/")[0]+"/"
  63. Lall+=[addpath(x,ajout) for x in Z if not "newcounter" in x]
  64. Lall.append("\\vfill\n\\eject\n")
  65. #
  66. # sauver le resultat....
  67. with open("final.tex","w") as f:
  68. for x in Lall[:-1]:
  69. f.write(x)
  70. #-----------------------------------------------------------
  71. f.write("\\tableofcontents\n")
  72. f.write("\\end{document}\n")