reStructuredText 内联代码后跟 's' 会导致“内联解释文本或短语引用起始字符串,而没有结束字符串。”

gol*_*enk 11 restructuredtext

在 reStructuredText 中,:code:`Observation`将创建一个内联代码块,该代码块在文档中显示为Observation. 就我而言,它指的是我的Observation班级。在生成的文档中,我希望能够执行诸如使用所有格形式(Observation's )并引用多个对象(Observations )之类的操作。但是,后者会导致警告/错误。也就是说,:code:`Observation`s结果是

sphinx.errors.SphinxWarning: Inline interpreted text or phrase reference start-string without end-string.
Run Code Online (Sandbox Code Playgroud)

:code:`Observation`'s值得注意的是,在其他情况下,当我在内联代码( 、等)之后使用非 alpha 符号时:code:`Observation`.,文档会按预期进行编译。

s为什么在内联代码解释文本之后不允许使用类似字符?我怎样才能实现类似的目标,特别是确保原始的 reStructuredText 文档仍然是干净的书面/可读的,而且还以正确的方式编译?

gol*_*enk 9

默认情况下,根据内联标记识别规则, reStructuredText 只允许在内联标记后使用某些标点符号和空格。具体来说,默认情况下,内联标记只能紧随其后

  • 空白
  • ASCII 字符之一 - . , : ; !?\ / ' " ) ] } >
  • 类似的非 ASCII 标点字符

character_level_inline_markup可以设置reStructuredText 解析器设置True来放宽这些要求。但应该注意的是,这有可能改变内联标记其他部分的预期行为(请参阅链接中的警告character_level_inline_markup)。

另一种选择是简单地在内联标记(例如,)之后的字符之前放置一个转义反斜杠:code:`Observation`\s,但明确不鼓励这种用法,建议仅在没有其他选择时使用,因为它会影响可读性原始文件。