问题描述
Fedora Box:
过去几个月我一直在使用 Sphinx 和 PlantUML,并且已经非常熟悉它们。专门让它通过 HTML、PDF 和 DOCX 构建。但是我遇到了一个问题,希望大家能帮我解决。
目前,如果我使用 PlantUML 通过 .jar 文件渲染图像(并将这个新图像作为链接包含在 .rst 文档中),Sphinx 构建这个项目没有问题。 HTML、PDF、DOCX,无所谓。已创建文档,显示图像。
但如果我安装 PlantUML 插件 ([sphinxcontrib-plantuml-0.21.tar.gz][1]),并在 .rst 文档中放入相同的代码(减去 @start/end),Sphinx 只会构建它通过 HTML。那里看起来很完美。但是,如果我通过 DOCX 构建,则会收到 PlantUML 错误。文档将生成,DOCX 文件在那里,但没有图片。
有没有其他人有使用 Sphinx、PlantUML 插件并试图让它呈现 DOCX 的经验?
如果通过 DOCX(make docx
with https://pypi.org/project/docxbuilder/)构建的错误消息:
警告:忽略未知节点植物
解决方法
按照 (this site) 中的说明,我能够让 DOCX 工作,将以下内容复制到您的 Conf.py 文件中。
# Define setup function in conf.py
def setup(app):
# Define visit method for plantuml node generated by sphinxcontrib.plantuml
# https://pypi.org/project/sphinxcontrib-plantuml/
def docx_visit_plantuml(self,node):
def get_filepath(self,node):
from sphinxcontrib import plantuml
_,filepath = plantuml.render_plantuml(self,node,'png')
return filepath
alt = node.get('alt',(node['uml'],None))
# Docxbuilder provides useful methods. See Docxbuilder API reference.
self.visit_image_node(node,alt,get_filepath)
# Add the visit method to Docxbuilder
import docxbuilder
translator = docxbuilder.DocxBuilder.default_translator_class
setattr(translator,'visit_plantuml',docx_visit_plantuml)