Sphinx中文本换行问题:.rst文件竖线导致HTML渲染异常
看起来你是想让reStructuredText里那些竖线|作为内容换行的标记,但不希望它们出现在最终的HTML渲染结果里对吧?问题出在rst默认会把|当成普通文本字符输出,所以才会出现你看到的带竖线的渲染效果。
这里有几个简单的解决办法,帮你实现期望的渲染结果:
方法1:用缩进实现列表项续行(最直观)
rst里列表项的内容可以通过缩进延续到下一行,只要续行的缩进比列表的*标记更深就行。把原来的竖线替换成换行+缩进:
Some text. * Heading The first topic. Another topic which is very verbose and spans multiple lines ad infinitum. Topic continued......................................
这样渲染后,所有缩进的内容都会属于同一个列表项,变成连续的文本,完全看不到竖线。
方法2:用行延续符(适合源码里保持紧凑)
如果想在源码里把内容写在同一行但拆分显示,可以用反斜杠\代替竖线,作为行延续标记:
Some text. * Heading \ The first topic. \ Another topic which is very verbose and spans multiple lines ad infinitum. Topic continued......................................
反斜杠会告诉rst这一行还没结束,下一行的内容属于同一个列表项,最终渲染时不会显示反斜杠。
方法3:定义替换规则(适合多处重复使用)
如果你的文档里经常需要这种“隐形换行”,可以提前定义一个替换块,把|替换成空格或换行:
.. |break| replace:: Some text. * Heading |break| The first topic. |break| Another topic which is very verbose and spans multiple lines ad infinitum. Topic continued......................................
这里的|break|会被替换成一个换行(注意replace后面的空行),渲染后内容会自然分段或连续显示,不会保留竖线。
核心原因就是:rst里的|只有在作为替换标记(比如上面的|break|)时才有特殊作用,普通的|会被直接当作文本输出,所以才会出现在你的HTML结果里。
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

