convert.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/usr/bin/env python3
  2. import os
  3. import sys
  4. from subprocess import run
  5. from shutil import copyfile
  6. from os.path import splitext, join
  7. def make_tex(infilename):
  8. outfilename = splitext(infilename)[0]+'.tex'
  9. run(('pandoc', '--biblatex',
  10. '-F', 'pandoc-crossref',
  11. '-F', '../filters/note_filter.py',
  12. '-s', infilename, '-o', outfilename,
  13. '--metadata=bibliography:references.bib',
  14. '--template=chapter',
  15. ))
  16. with open(outfilename, 'r') as f:
  17. body = f.read()
  18. body = body.replace(r'\printbibliography', '')
  19. with open(outfilename, 'w') as f:
  20. f.write(body)
  21. def make_html(infilename):
  22. outfilename = splitext(infilename)[0]+'.html'
  23. run(('pandoc',
  24. '-F', 'pandoc-crossref',
  25. '-F', 'pandoc-citeproc',
  26. '-s', infilename, '-o', outfilename,
  27. '--mathjax',
  28. '--metadata=linkReferences:true',
  29. '--metadata=bibliography:references.bib',
  30. '--metadata=citation-style:american-institute-of-physics.csl',
  31. '--template=chapter',
  32. ))
  33. def main(src, dest_fmt):
  34. print(f'Converting {src} to {dest_fmt}...', end='', flush=True)
  35. copyfile(join('content', src), join('build', src))
  36. os.chdir('build')
  37. if dest_fmt == 'html':
  38. make_html(src)
  39. else:
  40. make_tex(src)
  41. print('Done')
  42. if __name__ == '__main__':
  43. if len(sys.argv) < 3 or sys.argv[2] not in ('html', 'tex'):
  44. print('usage: ./convert.py input_markdown [html|tex]')
  45. sys.exit(1)
  46. main(sys.argv[1], sys.argv[2])