Можно ли в Sphinx сохранить длинные строки?

В моем входном файле restructuredText для Sphinx есть длинная строка:

This is a long line text that I want to keep as a long single line. It should not be wrapped in the text output.

Используя конструктор текста Sphinx, я получаю такой вывод:

This is a long line text that I want to keep as a long single line. It
should not be wrapped in the text output.

Сфинкс завершает линию. Я хотел бы оставить одну длинную очередь как есть. Это возможно?


В этом ответ. Однако использование строковых блоков меняет отступ строки. Я не мог найти способ сохранить такой же отступ с помощью строковых блоков.

Для ввода:

Prev Line

| This is a long line text that I want to keep as a long single line. It should not be wrapped in the text output.

Next Line

Я получаю такой вывод:

Prev Line

   This is a long line text that I want to keep as a long single line. It should not be wrapped in the text output.

Next Line

Длинная строка остается длинной, но теперь она сделана с отступом.


Мне не удалось найти настройку переноса строк в конфигурации Sphinx страница.


Я использую sphinx-build версии 1.7.4 и использую следующую команду:

 sphinx-build -M text "." "_build"

Обновлять:

также делает отступ на длинной строке.

Вход:

Prev Line

.. code-block:: text

  This is a long line text that I want to keep as a long single line. It should not be wrapped in the text output.

Next Line

Выход:

Prev Line

   This is a long line text that I want to keep as a long single line. It should not be wrapped in the text output.

Next Line

person Hakan Baba    schedule 10.05.2018    source источник
comment
Возможно, .. code-block:: text перед длинной строкой с отступом? Я не уверен, как он будет отображаться при выводе текста, но он хорошо работает для вывода HTML.   -  person Steve Piercy    schedule 10.05.2018
comment
@StevePiercy Пробовал использовать директиву code-block. Он по-прежнему отступает от длинной строки в текстовом выводе. Обновил мой вопрос примером. К вашему сведению.   -  person Hakan Baba    schedule 16.05.2018
comment
Это не совсем так. Белое пространство, которое вы видите, является результатом CSS, а не фактическим отступом с пробелами. Вы можете использовать собственный файл CSS, чтобы переопределить вашу тему, которая удаляет левое и правое отступы из тега <pre>. См. Соответствующий ответ здесь: stackoverflow.com/a/45501239/2214933   -  person Steve Piercy    schedule 17.05.2018
comment
@StevePiercy Я использую конструктор текста Сфинкса. На выходе получается не html, а необработанный текстовый файл. В таком случае используются файлы css?   -  person Hakan Baba    schedule 17.05.2018
comment
Ах, моя ошибка, я пропустил, что вы использовали конструктор текста. Я не знаю, есть ли способ делать то, что ты хочешь. Я бы посоветовал спросить через каналы поддержки Sphinx.   -  person Steve Piercy    schedule 17.05.2018


Ответы (1)


У меня работает исправление обезьяны рендеринга строковых блоков для Text Writer:

добавьте это в conf.py

def my_visit_line_block(self, node):
    # type: (nodes.Node) -> None
    self.new_state(indent=0)
    self.lineblocklevel += 1

def setup(app):
    from sphinx.writers.text import TextTranslator
    TextTranslator.visit_line_block = my_visit_line_block

Очевидный недостаток в том, что он изменяет рендеринг всех строковых блоков ...

Я недостаточно знаком с sphinx.writers.text (и documenttils), чтобы сразу увидеть, есть ли лучший способ, чем вышеупомянутое исправление обезьяны.

Я мог бы повторно вставить отступ с помощью этой разметки:

| \    one
| \    two
| \    three

но принуждение к изменению разметки - это плохо.

person Community    schedule 19.05.2018