繁体   English   中英

使用Sphinx转换为HTML时如何在reStructuredText中转义单引号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM