2012-08-06 13 views

Respuesta

4

No veo el problema aquí, ejecutando docutils v0.9. Al menos rst2latex y rst2html se comportan correctamente con respecto al espacio en blanco sin interrupción. Latex genera ~ y html genera & nbsp; cuando ingresa un carácter no disruptivo (\ xa0, \ 0240).

¿Quizás tiene un problema con el editor? Si logras ingresar el personaje, docutils hará el trabajo.

+2

un carácter no visible no es útil – jterrace

+0

Luego puede configurar su editor para hacerlo visible o usar un pase de preprocesamiento adicional en sus archivos de entrada ... –

19

Es necesario la directiva Unicode, pero sólo se puede utilizar en sustituciones. Así que hay que definir una sustitución de la siguiente manera:

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

y luego utilizar de esta manera:

xx |nbsp| xx 

:trim: está ahí para deshacerse de los espacios alrededor de la sustitución.

+0

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

+0

Parece que la sustitución 0xA0 aparece como el carácter 32 en HTML para mí :( – jterrace

+0

1) la cosa xx \ | nbsp | \ xx funciona en el renderizador (http://www.tele3.cz/jbar/rest/rest .html) ... No tengo idea de 32 :( – ynka

0

Terminé encontrando una solución para Sphinx. Sobreescribo los escritores HTML y LaTeX para convertir el carácter ~ en un espacio sin interrupciones. Aquí está el código HTML uno:

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 

y el látex uno:

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 

No es tan bonito, y que ni siquiera dejó escapar el carácter ~, pero funciona para mis propósitos.

7

También puede usar |_| en lugar de |nbsp| que es menos intrusivo visualmente, dado el objetivo de reStructuredText de ser legible como texto sin formato.

+0

Estoy haciendo +1, pero debería haber escrito un comentario a la respuesta ynka ... – Davide

+2

@Davide y terminan siendo ocultados por la etiqueta 'show n more comments' –

Cuestiones relacionadas