![](/img/trans.png)
[英]reStructuredText in Sphinx and Docstrings: single vs. double back-quotes or back-ticks difference
[英]How to escape single quotes in reStructuredText when converting to HTML using Sphinx
对于正在编写的文档项目,我需要包括一个带有日期格式字符串的表。 现在几乎所有东西都可以正常工作,但是最后我遇到了一个小问题,我想打印一个文字'和两个文字引号(分别在其他引号和其他引号之间)。 Sphinx将其更改为上/下引号,通常看起来很整洁,但是在这种情况下会使文本不可读。 我能想到的最好的是:
====== =========== ====== =====================
``'`` Escape for | " ``'`` hour ``'`` h" -> "hour 9"
for text
Delimiter
``''`` Single | "ss ``''`` SSS" -> "45 ``'`` 876"
quote
Literal
====== =========== ====== =====================
这会产生所有正确的引号,但会在前面和后面插入多余的空格,我希望看到这些空格已删除,因为该示例在语法上不是那样。 因此,也可以将我的问题改写为:使用反引号时,如何在文字引号之前和之后删除多余的空格。
我已经尝试了标准的转义方法。 反斜杠无效,因为'不是reStructuredText特殊字符。 如果我删除空格,则反引号``将不再起作用。
示例输出中有多余的空格:
我刚刚在文档中找到了答案:
http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#inline-markup
事实证明,您可以在空格字符前使用反斜杠“ \\”来对其进行转义。 因此,“ \\”将呈现为“”。 对于需要使用空格进行格式化但又不希望出现空白的情况,这很有用,就像上面的问题一样。
因此解决方案将是:
====== =========== ====== =====================
``'`` Escape for | "\ ``'``\ hour\ ``'``\ h" -> "hour 9"
for text
Delimiter
``''`` Single | "ss\ ``''``\ SSS" -> "45\ ``'``\ 876"
quote
Literal
====== =========== ====== =====================
难以阅读,但有效。
内联格式化函数调用的另一个示例:
**dateformat (**\ *<string,number,void>* **sourceDate,** *string* **sourceDateFormat,** *string* **returnDateFormat)**
事实证明,这是使格式正确的唯一方法(变量类型为斜体,其余为粗体,而左括号和变量类型之间没有空格)。
好吧,不确定您认为哪些部分的间距不正确,但是最左边的引号在场景图中没有多余的空格,这就是单引号以等宽字体呈现的方式。 至于右列,为什么不对整个单元格进行两次反引号括起来呢? 这也扼杀了“智能”引号,我认为这就是您想要的。
``ss '' SSS" -> "45 ' 876"``
# could instead be this, if these were the spurious spaces
``ss''SSS -> "45'876"``
否则,您不能摆脱双反引号跨度之间的间距-就解析器而言,它们构成一个“单词”,由作者来处理单词之间的空白。 在需要控制空格的地方,它不是“散文”,而是一个文字部分,整个空格重要的文本应加双引号。
现在,如果您想在反引号部分内使用“智能”引号,我认为您需要走字符实体引用路线,但是我不知道那是什么样子-应该是在文档中
正如其他人在评论中提到的那样,Sphinx将纯文本"
变成卷曲“
过程称为SmartQuotes。
我不确定您是否一开始就特别希望使用文字,或者它们只是避免使用SmartQuote的折衷方案,但是(至少)有两种方法可以停止SmartQuote,而无需使用文字:
1.禁用整个项目的SmartQuotes:
如果您不想要SmartQuotes,请添加:
smartquotes = False
到您的conf.py file
或添加docutils.conf
在同一级别的文件conf.py
与此内容:
[parsers]
smart_quotes: no
(从解决这个问题的GitHub ;看到狮身人面像的文档如何这两个设置互动- TL; DR:在关闭docutils.conf
即使他们是在开启后就会重写conf.py
)
2.转义您不想变得“聪明”的单引号:
您可以使用双反斜杠\\\\
来转义想要直引号,例如\\\\'
和\\\\"
。因此,在您的示例中,这是:
"\\'hour\\'h" -> "hour 9"
"ss\\'\\'SSS" -> "45\\'876"
将给出以下输出:
“'hour'h” -> “hour 9”
“ss''SSS” -> “45'876”
外部的双引号保留为“ smart”,但我认为这是您想要的行为。
(有关转义的详细信息,请参阅官方docutils文档 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.