memmod.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import hashlib
  2. from jinja2 import Environment, FileSystemLoader
  3. import os,yaml
  4. #
  5. def dolabel(k,t):
  6. # faire une étiquette "unique" à partir de deux chaines de caratères k et t.
  7. s=(k+t).encode("UTF-8")
  8. return hashlib.sha1(s).hexdigest()
  9. #
  10. # Données pour treatline.
  11. #
  12. # attention, l'ordre est important !
  13. tabler={"textsuperscript{e}":"ieme{}",
  14. "textsuperscript{ème}":"ieme{}",
  15. "textsuperscript{er}":"ier{}",
  16. "\\begin{quote}":"",
  17. "\\end{quote}":"",
  18. "subsection{":"subsection*{",
  19. "\\textquotesingle ":"'",
  20. "\\textquotesingle":"",
  21. "~":"",
  22. }
  23. def treatline(l):
  24. # Les substitutions éventuelles à faire sur une ligne
  25. for x,y in tabler.items():
  26. l=l.replace(x,y)
  27. return l
  28. def nocite_all(fich):
  29. # Créer un nocite{...} avec toutes les entrées du fichier fich
  30. # (un fichier .bib).
  31. with open(fich) as f:
  32. L=f.readlines()
  33. all=[]
  34. for x in L:
  35. if "@" in x:
  36. d=x.find("{")+1
  37. e=x.find(",")
  38. all.append(x[d:e])
  39. return f"\\nocite{{{','.join(all)}}}"
  40. def doTitre(d):
  41. #path= f"{os.getcwd()}/../Jinja"
  42. path= "/home/moi/Memoires/Jinja"
  43. env = Environment(loader=FileSystemLoader(path))
  44. # Load a template
  45. template = env.get_template('titre.jin')
  46. #
  47. if d["auteur"][0].lower()[0] in ("a","e","i","o","u","y"):
  48. d["de"]=" d'"
  49. else:
  50. d["de"]=" de "
  51. if d["statut"] !="":
  52. d["virgule"]=","
  53. else:
  54. d["virgule"]=""
  55. if "titre_court" not in d.keys():
  56. d["titre_court"]= d["titre"]
  57. return template.render(di=d)
  58. #