使用docutils.core.publish_string代替publish_cmdline时,settings_overrides参数的HTML特定选项无效!
下面是我的代码
from docutils.core import publish_string
from docutils.writers.html4css1 import Writer as HisWriter
args = {
'stylesheet' : '/home/wonder/lab/css/note.css',
'stylesheet-path' : None,
}
src = 'ccav'
print publish_string(src, writer=HisWriter(), settings_overrides=args)
我遇到了以下错误:
AssertionError: stylesheet and stylesheet_path are mutually exclusive.
所以,我把 args
改成了:
args = {
'stylesheet-path' : '/home/wonder/lab/css/note.css',
'stylesheet' : None,
}
现在没有错误了。但是,插入到HTML输出中的样式表并不是 /home/wonder/lab/css/note.css
的内容。它仍然是 /usr/local/lib/python2.7/dist-packages/docutils/writers/html4css1/html4css1.css
。
也就是说,和在命令行中使用 publish_cmdline 指定选项不同,使用 publish_string 时,带有HTML特定选项的 settings_overrides
参数没有效果。
1 个回答
3
from docutils.core import publish_string
from docutils.writers.html4css1 import Writer as HisWriter
src = 'ccav'
args = {
'stylesheet_path' : '/path/to/your/stylesheet'
}
print publish_string(src, writer=HisWriter(), settings=None, settings_overrides=args)
你需要把 settings = None
这行代码加上,并且使用 stylesheet_path
而不是 stylesheet
,这样才能让它忽略内置的样式表。
补充说明:我发现这个答案是在 distutils 附带的一个示例脚本的源代码里,所以虽然 settings = None
看起来不太好,但实际上并没有问题。