ReST删除线

goz*_*lli 45 restructuredtext strikethrough docutils

是否可以在重组文本中查看文本?

例如,<strike>在转换为HTML时呈现为标记的内容,例如: ReSTructuredText

goz*_*lli 42

我按照VilleSäävuori的建议更好地检查了文档,我决定添加这样的删除线:

.. role:: strike
    :class: strike
Run Code Online (Sandbox Code Playgroud)

在文档中,这可以应用如下:

:strike:`This text is crossed out`
Run Code Online (Sandbox Code Playgroud)

然后在我的css文件中我有一个条目:

.strike {
  text-decoration: line-through;
}
Run Code Online (Sandbox Code Playgroud)


mar*_*rcz 15

至少有三种方法:

.. role:: strike

An example of :strike:`strike through text`.

.. container:: strike

   Here the full block of test is striked through.

An undecorated paragraph.

.. class:: strike

This paragraph too is is striked through.

.. admonition:: cancelled
   :class: strike

I strike through cancelled text.
Run Code Online (Sandbox Code Playgroud)

申请后rst2html你得到:

<p>An example of <span class="strike">strike through text</span>.</p>
<div class="strike container">
Here the full block of test is striked through.</div>
<p>An undecorated paragraph.</p>
<p class="strike">This paragraph too is is striked through.</p>
<div class="strike admonition">
<p class="first admonition-title">cancelled</p>
<p class="last">I strike through cancelled text.</p>
Run Code Online (Sandbox Code Playgroud)

你使用它们的风格

.strike {
  text-decoration: line-through;
}
Run Code Online (Sandbox Code Playgroud)

这里我以admonition指令为例,但任何允许该:class:选项的指令都可以.

在生成指令时,唯一允许将您的样式应用于段落的一部分spanrole指令.

将类添加strike到名为 strikeGozzilli的指令中是多余的,因为指令名是html输出的默认类.

我用rest2htmlSphinx检查了这些语法.但是,当一切正常按预计 rest2htmlclass 指令失败,狮身人面像.你必须用它替换它

.. rst-class:: strike

This paragraph too is is striked through.
Run Code Online (Sandbox Code Playgroud)

只是Sphinx reSt Primer的一个小 脚注中说明的.

  • @Tshepang,我查了一下,链接最后在一个脚注上说明:_当默认域包含一个类指令时,该指令将被遮蔽.因此,Sphinx将其重新出口为第一级._ (2认同)

小智 12

根据官方规格为删除线没有指令在休息的标记.

但是,如果环境允许:raw:role或者您可以编写自己的角色,那么您可以为其编写自定义插件.


Gre*_*uhn 5

我发现其他答案非常有帮助。我对 Sphinx 不是很熟悉,但我正在将它用于一个项目。我也想要删除线功能,并根据之前的答案让它发挥作用。需要明确的是,我添加了 gozzilli 提到的删除线角色,但我使用 rst_prolog 变量将其保存在我的 conf.py 中,如堆栈溢出线程中所述。这意味着该角色可用于您的所有其余文件。

然后,我通过在源目录中layout.html创建来扩展如上所述的基本 html 模板。_templates该文件的内容是:

{% extends "!layout.html" %}
{% set css_files = css_files + ["_static/myStyle.css"] %}
Run Code Online (Sandbox Code Playgroud)

这基本上包括所有构建的默认 html 文档的自定义 css 文件。

最后,在源目录中的 _static 目录中,我包含了包含myStyle.css以下内容的文件:

.strike {
  text-decoration: line-through;
}
Run Code Online (Sandbox Code Playgroud)

其他答案已经提供了。

我只是写这个答案,因为以我有限的 Sphinx 经验,要编辑哪些文件对我来说并不明显。


Clé*_*ent 5

这是一个del角色的 Python 定义,如果您想在 Pelican 博客或 Sphinx 文档项目的多个页面中使用该角色,它比接受的答案更有效:

from docutils import nodes
from docutils.parsers.rst import roles

def deleted_role(_role, rawtext, text, _lineno, _inliner, options={}, _content=[]):
    roles.set_classes(options)
    options.setdefault('classes', []).append("del")
    return [nodes.inline(rawtext, text, **options)], []

roles.register_canonical_role('del', deleted_role)
Run Code Online (Sandbox Code Playgroud)

更好的是扩展 HTML 编写器以生成适当的<del>标签,如下所示:

from docutils import nodes
from docutils.parsers.rst import roles
from docutils.writers._html_base import HTMLTranslator

class delnode(nodes.inline):
    pass

def visit_delnode(self, node):
    self.body.append(self.starttag(node, 'del', ''))
def depart_delnode(self, node):
    self.body.append('</del>')

HTMLTranslator.visit_delnode = visit_delnode
HTMLTranslator.depart_delnode = depart_delnode

def deleted_role(_role, rawtext, text, _lineno, _inliner, options={}, _content=[]):
    roles.set_classes(options)
    return [delnode(rawtext, text, **options)], []

roles.register_canonical_role('del', deleted_role)
Run Code Online (Sandbox Code Playgroud)

当然,您可以简单地调整它以生成一个<s>