tout.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #!/home/moi/ProtoMemoires/venv/bin/python
  2. import glob,subprocess
  3. #-------------------------------------------
  4. def addpath(x,ajout):
  5. # Pour transformer les chemins vers les images
  6. #if "includegraphics" in x:
  7. if "input" in x:
  8. return x.replace("{",ajout)
  9. else:
  10. return x
  11. #
  12. # Récupérer la liste des textes à introduire
  13. #
  14. with open("all_texts") as f:
  15. lf0= f.readlines()
  16. lf=[]
  17. for x in lf0:
  18. if x[0]!= "#":
  19. xs=x.split()
  20. if len(xs) ==1:
  21. lf.append((xs[0],))
  22. else:
  23. lf.append((xs[0],xs[1]))
  24. # faire la liste des *.bib (éventuels):
  25. forbiblatex={}
  26. for f in lf:
  27. forbiblatex[f]=",".join([x for x
  28. in glob.glob(f"../Sources/Courante/{f[0].split("/")[0]}/*.bib")])
  29. allbibfiles=[forbiblatex[k] for k in forbiblatex.keys() if forbiblatex[k]!=""]
  30. print("\nFichiers bib",allbibfiles,"\n")
  31. #
  32. # Récuperer le template
  33. #
  34. templat= "../tpl.tex"
  35. #
  36. with open(templat) as f:
  37. Ltmpl=f.readlines()
  38. #
  39. # ne garder du template que le début
  40. # en ajoutant les ressouces pour biblatex
  41. #
  42. Lall=[]
  43. for l in Ltmpl:
  44. if "%@@debut" in l:
  45. break
  46. else:
  47. if "addbibresource" in l:
  48. # ajouter les chemins vers les fichiers bib
  49. #
  50. for x in allbibfiles:
  51. Lall.append(f"\\addbibresource{{{x}}}\n")
  52. T=[f'{{../Sources/Courante/{x[0].split("/")[0]}}}' for x in lf]
  53. T=f"\\graphicspath{{ {''.join(T)} }}\n"
  54. Lall.append(T)
  55. Lall.append(l)
  56. #
  57. # parcourir les fichiers à assembler:
  58. #
  59. for l in lf:
  60. do_eject= len(l) == 1 or (len(l)>1 and not "noeject" in l[1])
  61. do_vfill= len(l) == 1 or (len(l)>1 and not "novfill" in l[1])
  62. lok="../Sources/Courante/"+l[0].replace("\n","")
  63. print("On traite :",lok)
  64. with open(lok) as g:
  65. LL=g.readlines()
  66. # insérer ce qui entre %@@debut et "%@@fin":
  67. start= False
  68. Z= []
  69. for x in LL:
  70. if "@@debut" in x:
  71. start= True
  72. print("--> start")
  73. if start:
  74. Z.append(x)
  75. if "@@fin" in x:
  76. break
  77. print("--> nl:",len(Z))
  78. # graphiques: modifier les chemins:
  79. ajout="{../Sources/Courante/"+l[0].split("/")[0]+"/"
  80. #ajout=""
  81. Lall+=[addpath(x,ajout) for x in Z if not "newcounter" in x]
  82. if do_vfill:
  83. #Lall.append("\\vfill\n")
  84. pass
  85. if do_eject:
  86. #Lall.append("\\eject\n")
  87. Lall.append("\\newpage\n")
  88. print("<-- ok\n")
  89. #
  90. # sauver le resultat....
  91. with open("final.tex","w") as f:
  92. for x in Lall[:-1]:
  93. f.write(x)
  94. f.write("\\newpage\n")
  95. f.write("\\thispagestyle{empty}\n")
  96. f.write("\\fancyhead{}\n")
  97. f.write("\\input{refauteur.tex}\n")
  98. f.write("\\tableofcontents\n")
  99. f.write("\\end{document}\n")
  100. print("Nombre d'entrées par auteur :")
  101. with open("../genauteur.py") as f:
  102. exec(f.read())
  103. print("-fin-\n")