2012-08-06 124 views

回答

4

我在這裏沒有看到問題,正在運行docutils v0.9。 至少rst2latex和rst2html對於非中斷空白行爲正確。 Latex生成〜和html生成& nbsp;當您輸入一個不分號字符(\ xa0,\ 0240)時。

也許你有一個編輯器的問題?如果您可以設法輸入角色,docutils將會完成這項工作。

+2

一個不可見的字符沒有用 – jterrace 2012-08-29 01:12:30

+0

然後,您可以配置您的編輯器使其可見或在輸入文件中使用額外的預處理傳遞... – 2012-08-29 01:31:33

19

您需要的統一指令,但它只能在替換使用。所以,你需要像這樣定義一個替代:

.. |nbsp| unicode:: 0xA0 
    :trim: 

,然後用它是這樣的:

xx |nbsp| xx 

:trim:有沒有擺脫圍繞替代那些空間。

+0

是不是''xx \ | nbsp | \ xx''工作? – jterrace 2012-08-27 16:10:56

+0

似乎0xA0替代出現爲HTML中的字符32:( – jterrace 2012-08-27 16:20:33

+0

1)xx \ nbsp | \ xx在渲染器中工作(http://www.tele3.cz/jbar/rest/rest .html)...不知道大約32 :( – ynka 2012-08-29 08:32:10

0

我最終爲獅身人面像提出了一個解決方法。我覆蓋了HTML和LaTeX編寫器,將~字符轉換爲非破壞空間。這裏的HTML之一:

import sphinx.writers.html 
BaseTranslator = sphinx.writers.html.SmartyPantsHTMLTranslator 

class CustomHTMLTranslator(BaseTranslator): 

    def bulk_text_processor(self, text): 
     if '~' in text: 
      text = text.replace('~', ' ') 
     return text 

sphinx.writers.html.SmartyPantsHTMLTranslator = CustomHTMLTranslator 

和LaTeX的一個:

import sphinx.writers.latex 
BaseTranslator = sphinx.writers.latex.LaTeXTranslator 

class DocTranslator(BaseTranslator): 

    def visit_Text(self, node): 
     if self.verbatim is not None: 
      self.verbatim += node.astext() 
     else: 
      text = self.encode(node.astext()) 
      if '\\textasciitilde{}' in text: 
       text = text.replace('\\textasciitilde{}', '~') 
      if not self.no_contractions: 
       text = educate_quotes_latex(text) 
      self.body.append(text) 

sphinx.writers.latex.LaTeXTranslator = DocTranslator 

這不是那麼漂亮,而且它不會甚至讓你逃脫~字符,但它適合我的目的。

7

也可以代替|nbsp|這是不太有礙觀瞻使用|_|,給出的是可讀的純文本新結構化的目標。

+0

我爲你+1,但你應該寫對ynka回答的評論... – Davide 2013-12-31 16:17:19

+2

@Davide最終被'show n more comments'標籤隱藏 – 2015-05-11 11:50:07

相關問題