对于我正在编写的文档项目,我需要包含一个带有日期格式字符串的表。现在几乎一切正常,但最后我有一个小问题,我想打印一个文字'引号和两个字面引号(单独和其他引号之间)。 Sphinx将这些更改为向上/向下引号,这通常看起来非常整洁,但在这种特殊情况下会使文本无法读取。我能想到的最好的是:
====== =========== ====== =====================
``'`` Escape for | " ``'`` hour ``'`` h" -> "hour 9"
for text
Delimiter
``''`` Single | "ss ``''`` SSS" -> "45 ``'`` 876"
quote
Literal
====== =========== ====== =====================
这会生成所有正确的引号,但它会在前后插入额外的空格,我希望这些空格被删除,因为这个示例在语法上不正确。所以我也可以将我的问题重新解释为:如何在使用反引号时删除字面引号之前和之后的额外空格。
我尝试过标准的转义方式。反斜杠没有效果,因为'不是reStructuredText特殊字符。如果我删除空格,反引号“将不再起作用。”
带有额外空格的示例输出:
答案 0 :(得分:4)
我刚刚在文档中找到了答案:
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)**
事实证明这是使格式化正确的唯一方法(变量类型为斜体,其余为粗体,而在左括号和变量类型之间没有空格)。
答案 1 :(得分:1)
嗯,不确定你认为哪些部分是错误间隔的,但是最左边的引号在sceenshot中没有额外的空格,这就是单引号字体中单引号的呈现方式。至于右栏,为什么不用双反包围整个细胞?这也会杀死“聪明”的报价,我认为这就是你想要的。
``ss '' SSS" -> "45 ' 876"``
# could instead be this, if these were the spurious spaces
``ss''SSS -> "45'876"``
否则你无法摆脱双重反向跨度的间距 - 就解析器而言,那些组成一个“单词”,并且由编写者来处理之间的空白 / em>单词。你需要控制空格的地方,它不是“散文”,它是一个字面的部分,整个空白重要的文本应该是双重后缀。
现在,如果你想在反引号部分中包含“智能”引号,我认为你需要使用字符实体引用路由,但我不知道它看起来像什么 - 应该在文档中。
答案 2 :(得分:1)
正如其他人在评论中提到的那样,Sphinx将纯"
变成卷曲的“
的过程称为SmartQuotes。
我不确定您是否一开始就特别想要这些文字,或者它们只是避免使用SmartQuote的折衷方案,但是(至少)有两种方法可以停止SmartQuote,而无需使用它们文字:
1。禁用整个项目的SmartQuotes:
如果您不想要SmartQuotes,请添加:
smartquotes = False
到您的conf.py file
或添加与docutils.conf
相同级别的conf.py
文件,其内容如下:
[parsers]
smart_quotes: no
(来自this GitHub issue的解决方案;有关这两个设置如何相互作用的信息,请参见Sphinx documentation-TL; DR:docutils.conf
中的关闭将被覆盖,即使它们在{{ 1}})
2。转义您不想变得“聪明”的单引号:
您可以使用双反斜杠conf.py
来避开您想直的引号,例如\\
和\\'
。因此,在您的示例中,这是
\\"
将给出以下输出:
"\\'hour\\'h" -> "hour 9"
"ss\\'\\'SSS" -> "45\\'876"
外部的双引号保留为“ smart”,但我认为这是您想要的行为。
(有关转义的详细信息,请参见official docutils documentation)