Advertisement
Artyom_Kopan

generation_pdf.py

Oct 7th, 2022
844
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.82 KB | Science | 0 0
  1. import time
  2. from threading import Thread
  3. import os
  4.  
  5.  
  6. def copy_file(dir1, dir2, file):
  7.     os.system('cp %(dir1)s/%(file)s %(dir2)s/' % {'dir1': dir1, 'file': file, 'dir2': dir2})
  8.  
  9.  
  10. def remove_file(dir, file):
  11.     os.system('rm %(dir)s/%(file)s' % {'dir': dir, 'file': file})
  12.  
  13.  
  14. def move_file(dir1, dir2, file):
  15.     os.system('mv %(dir1)s/%(file)s %(dir2)s/' % {'dir1': dir1, 'file': file, 'dir2': dir2})
  16.  
  17.  
  18. def bibgen():
  19.     os.system('../bash/bibgen.sh generate')
  20.  
  21.  
  22. path_en_bib = '../bib/bibliographies/english'
  23. path_en_bst = '../bst/BibTEX_styles/english_styles'
  24. path_rus_bib = '../bib/bibliographies/russian'
  25. path_rus_bst = '../bst/BibTEX_styles/russian_styles'
  26. path_de_bib = '../bib/bibliographies/deutsch'
  27. path_de_bst = '../bst/BibTEX_styles/deutsch_styles'
  28. current_dir = '.'
  29. unprocessed_files = open('../problems/unprocessed_files.txt', 'w')
  30.  
  31. for bib in os.listdir(path_en_bib):
  32.     copy_file(path_en_bib, current_dir, bib)
  33.     bib_name = bib[:bib.rfind('.')]
  34.  
  35.     for bst in os.listdir(path_en_bst):
  36.         copy_file(path_en_bst, current_dir, bst)
  37.         bst_name = bst[:bst.rfind('.')]
  38.         template_file = open('generation_template.txt')
  39.         generation_template = template_file.read()
  40.  
  41.         generation_template += "\\bibliographystyle{%(bst_name)s}\n" % {'bst_name': bst_name}
  42.         generation_template += "\\bibliography{%(bib_name)s}\n" % {'bib_name': bib_name}
  43.         generation_template += '\\end{document}\n'
  44.  
  45.         generation_file = open('generate.tex', 'w')
  46.         generation_file.write(generation_template)
  47.  
  48.         template_file.close()
  49.         generation_file.close()
  50.  
  51.         print(bib_name, bst_name)
  52.  
  53.         action_thread = Thread(target=bibgen)
  54.         action_thread.start()
  55.         action_thread.join(timeout=3)
  56.  
  57.         # теперь надо переместить сгенерированный pdf куда надо и удалить файлы, созданные при компиляции tex (aux,
  58.         # bl, dvi и т.д.)
  59.  
  60.         will_remove_files = []
  61.         for file in os.listdir(current_dir):
  62.             if ('.py' in file) or ('.txt' in file) or ('.bib' in file) or ('.pdf' in file):
  63.                 continue
  64.             else:
  65.                 will_remove_files.append(file)
  66.         for file in will_remove_files:
  67.             remove_file(current_dir, file)
  68.  
  69.         if 'generate.pdf' not in os.listdir(current_dir):
  70.             unprocessed_files.write(bib_name + ' ' + bst_name + '\n')
  71.         else:
  72.             new_pdf_name = '%(bib_name)s_%(bst_name)s.pdf' % {'bib_name': bib_name, 'bst_name': bst_name}
  73.             os.rename('generate.pdf', new_pdf_name)
  74.             move_file(current_dir, '../pdf', new_pdf_name)
  75.  
  76.     remove_file(current_dir, bib)
  77.  
  78. unprocessed_files.close()
  79. print("PDF-файлы успешно сгенерированы!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement