首页 > 解决方案 > reStructuredText 内联代码后跟“s”会导致“内联解释文本或短语引用起始字符串没有结束字符串。”?

问题描述

在 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.

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

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

标签: restructuredtext

解决方案


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

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

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

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


推荐阅读