如何确保 Sphinx 中的智能引号正确?

How to ensure correct Smart Quotes in Sphinx?

我正在尝试使用 Sphinx 从重组文本中生成一些 HTML。如果我的源代码包含直接单引号之间的内容,Sphinx 几乎总是会给我对齐的引号,但有一些例外。例如,如果输入是 'X',我会按预期得到“X”,但如果输入是 '-',我会看到“-”。

有没有办法让 Sphinx 正确执行此操作,即“-”?

我尝试转义引号 and/or 连字符但没有成功。

使用 Sphinx 2.2.1、Debian 10。


index.rst

的内容
Smart Quotes
============

* 'X'
* '_'
* '-'
* 'K'.

conf.py

的内容
# -- Project information -----------------------------------------------------

project = 'Smart Quotes'
copyright = '2019, '
author = 'P'

# The full version, including alpha/beta/rc tags
release = '1'

构建命令:

sphinx-build . _build/html

它会是什么样子:

请注意,破折号上的第二个引号看起来与其他示例不同。

我建议提交 issue report in Sphinx. This looks like a bug to me, although it could be a bug in the underlying docutils library's utility smartquotes.

也就是说,有一个解决方法。使用下面的 reStructuredText 示例。

Smart Quotes On
===============

* '-'
* ‘-’
* "-"
* “-”

如果您必须启用智能引号,则可以使用文字智能引号来获得正确的印刷解释。

我更喜欢在 conf.py 中使用 smartquotes = False 禁用智能引号,并在需要时使用文字印刷字符。

最后,虽然您可以使用 em-dash、en-dash 或其他破折号而不是连字符来使未经训练的人看起来在视觉上是正确的,但这会将一个印刷错误替换为另一个.