2012-08-06 9 views

Antwort

4

Ich sehe das Problem hier nicht, mit Docutils v0.9. Mindestens rst2latex und rst2html verhalten sich in Bezug auf nicht-brechende Leerzeichen korrekt. Latex erzeugt ~ und HTML erzeugt & nbsp; Wenn Sie ein nicht brechendes Zeichen eingeben (\ xa0, \ 0240).

Vielleicht haben Sie ein Editor Problem? Wenn Sie es schaffen, den Charakter einzugeben, wird Docutils die Aufgabe übernehmen.

+2

ein nicht sichtbares Zeichen ist nicht sinnvoll – jterrace

+0

Dann können Sie entweder Ihren Editor konfigurieren, um es sichtbar zu machen oder verwenden Sie eine zusätzliche Vorverarbeitung in Ihre Eingabedateien ... –

19

Sie müssen die Unicode-Richtlinie, aber es kann nur in Substitutionen verwendet werden. Sie müssen also eine Substitution wie folgt definieren:

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

und es dann wie folgt verwenden:

xx |nbsp| xx 

:trim: ist diese Räume rund um die Substitution loszuwerden.

+0

funktioniert '' xx \ | nbsp | \ xx''? – jterrace

+0

Es scheint, dass die 0xA0 Substitution als Zeichen 32 in HTML für mich herauskommt :( – jterrace

+0

1) die xx \ | nbsp | \ xx-Sache funktioniert im Renderer (http://www.tele3.cz/jbar/rest/rest .html) ... Keine Ahnung von 32 :( – ynka

0

Ich endete mit einem Workaround für Sphinx. Ich überschreibe die HTML- und LaTeX-Writer, um das Zeichen ~ in ein nicht-brechendes Leerzeichen zu konvertieren. Hier ist der HTML ein:

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 

und der Latex ein:

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 

Es ist nicht so schön, und es ist nicht einmal lassen Sie entkommen den ~ Charakter, aber es funktioniert für meine Zwecke.

7

Sie können auch |_| anstelle von |nbsp| verwenden, was weniger visuell aufdringlich ist, da reStructuredText das Ziel hat, als reiner Text lesbar zu sein.

+0

Ich bin + 1'ing Sie aber Sie sollten geschrieben haben ein Kommentar zu der Antwort von ynka ... – Davide

+2

@Davide und am Ende wird durch das Label 'show n more comments' versteckt –

Verwandte Themen