3

下面是我的代码

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 时在命令行中指定选项不同,settings_overrides带有 HTML-Specific Options 的参数在使用 publish_string 时不起作用。

4

1 回答 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看起来很糟糕,它似乎也不是。

于 2011-07-23T08:23:56.980 回答