【问题标题】:removing docinfo in docutils output with HTML5 writer使用 HTML5 编写器删除 docutils 输出中的 docinfo
【发布时间】:2018-05-19 08:21:46
【问题描述】:

使用docutils python 库,当使用html5 编写器时,我找不到一种方法 将 docinfo(源开头的字段)包含在输出中。

这是一个最小的例子:

import docutils.io, docutils.core

SOURCE = '''\
:key: value

Title
========

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
no sea takimata sanctus est Lorem ipsum dolor sit amet.
'''

docutils_params = {
    'input_encoding': 'utf-8',
}

pub = docutils.core.Publisher(
    source_class=docutils.io.StringInput,
    destination_class=docutils.io.StringOutput)
pub.set_components('standalone', 'restructuredtext', 'html5')
pub.process_programmatic_settings(None, docutils_params, None)
pub.set_source(SOURCE)
pub.publish()

# same thing with parts['body']
body = pub.writer.parts['fragment']

print(body)

这是输出的第一行:

<dl class="docinfo simple">
<dt class="key">key</dt>
<dd class="key"><p>value</p>
</dd>
</dl>
<div class="section" id="title">
<h1>Title</h1>
<p>Lorem ipsum dolor sit amet,

我不想要的是整个 &lt;dl class="docinfo simple"&gt; 元素。

HTML5编写器的使用在pub.set_components(...这一行设置 相反,如果我使用html,我没有这个问题,但为了我的使用,我需要 HTML5 编写器,而不是标准的 HTML 编写器。

奇怪的是,文档似乎说使用 pub.writer.parts['fragment'](或等效的 pub.writer.parts['body'])应该从输出中删除 docinfo:

parts['fragment'] 包含文档正文(不是 HTML )。换句话说,它包含整个文档,减去文档标题、副标题、docinfo、页眉和页脚。

来源:http://docutils.sourceforge.net/docs/api/publisher.html

我做错了什么还是docutils 的 HTML5 编写器中的错误?

【问题讨论】:

    标签: python html restructuredtext docutils


    【解决方案1】:

    Docutils 开发人员将此识别为错误并对其进行了修补。

    查看docutils-users 邮件列表herehere

    @andref's answer 很棒,不过,感谢您指向这个包。

    【讨论】:

      【解决方案2】:

      我建议你使用rst2html5 而不是Docutils:

      from rst2html5_ import HTML5Writer
      from docutils.core import publish_parts
      
      SOURCE = '''\
      :key: value
      
      Title
      ========
      
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
      tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
      vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
      no sea takimata sanctus est Lorem ipsum dolor sit amet.
      '''
      
      parts = publish_parts(writer=HTML5Writer(), source=SOURCE)
      print(parts['body'])
      

      这是结果:

      <section id="title">
          <h1>Title</h1>
          <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
      </section>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多