![](/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.