latex_builder.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from sphinx.builders.latex import LaTeXBuilder
  2. import os
  3. # Overrides the default Sphinx latex build
  4. class IdfLatexBuilder(LaTeXBuilder):
  5. def __init__(self, app):
  6. # Sets up the latex_documents config value, done here instead of conf.py since it depends on the runtime value 'idf_target'
  7. self.init_latex_documents(app)
  8. super().__init__(app)
  9. def init_latex_documents(self, app):
  10. file_name = app.config.pdf_file + '.tex'
  11. if app.config.language == 'zh_CN':
  12. latex_documents = [('index', file_name, u'ESP-IDF 编程指南', u'乐鑫信息科技', 'manual')]
  13. else:
  14. # Default to english naming
  15. latex_documents = [('index', file_name, u'ESP-IDF Programming Guide', u'Espressif Systems', 'manual')]
  16. app.config.latex_documents = latex_documents
  17. def prepare_latex_macros(self, package_path, config):
  18. PACKAGE_NAME = "espidf.sty"
  19. latex_package = ''
  20. with open(package_path, 'r') as template:
  21. latex_package = template.read()
  22. idf_target_title = "ESP32"
  23. latex_package = latex_package.replace('<idf_target_title>', idf_target_title)
  24. # Release name for the PDF front page, remove '_' as this is used for subscript in Latex
  25. idf_release_name = "Release {}".format(config.version.replace('_', '-'))
  26. latex_package = latex_package.replace('<idf_release_name>', idf_release_name)
  27. with open(os.path.join(self.outdir, PACKAGE_NAME), 'w') as package_file:
  28. package_file.write(latex_package)
  29. def finish(self):
  30. super().finish()
  31. TEMPLATE_PATH = "../latex_templates/espidf.sty"
  32. self.prepare_latex_macros(os.path.join(self.confdir,TEMPLATE_PATH), self.config)
  33. def setup(app):
  34. app.add_builder(IdfLatexBuilder, override=True)
  35. return {'parallel_read_safe': True, 'parallel_write_safe': True, 'version': '0.1'}