【问题标题】:How to use inline code with a trailing whitespace?如何使用带有尾随空格的内联代码?
【发布时间】:2017-08-06 17:34:44
【问题描述】:

当我使用时

``# ``

在我的 Sphinx 文档中,我收到以下警告:

WARNING: Inline literal start-string without end-string.

尝试

:samp:`# `

导致

WARNING: Inline interpreted text or phrase reference start-string without end-string.

问题似乎是尾随空格,但我无法找到解决此问题的方法。用反斜杠 (\) 转义空格也无济于事(对于第一个示例,警告仍然存在,对于第二个示例,生成的文档中省略了空格)。

This answer 不起作用,因为内联代码部分将 |space| 解释为文字字符串。


有使用 Sphinx 1.6.2 的经验。

【问题讨论】:

  • 我建议你submit a bug report to Sphinx 并参考这个问题和其他问题。我也想不出解决办法。
  • 这里也是,运气不好!
  • @StevePiercy 谈到一个错误,预期的行为是什么?应该用反斜杠转义吗?
  • 我想说预期的行为要么应该起作用:(1)用反斜杠转义空格,要么(2)不转义的尾随空格。随后的讨论可能会提供核心开发人员的偏好和最终决定。
  • 在做更多研究后,我发现this part of the docs(见3.)定义“结束字符串必须紧跟在非空格之前。”。所以看起来这不可能按照定义。 This answer 引入了一个自定义角色来完成类似的任务,但是它需要修改 Sphinx 代码。我可能会去 github 那里寻求建议。

标签: whitespace python-sphinx restructuredtext


【解决方案1】:

使用"literal" role__,在预期的尾随空格后加一个转义空格::

:literal:`# \ `

__https://docutils.sourceforge.io/docs/ref/rst/roles.html#literal

【讨论】:

    【解决方案2】:

    一种解决方法是使用不间断空格字符 (U+00A0) 而不是常规空格 (U+0020) 作为尾随空格。

    有几种方法可以插入文字不间断空格字符。见https://en.wikipedia.org/wiki/Non-breaking_space#Keyboard_entry_methods

    【讨论】:

    • 感谢您的回复。但是我不确定如何在源中插入 NBSP。 The documentation 声明 unicode 指令只能在替换定义中使用,AFAIK 它们不能在内联代码部分中使用。此外,当我将我的文档编译为例如HTML 那么这可能最终成为一个不同的 HTML 实体(这很可能是为了视觉目的,但是当复制那段代码时,人们最终会得到一个与预期不同的字符;虽然不确定)。
    • 答案已更新。我使用 Emacs,Ctrl-X 8 Space 效果很好。
    • 谢谢我设法插入它并验证它有效。它在已编译的 HTML 源代码中插入一个 (无论如何这可能是在 HTML 中包含尾随空格的唯一方法?)。您能否评论复制和粘贴部分,即如果有人从呈现的 HTML 复制内联代码部分会发生什么?他们最终会复制常规空格还是不间断空格字符?这可能取决于浏览器引擎 (?),我尝试使用 Firefox 和 Chrome 并最终复制了一个常规空间。
    • 在 Firefox 中,这似乎是一个最近重新打开的旧错误:bugzilla.mozilla.org/show_bug.cgi?id=359303
    • 在源代码中是否看起来像常规空间取决于编辑环境。例如,在 Emacs 中,不间断空格的默认可视化是下划线(下划线)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 2012-06-27
    • 2011-05-25
    • 1970-01-01
    相关资源
    最近更新 更多