簡體   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