tout.py 3.0 KB

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