Подтвердить что ты не робот

Как я могу сделать неразрывное пространство в reStructuredText?

Как я могу сделать неразрывное пространство в reStructuredText?

Очевидным, но проблемным решением является:

`word A`

Но это может быть рассмотрено по-разному различными реализациями, такими как rst2latex или rst2pdf. Плюс это выделено курсивом.

4b9b3361

Ответ 1

Я не вижу здесь проблемы, запуская docutils v0.9. По крайней мере rst2latex и rst2html ведут себя корректно относительно неразрывного пробела. Латекс генерирует ~ и html генерирует & nbsp; когда вы вводите неразрывный символ (\ xa0,\0240).

Возможно, у вас есть проблема с редактором? Если вам удастся ввести символ, docutils выполнит задание.

Ответ 2

Вам нужна директива unicode, но она может использоваться только в подстановках. Поэтому вам нужно определить такую ​​подстановку:

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

а затем используйте его следующим образом:

xx |nbsp| xx

:trim:, чтобы избавиться от этих пространств вокруг подстановки.

Ответ 3

Вы также можете использовать |_| вместо |nbsp|, который менее визуально навязчив, если задана цель reStructuredText для чтения в виде обычного текста.

Ответ 5

В итоге я придумал обход для Сфинкса. Я перезаписываю 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

Это не очень красиво, и это даже не позволяет вам избежать символа ~, но он работает для моих целей.